[PATCH net-next v3 0/3] net: wwan: support DTR/RTS on AT ports via MHI IP_CTRL

Peter Hunt <[email protected]>
Newsgroups org.kernel.vger.linux-arm-msm,dev.linux.lists.mhi,org.kernel.vger.linux-kernel,org.kernel.vger.netdev
Message-ID <[email protected]>
Qualcomm/Sierra SDX55/SDX65 modems (e.g. EM9291) withhold unsolicited AT
result codes until the host asserts DTR.  The in-tree mhi_wwan_ctrl driver
exposed AT ports but never signalled DTR, so URCs never reached userspace.

Patch 1 extends the wwan core with an optional ->dtr_rts(port, on) port
op, mirroring tty_port_operations.dtr_rts.  The TIOCM bitmask state is
tracked entirely in the wwan core; drivers receive only a simple boolean
assert/de-assert signal.  The core also raises DTR/RTS on first open of
any AT port whose driver implements ->dtr_rts, and drops them on last
close, mirroring TTY semantics without requiring each driver to duplicate
that logic.

Patch 2 enables the IP_CTRL MHI channel in the Sierra PCI table so that
the IP_CTRL driver (patch 3) is actually bound on those controllers.

Patch 3 adds a second mhi_driver that binds the IP_CTRL channel and
registers a ->dtr_rts op so that the wwan core's open/close DTR raise/drop
and userspace TIOCMSET calls both reach the modem.  The existing AT/QMI/MBIM
data path is untouched.

v2: https://lore.kernel.org/netdev/[email protected]/

v3:
- Replace ->tiocmget/->tiocmset port ops with a single ->dtr_rts(port, on)
  callback modelled on tty_port_operations.dtr_rts; TIOCM bitmask state
  stays in the wwan core (Loic Poulain)
- Move DTR/RTS raise on AT port open and drop on last close into
  wwan_port_op_start/wwan_port_op_stop in the wwan core (Loic Poulain)
- Remove is_at_port from struct mhi_wwan_dev; rely on wwan core instead
  (Loic Poulain)

Peter Hunt (3):
  net: wwan: core: propagate modem control signals to port drivers
  bus: mhi: host: pci_generic: enumerate IP_CTRL channel for Sierra
    EM919x/EM929x
  net: wwan: mhi_wwan_ctrl: drive DTR/RTS via the IP_CTRL channel

 drivers/bus/mhi/host/pci_generic.c |   2 +
 drivers/net/wwan/mhi_wwan_ctrl.c   | 172 ++++++++++++++++++++++++++++-
 drivers/net/wwan/wwan_core.c       |  18 ++-
 include/linux/wwan.h               |   3 +
 4 files changed, 193 insertions(+), 2 deletions(-)

-- 
2.43.0
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.