summaryrefslogtreecommitdiff
path: root/plugins/udevng.c
diff options
context:
space:
mode:
authorAlexander Couzens <lynxis@fe80.eu>2017-05-01 22:52:51 +0200
committerDenis Kenzior <denkenz@gmail.com>2017-05-04 12:37:51 -0500
commit3b5aedc8ab2f06d8e5066fe38730b5e8105a6def (patch)
tree0c05dc88750b57b98f39de5dafe44411ad1a7230 /plugins/udevng.c
parentcab919d699d0326416eb64477d642640d29efe67 (diff)
downloadofono-3b5aedc8ab2f06d8e5066fe38730b5e8105a6def.tar.gz
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
Diffstat (limited to 'plugins/udevng.c')
-rw-r--r--plugins/udevng.c24
1 files changed, 13 insertions, 11 deletions
diff --git a/plugins/udevng.c b/plugins/udevng.c
index 47bc8910..e8b800c1 100644
--- a/plugins/udevng.c
+++ b/plugins/udevng.c
@@ -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;
+ }
}
}