diff options
author | Martin Chaplet <m.chaplet@kerlink.fr> | 2016-05-03 10:44:55 +0200 |
---|---|---|
committer | Denis Kenzior <denkenz@gmail.com> | 2016-05-03 11:06:04 -0500 |
commit | 4005e879239296483c518819bb6c94350b9860ef (patch) | |
tree | 6b339e12cfad4ad3aaab4b536e7b1d66c737f5a0 | |
parent | d415265a69bce6ec42c65931d6830a6024474d83 (diff) | |
download | ofono-4005e879239296483c518819bb6c94350b9860ef.tar.gz |
udevng: Add support for Sierra MC73xx QMI modems
Udevng layer is changed in order to support Sierra QMI modems like
MC73cxx. Identically to Huawei modems, these modems are parsed by
setup_sierra. If QMI interface is detected, the Gobi modem driver is
selected.
Unfortunately, MC73xx chips seem to have a broken QMI UIM interface.
The qmimodem-legacy is so forced in setup function.
-rw-r--r-- | plugins/udevng.c | 25 |
1 files changed, 21 insertions, 4 deletions
diff --git a/plugins/udevng.c b/plugins/udevng.c index e5dc7253..8a5f6fd1 100644 --- a/plugins/udevng.c +++ b/plugins/udevng.c @@ -220,7 +220,7 @@ static gboolean setup_gobi(struct modem_info *modem) static gboolean setup_sierra(struct modem_info *modem) { - const char *mdm = NULL, *app = NULL, *net = NULL, *diag = NULL; + const char *mdm = NULL, *app = NULL, *net = NULL, *diag = NULL, *qmi = NULL; GSList *list; DBG("%s", modem->syspath); @@ -228,8 +228,8 @@ static gboolean setup_sierra(struct modem_info *modem) for (list = modem->devices; list; list = list->next) { struct device_info *info = list->data; - DBG("%s %s %s %s", info->devnode, info->interface, - info->number, info->label); + DBG("%s %s %s %s %s", info->devnode, info->interface, + info->number, info->label, info->subsystem); if (g_strcmp0(info->interface, "255/255/255") == 0) { if (g_strcmp0(info->number, "01") == 0) @@ -240,14 +240,29 @@ static gboolean setup_sierra(struct modem_info *modem) app = info->devnode; else if (g_strcmp0(info->number, "07") == 0) net = info->devnode; + else if (g_strcmp0(info->number, "0a") == 0) { + if (g_strcmp0(info->subsystem, "net") == 0) + net = info->devnode; + else if (g_strcmp0(info->subsystem, "usbmisc") == 0) + qmi = info->devnode; + } } } + if (qmi != NULL && net != NULL) { + ofono_modem_set_driver(modem->modem, "gobi"); + /* Fixup SIM interface for Sierra QMI devices */ + ofono_modem_set_boolean(modem->modem, "ForceSimLegacy", TRUE); + goto done; + } + if (mdm == NULL || net == NULL) return FALSE; - DBG("modem=%s app=%s net=%s diag=%s", mdm, app, net, diag); +done: + DBG("modem=%s app=%s net=%s diag=%s qmi=%s", mdm, app, net, diag, qmi); + ofono_modem_set_string(modem->modem, "Device", qmi); ofono_modem_set_string(modem->modem, "Modem", mdm); ofono_modem_set_string(modem->modem, "App", app); ofono_modem_set_string(modem->modem, "Diag", diag); @@ -1129,6 +1144,8 @@ static struct { { "hso", "hso" }, { "gobi", "qmi_wwan" }, { "gobi", "qcserial" }, + { "sierra", "qmi_wwan", "1199" }, + { "sierra", "qcserial", "1199" }, { "sierra", "sierra" }, { "sierra", "sierra_net" }, { "option", "option", "0af0" }, |