udevng/gobi: use subsystem as first identification

Using kernel 4.10 with systemd 232 on archlinux the detection of
a gobi 2000 doesn't detect the qmi/cdc-wdm interface.

The device is detected as follows:

[devnode interface number label sysattr subsystem]
/dev/cdc-wdm1 255/255/255 00 (null) (null) usbmisc
wwan1 255/255/255 00 (null) (null) net
/dev/ttyUSB5 255/255/255 01 (null) (null) tty
/dev/ttyUSB6 255/255/255 02 (null) (null) tty
/dev/ttyUSB7 255/255/255 03 (null) (null) tty
This commit is contained in:
Alexander Couzens 2017-05-01 22:52:51 +02:00 committed by Denis Kenzior
parent cab919d699
commit 3b5aedc8ab
1 changed files with 13 additions and 11 deletions

View File

@ -208,17 +208,19 @@ static gboolean setup_gobi(struct modem_info *modem)
info->number, info->label,
info->sysattr, info->subsystem);
if (g_strcmp0(info->interface, "255/255/255") == 0) {
if (info->number == NULL)
qmi = info->devnode;
else if (g_strcmp0(info->number, "00") == 0)
net = info->devnode;
else if (g_strcmp0(info->number, "01") == 0)
diag = info->devnode;
else if (g_strcmp0(info->number, "02") == 0)
mdm = info->devnode;
else if (g_strcmp0(info->number, "03") == 0)
gps = info->devnode;
if (g_strcmp0(info->subsystem, "usbmisc") == 0) /* cdc-wdm */
qmi = info->devnode;
else if (g_strcmp0(info->subsystem, "net") == 0) /* wwan */
net = info->devnode;
else if (g_strcmp0(info->subsystem, "tty") == 0) {
if (g_strcmp0(info->interface, "255/255/255") == 0) {
if (g_strcmp0(info->number, "01") == 0)
diag = info->devnode;
else if (g_strcmp0(info->number, "02") == 0)
mdm = info->devnode;
else if (g_strcmp0(info->number, "03") == 0)
gps = info->devnode;
}
}
}