pmaports/temp/ofono/support-smdpkt.patch
Minecrell 9c76176c24
temp/ofono: assume mainline gobi network interface is "rmnet0" (MR 1607)
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...)
2020-10-23 12:18:22 +03:00

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