9c76176c24
This allows to connect the modem to the Internet with oFono. I have verified that this does not break anything if the "rmnet0" network interface is missing. Plus, all mainline devices currently covered by the package should also be able to use the new "BAM DMUX" network driver that is used as network interface to the modem. (Note: This works differently on newer SoCs, but they also need something different in oFono...)
101 lines
3.8 KiB
Diff
101 lines
3.8 KiB
Diff
From 71737365a6af9f736a816efa7ec15783ab82de6b Mon Sep 17 00:00:00 2001
|
|
From: Joey Hewitt <joey@joeyhewitt.com>
|
|
Date: Fri, 19 Jul 2019 22:02:07 +0200
|
|
Subject: [PATCH] support smdpkt
|
|
|
|
---
|
|
plugins/udevng.c | 65 +++++++++++++++++++++++++++---------------------
|
|
1 file changed, 36 insertions(+), 29 deletions(-)
|
|
|
|
diff --git a/plugins/udevng.c b/plugins/udevng.c
|
|
index 4a38621b..ba7d72f0 100644
|
|
--- a/plugins/udevng.c
|
|
+++ b/plugins/udevng.c
|
|
@@ -203,41 +203,46 @@ static gboolean setup_gobi(struct modem_info *modem)
|
|
|
|
DBG("%s", modem->syspath);
|
|
|
|
- for (list = modem->devices; list; list = list->next) {
|
|
- struct device_info *info = list->data;
|
|
+ if (modem->type != MODEM_TYPE_SERIAL) {
|
|
+ for (list = modem->devices; list; list = list->next) {
|
|
+ struct device_info *info = list->data;
|
|
|
|
- DBG("%s %s %s %s %s %s", info->devnode, info->interface,
|
|
- info->number, info->label,
|
|
- info->sysattr, info->subsystem);
|
|
+ DBG("%s %s %s %s %s %s", info->devnode, info->interface,
|
|
+ info->number, info->label,
|
|
+ info->sysattr, info->subsystem);
|
|
|
|
- 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, "00") == 0)
|
|
- diag = info->devnode; /* ec20 */
|
|
- else if (g_strcmp0(info->number, "01") == 0)
|
|
- diag = info->devnode; /* gobi */
|
|
- else if (g_strcmp0(info->number, "02") == 0)
|
|
- mdm = info->devnode; /* gobi */
|
|
- else if (g_strcmp0(info->number, "03") == 0)
|
|
- gps = info->devnode; /* gobi */
|
|
- } else if (g_strcmp0(info->interface, "255/0/0") == 0) {
|
|
- if (g_strcmp0(info->number, "01") == 0)
|
|
- gps = info->devnode; /* ec20 */
|
|
- if (g_strcmp0(info->number, "02") == 0)
|
|
- mdm = info->devnode; /* ec20 */
|
|
- /* ignore the 3rd device second AT/mdm iface */
|
|
+ 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, "00") == 0)
|
|
+ diag = info->devnode; /* ec20 */
|
|
+ else if (g_strcmp0(info->number, "01") == 0)
|
|
+ diag = info->devnode; /* gobi */
|
|
+ else if (g_strcmp0(info->number, "02") == 0)
|
|
+ mdm = info->devnode; /* gobi */
|
|
+ else if (g_strcmp0(info->number, "03") == 0)
|
|
+ gps = info->devnode; /* gobi */
|
|
+ } else if (g_strcmp0(info->interface, "255/0/0") == 0) {
|
|
+ if (g_strcmp0(info->number, "01") == 0)
|
|
+ gps = info->devnode; /* ec20 */
|
|
+ if (g_strcmp0(info->number, "02") == 0)
|
|
+ mdm = info->devnode; /* ec20 */
|
|
+ /* ignore the 3rd device second AT/mdm iface */
|
|
+ }
|
|
}
|
|
}
|
|
- }
|
|
|
|
- DBG("qmi=%s net=%s mdm=%s gps=%s diag=%s", qmi, net, mdm, gps, diag);
|
|
+ DBG("qmi=%s net=%s mdm=%s gps=%s diag=%s", qmi, net, mdm, gps, diag);
|
|
|
|
- if (qmi == NULL || mdm == NULL || net == NULL)
|
|
- return FALSE;
|
|
+ if (qmi == NULL || mdm == NULL || net == NULL)
|
|
+ return FALSE;
|
|
+ } else {
|
|
+ qmi = modem->serial->devnode;
|
|
+ net = udev_device_get_property_value(modem->serial->dev, "OFONO_NETWORK_INTERFACE");
|
|
+ }
|
|
|
|
|
|
ofono_modem_set_string(modem->modem, "Device", qmi);
|
|
@@ -2024,6 +2029,8 @@ static void enumerate_devices(struct udev *context)
|
|
return;
|
|
|
|
udev_enumerate_add_match_subsystem(enumerate, "tty");
|
|
+ udev_enumerate_add_match_subsystem(enumerate, "smdpkt");
|
|
+ udev_enumerate_add_match_subsystem(enumerate, "rpmsg");
|
|
udev_enumerate_add_match_subsystem(enumerate, "usb");
|
|
udev_enumerate_add_match_subsystem(enumerate, "usbmisc");
|
|
udev_enumerate_add_match_subsystem(enumerate, "net");
|
|
--
|
|
2.27.0
|
|
|