summaryrefslogtreecommitdiffstats
path: root/plugins/udevng.c
diff options
context:
space:
mode:
authorMarcel Holtmann <marcel@holtmann.org>2011-08-09 19:06:57 +0200
committerMarcel Holtmann <marcel@holtmann.org>2011-08-09 16:50:29 -0700
commit1881e7c61c0f7579bca84ded4229a52908177a8f (patch)
tree1645f7695c8b285701b09ae0f0b40178be62ac25 /plugins/udevng.c
parent9152d56291190a4ece556877eac5b4e4eb2273d5 (diff)
downloadofono-1881e7c61c0f7579bca84ded4229a52908177a8f.tar.bz2
udev: Detect Diagnostic (QCDM) port for Huawei devices
Diffstat (limited to 'plugins/udevng.c')
-rw-r--r--plugins/udevng.c15
1 files changed, 11 insertions, 4 deletions
diff --git a/plugins/udevng.c b/plugins/udevng.c
index bc8db2d9..2f655e7b 100644
--- a/plugins/udevng.c
+++ b/plugins/udevng.c
@@ -155,7 +155,7 @@ static gboolean setup_sierra(struct modem_info *modem)
static gboolean setup_huawei(struct modem_info *modem)
{
- const char *mdm = NULL, *pcui = NULL;
+ const char *mdm = NULL, *pcui = NULL, *diag = NULL;
GSList *list;
DBG("%s", modem->syspath);
@@ -170,13 +170,19 @@ static gboolean setup_huawei(struct modem_info *modem)
g_strcmp0(info->interface, "255/1/1") == 0 ||
g_strcmp0(info->interface, "255/2/1") == 0) {
mdm = info->devnode;
- if (pcui != NULL)
+ if (pcui != NULL && diag != NULL)
break;
} else if (g_strcmp0(info->label, "pcui") == 0 ||
g_strcmp0(info->interface, "255/1/2") == 0 ||
g_strcmp0(info->interface, "255/2/2") == 0) {
pcui = info->devnode;
- if (mdm != NULL)
+ if (mdm != NULL && diag != NULL)
+ break;
+ } else if (g_strcmp0(info->label, "diag") == 0 ||
+ g_strcmp0(info->interface, "255/1/3") == 0 ||
+ g_strcmp0(info->interface, "255/2/2") == 0) {
+ diag = info->devnode;
+ if (mdm != NULL && pcui != NULL)
break;
} else if (g_strcmp0(info->interface, "255/255/255") == 0) {
if (g_strcmp0(info->number, "00") == 0)
@@ -193,10 +199,11 @@ static gboolean setup_huawei(struct modem_info *modem)
if (mdm == NULL || pcui == NULL)
return FALSE;
- DBG("modem=%s pcui=%s", mdm, pcui);
+ DBG("modem=%s pcui=%s diag=%s", mdm, pcui, diag);
ofono_modem_set_string(modem->modem, "Modem", mdm);
ofono_modem_set_string(modem->modem, "Pcui", pcui);
+ ofono_modem_set_string(modem->modem, "Diag", diag);
return TRUE;
}