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!
This commit is contained in:
Minecrell 2020-06-04 22:30:44 +02:00 committed by Alexey Min
parent 25147b4aa3
commit 36f13ad1ab
No known key found for this signature in database
GPG key ID: EBF5ECFFFEE34DED
3 changed files with 8 additions and 5 deletions

View file

@ -1,6 +1,6 @@
pkgname=msm-modem pkgname=msm-modem
pkgver=1 pkgver=2
pkgrel=2 pkgrel=0
pkgdesc="Common support for Qualcomm MSM modems" pkgdesc="Common support for Qualcomm MSM modems"
url="https://postmarketos.org/" url="https://postmarketos.org/"
arch="armhf armv7 aarch64" arch="armhf armv7 aarch64"
@ -29,5 +29,5 @@ downstream() {
install -Dm644 "$srcdir/udev-downstream.rules" "$subpkgdir/usr/lib/udev/rules.d/55-$pkgname.rules" install -Dm644 "$srcdir/udev-downstream.rules" "$subpkgdir/usr/lib/udev/rules.d/55-$pkgname.rules"
} }
sha512sums="f842f617c441b8e6c1f8a7802792f5dfc22ab92216641f54e1a1fb8faec00a78b473baf02ef85b6ec295a88aa89a25325479380e1e65db62be879064782790ab udev-rpmsg.rules sha512sums="11437625988fcf57aa0b70f11496c458d4516de16391c2869ae975362f282d21d3af521a41dea00312797d20d52be5112dbf0041986bfb40f3b9fa5948d2c695 udev-rpmsg.rules
64a40fb88d40ae0ff64d3545f7a54c6f10f2ab366ef75b8b158c2d5a3733223839c87aed8d5c6685d5056a5840d3943e68c76bd1bda2b48388161849d5e253f3 udev-downstream.rules" 2a511c2e249d0ec5a52f04ffe1ef3d29cf3c4813143b103e54879ff89176ea45b1a5ffe21cb7dc2f1cdd84c3102ba45ef9926ed37e00b1ae12a36d01de35ea5a udev-downstream.rules"

View file

@ -1 +1,2 @@
KERNEL=="smdcntl0", SYMLINK += "modem" KERNEL=="smdcntl0", SYMLINK+="modem"
KERNEL=="smd8", SYMLINK+="modem-at"

View file

@ -2,11 +2,13 @@ SUBSYSTEM!="rpmsg", GOTO="qcom_rpmsg_end"
# symlink rpmsg endpoints under useful names # symlink rpmsg endpoints under useful names
ATTR{name}=="DATA5_CNTL", SYMLINK+="modem" ATTR{name}=="DATA5_CNTL", SYMLINK+="modem"
ATTR{name}=="DATA4", SYMLINK+="modem-at"
# open SMD channels when the remoteproc comes up # open SMD channels when the remoteproc comes up
KERNEL!="rpmsg_ctrl[0-9]*", GOTO="qcom_rpmsg_end" KERNEL!="rpmsg_ctrl[0-9]*", GOTO="qcom_rpmsg_end"
ATTRS{rpmsg_name}!="modem|hexagon", 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 DATA5_CNTL"
ACTION=="add", RUN+="/usr/sbin/rpmsgexport /dev/$name DATA4"
LABEL="qcom_rpmsg_end" LABEL="qcom_rpmsg_end"