From 36f13ad1ab8fa407261a7ef3d7474907a8e1b836 Mon Sep 17 00:00:00 2001 From: Minecrell Date: Thu, 4 Jun 2020 22:30:44 +0200 Subject: [PATCH] modem/msm-modem: expose serial AT port from DATA4 SMD channel (MR 1607) So far we have only created /dev/modem based on the DATA5_CNTL channel available from the modem. The DATAX_CNTL channels allow sending QMI messages to the modem. This is sufficient for oFono to work. Unfortunately, ModemManager currently does not support starting calls through the QMI interface. Instead, it uses serial AT commands that can be alternatively used on all USB-based Qualcomm modems. It turns out that we can also send serial AT commands through the RPMSG interface: the DATAX channels (without _CNTL) all respond to serial AT commands. We set it up at /dev/modem-at, configure ModemManager accordingly and then we are able to start calls. Yay! --- modem/msm-modem/APKBUILD | 8 ++++---- modem/msm-modem/udev-downstream.rules | 3 ++- modem/msm-modem/udev-rpmsg.rules | 2 ++ 3 files changed, 8 insertions(+), 5 deletions(-) diff --git a/modem/msm-modem/APKBUILD b/modem/msm-modem/APKBUILD index cd296b222..b823d56fd 100644 --- a/modem/msm-modem/APKBUILD +++ b/modem/msm-modem/APKBUILD @@ -1,6 +1,6 @@ pkgname=msm-modem -pkgver=1 -pkgrel=2 +pkgver=2 +pkgrel=0 pkgdesc="Common support for Qualcomm MSM modems" url="https://postmarketos.org/" arch="armhf armv7 aarch64" @@ -29,5 +29,5 @@ downstream() { install -Dm644 "$srcdir/udev-downstream.rules" "$subpkgdir/usr/lib/udev/rules.d/55-$pkgname.rules" } -sha512sums="f842f617c441b8e6c1f8a7802792f5dfc22ab92216641f54e1a1fb8faec00a78b473baf02ef85b6ec295a88aa89a25325479380e1e65db62be879064782790ab udev-rpmsg.rules -64a40fb88d40ae0ff64d3545f7a54c6f10f2ab366ef75b8b158c2d5a3733223839c87aed8d5c6685d5056a5840d3943e68c76bd1bda2b48388161849d5e253f3 udev-downstream.rules" +sha512sums="11437625988fcf57aa0b70f11496c458d4516de16391c2869ae975362f282d21d3af521a41dea00312797d20d52be5112dbf0041986bfb40f3b9fa5948d2c695 udev-rpmsg.rules +2a511c2e249d0ec5a52f04ffe1ef3d29cf3c4813143b103e54879ff89176ea45b1a5ffe21cb7dc2f1cdd84c3102ba45ef9926ed37e00b1ae12a36d01de35ea5a udev-downstream.rules" diff --git a/modem/msm-modem/udev-downstream.rules b/modem/msm-modem/udev-downstream.rules index 82835835c..e9df6fe40 100644 --- a/modem/msm-modem/udev-downstream.rules +++ b/modem/msm-modem/udev-downstream.rules @@ -1 +1,2 @@ -KERNEL=="smdcntl0", SYMLINK += "modem" +KERNEL=="smdcntl0", SYMLINK+="modem" +KERNEL=="smd8", SYMLINK+="modem-at" diff --git a/modem/msm-modem/udev-rpmsg.rules b/modem/msm-modem/udev-rpmsg.rules index a2108f696..36836db02 100644 --- a/modem/msm-modem/udev-rpmsg.rules +++ b/modem/msm-modem/udev-rpmsg.rules @@ -2,11 +2,13 @@ SUBSYSTEM!="rpmsg", GOTO="qcom_rpmsg_end" # symlink rpmsg endpoints under useful names ATTR{name}=="DATA5_CNTL", SYMLINK+="modem" +ATTR{name}=="DATA4", SYMLINK+="modem-at" # open SMD channels when the remoteproc comes up KERNEL!="rpmsg_ctrl[0-9]*", GOTO="qcom_rpmsg_end" ATTRS{rpmsg_name}!="modem|hexagon", GOTO="qcom_rpmsg_end" ACTION=="add", RUN+="/usr/sbin/rpmsgexport /dev/$name DATA5_CNTL" +ACTION=="add", RUN+="/usr/sbin/rpmsgexport /dev/$name DATA4" LABEL="qcom_rpmsg_end"