[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Message-Id: <20210719145317.79692-1-stephan@gerhold.net>
Date: Mon, 19 Jul 2021 16:53:13 +0200
From: Stephan Gerhold <stephan@...hold.net>
To: "David S. Miller" <davem@...emloft.net>,
Jakub Kicinski <kuba@...nel.org>
Cc: Loic Poulain <loic.poulain@...aro.org>,
Sergey Ryazanov <ryazanov.s.a@...il.com>,
Johannes Berg <johannes@...solutions.net>,
Bjorn Andersson <bjorn.andersson@...aro.org>,
Andy Gross <agross@...nel.org>, Vinod Koul <vkoul@...nel.org>,
Rob Herring <robh+dt@...nel.org>,
Aleksander Morgado <aleksander@...ksander.es>,
netdev@...r.kernel.org, linux-arm-msm@...r.kernel.org,
dmaengine@...r.kernel.org, devicetree@...r.kernel.org,
linux-kernel@...r.kernel.org, phone-devel@...r.kernel.org,
~postmarketos/upstreaming@...ts.sr.ht,
Jeffrey Hugo <jeffrey.l.hugo@...il.com>,
Stephan Gerhold <stephan@...hold.net>
Subject: [RFC PATCH net-next 0/4] net: wwan: Add Qualcomm BAM-DMUX WWAN network driver
The BAM Data Multiplexer provides access to the network data channels
of modems integrated into many older Qualcomm SoCs, e.g. Qualcomm MSM8916
or MSM8974. This series adds a driver that allows using it.
For more information about BAM-DMUX, see PATCH 4/4.
Shortly said, BAM-DMUX is built using a simple protocol layer on top of
a DMA engine (Qualcomm BAM DMA). For BAM-DMUX, the BAM DMA engine runs in
a quite strange mode that I call "remote power collapse", where the
modem/remote side is responsible for powering on the BAM when needed but we
are responsible to initialize it. The BAM is power-collapsed when unneeded
by coordinating power control via bidirectional interrupts from the
BAM-DMUX driver.
The series first adds one possible solution for handling this "remote power
collapse" mode in the bam_dma driver, then it adds the BAM-DMUX driver to
the WWAN subsystem. Note that the BAM-DMUX driver does not actually make
use of the WWAN subsystem yet, since I'm not sure how to fit it in there
yet (see PATCH 4/4).
Please note that all of the changes in this patch series are based on
a fairly complicated driver from Qualcomm [1].
I do not have access to any documentation about "BAM-DMUX". :(
The driver has been used in postmarketOS [2] on various smartphones/tablets
based on Qualcomm MSM8916 and MSM8974 for a year now with no reported
problems.
At runtime (but not compile-time), the following two patches are needed
additionally for full functionality:
- https://lore.kernel.org/linux-arm-msm/20210712135703.324748-1-stephan@gerhold.net/
- https://lore.kernel.org/linux-arm-msm/20210712135703.324748-2-stephan@gerhold.net/
[1]: https://source.codeaurora.org/quic/la/kernel/msm-3.10/tree/drivers/soc/qcom/bam_dmux.c?h=LA.BR.1.2.9.1-02310-8x16.0
[2]: https://postmarketos.org/
Stephan Gerhold (4):
dt-bindings: dmaengine: bam_dma: Add remote power collapse mode
dmaengine: qcom: bam_dma: Add remote power collapse mode
dt-bindings: net: Add schema for Qualcomm BAM-DMUX
net: wwan: Add Qualcomm BAM-DMUX WWAN network driver
.../devicetree/bindings/dma/qcom_bam_dma.txt | 2 +
.../bindings/net/qcom,bam-dmux.yaml | 87 ++
MAINTAINERS | 8 +
drivers/dma/qcom/bam_dma.c | 88 +-
drivers/net/wwan/Kconfig | 13 +
drivers/net/wwan/Makefile | 1 +
drivers/net/wwan/qcom_bam_dmux.c | 907 ++++++++++++++++++
7 files changed, 1074 insertions(+), 32 deletions(-)
create mode 100644 Documentation/devicetree/bindings/net/qcom,bam-dmux.yaml
create mode 100644 drivers/net/wwan/qcom_bam_dmux.c
--
2.32.0
Powered by blists - more mailing lists