diff --git a/modem/ofono/APKBUILD b/modem/ofono/APKBUILD index 6a0e9dd1094651bfe320d696cb4f6927e4f459ef..7d0508666b25f7e30b8a8953d515e5b959c5242e 100644 --- a/modem/ofono/APKBUILD +++ b/modem/ofono/APKBUILD @@ -16,6 +16,7 @@ source="https://www.kernel.org/pub/linux/network/$pkgname/$pkgname-$pkgver.tar.x fix-explicit-bzero.patch fix-TEMP_FAILURE_RETRY.patch skip-broken-test.patch + support-smdpkt.patch 0001-common-create-GList-helper-ofono_call_compare.patch 0002-common-atmodem-move-at_util_call_compare_by_status-t.patch 0003-common-atmodem-move-at_util_call_compare_by_id-to-dr.patch @@ -50,10 +51,11 @@ sha512sums="14c3cd3a7ee134dd85f286e3ce47914a10c48a9a2bbbebd0d2715334f233a9b7e4e0 7367464a8983969c9a78c1e4f8759a17eb47f6c61c94b088d749c83bb7ef5d19e037cadedd7ef5d34a0fdfe837fa8059e963f4fb2b14148e4a80f00e7cb29286 fix-explicit-bzero.patch 687a2fd592add40122b789073ab9970d6e966752fdecc4077afe1c1bba705fe541dd0e457094f1d9cde747c571b7810b5b1a30835a3f1869bcd810751d5bf76f fix-TEMP_FAILURE_RETRY.patch 777ab2e13eebd1ccbe12a304310a83b262a5d934207c6a8d410e75aff380838eed1a52f3c2fe0d80c1e7db7faa9b55bf17e78a1e1acd8cfb95a3c6aef49c5b67 skip-broken-test.patch +32e02e64cde806823b27c18380b88656a0fa95aefc35052256e368f13979d093fae5d7bbd6d1bb9ba8294912caea6e017715550872cabd85203a831658be4210 support-smdpkt.patch 9af0061034f16ef4f9968ab05e2bdaa1e135f8b513eb5517654d8f924bd890a9e54f49e6ec4e7824a4001050bf6803f9fbf2ca815b36b1e1ea2889063a361296 0001-common-create-GList-helper-ofono_call_compare.patch aa3410eef1d6fe65dc9f6f68360031d02d3b32b7c363e13960813d2f0f16aee4e604e27f3d46bca569f6e17c82a74037812c25612a07ce1257b2d00e144f6d2f 0002-common-atmodem-move-at_util_call_compare_by_status-t.patch f906281888f06ec154ab9ca266d3641d32c6e295568aadbed7fb0cea42584c6aea4ea71d37530893bf184773772e6cd8b32559a6f4bc960dc5fadff23d747a56 0003-common-atmodem-move-at_util_call_compare_by_id-to-dr.patch 6d7b350fed2b4be3b597fad19168448547e3730abfe8d398fc909cd43c1dfce2eabd6efec0bcb0aadb9cca7b8500e6a86b3d1455d9c6ade1a1deacd769e01c7a 0004-add-call-list-helper-to-manage-voice-call-lists.patch f5ab8f47e21545de71c866e3a7c589ba0f7d5c29f688df3fec06f01093bea72388f5e640a688b25288e58a107e85e5dd5c2c2616f57003ab148f28c2111fc88f 0005-qmimodem-implement-voice-calls.patch -8bf14296d15458c930c99b97408fd6fb0d6d3cb9bffd5d85e7500514dc99fffe39a300da24ebc776811fe75e217a5537e358f72c3e8ac5070ec17f36bab086a9 ofono.initd +a625f71a2b6fdcd7ac43cca64d2a532f5e5a0192b022fcf9157fad51801dc3b71c5d317a62f3f233136a6ed2bbf92e6f1c2fad2c6aa762b9719ceca02de025d1 ofono.initd 8f2893dfc291fc210ef217c4bc74d79436a0997001dd2773809625d52dd19d092cc75d3f9aa5ed2f3d4a6248d4a4e17013a7655323f7dad951f744c55b572417 udev.rules" diff --git a/modem/ofono/ofono.initd b/modem/ofono/ofono.initd index ad555f63f5dcf15eb30d306d89c00f03653b40b0..051f627842b9aae9a95ea96508a7d559c0c153b7 100644 --- a/modem/ofono/ofono.initd +++ b/modem/ofono/ofono.initd @@ -9,7 +9,8 @@ depend() { start() { ebegin "Starting oFono" - start-stop-daemon --start --quiet --exec /usr/sbin/ofonod + # libsmdpkt_wrapper.so may not exist, if this device doesn't need it + start-stop-daemon --start --quiet --exec /usr/bin/env LD_PRELOAD=/usr/lib/preload/libsmdpkt_wrapper.so /usr/sbin/ofonod eend $? } diff --git a/modem/ofono/support-smdpkt.patch b/modem/ofono/support-smdpkt.patch new file mode 100644 index 0000000000000000000000000000000000000000..f98733330bf9763dfe93ad0f25bba2c751c43615 --- /dev/null +++ b/modem/ofono/support-smdpkt.patch @@ -0,0 +1,100 @@ +From c11cbed28cbd7b927153069245e791dcb78a1e71 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 | 64 ++++++++++++++++++++++++++---------------------- + 1 file changed, 35 insertions(+), 29 deletions(-) + +diff --git a/plugins/udevng.c b/plugins/udevng.c +index f689b756..c07cae79 100644 +--- a/plugins/udevng.c ++++ b/plugins/udevng.c +@@ -202,41 +202,45 @@ 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; ++ } + + + ofono_modem_set_string(modem->modem, "Device", qmi); +@@ -1867,6 +1871,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.22.0 +