linux/drivers/net/wwan/Kconfig
Stephan Gerhold 5e90abf49c net: wwan: Add RPMSG WWAN CTRL driver
The remote processor messaging (rpmsg) subsystem provides an interface
to communicate with other remote processors. On many Qualcomm SoCs this
is used to communicate with an integrated modem DSP that implements most
of the modem functionality and provides high-level protocols like
QMI or AT to allow controlling the modem.

For QMI, most older Qualcomm SoCs (e.g. MSM8916/MSM8974) have
a standalone "DATA5_CNTL" channel that allows exchanging QMI messages.
Note that newer SoCs (e.g. SDM845) only allow exchanging QMI messages
via a shared QRTR channel that is available via a socket API on Linux.

For AT, the "DATA4" channel accepts at least a limited set of AT
commands, on many older and newer Qualcomm SoCs, although QMI is
typically the preferred control protocol.

Often there are additional QMI/AT channels (usually named DATA*_CNTL
for QMI and DATA* for AT), but it is not clear if those are really
functional on all devices. Also, at the moment there is no use case
for having multiple QMI/AT ports. If needed more channels could be
added later after more testing.

Note that the data path (network interface) is entirely separate
from the control path and varies between Qualcomm SoCs, e.g. "IPA"
on newer Qualcomm SoCs or "BAM-DMUX" on some older ones.

The RPMSG WWAN CTRL driver exposes the QMI/AT control ports via the
WWAN subsystem, and therefore allows userspace like ModemManager to
set up the modem. Until now, ModemManager had to use the RPMSG-specific
rpmsg-char where the channels must be explicitly exposed as a char
device first and don't show up directly in sysfs.

The driver is a fairly simple glue layer between WWAN and RPMSG
and is mostly based on the existing mhi_wwan_ctrl.c and rpmsg_char.c.

Cc: Loic Poulain <loic.poulain@linaro.org>
Cc: Bjorn Andersson <bjorn.andersson@linaro.org>
Signed-off-by: Stephan Gerhold <stephan@gerhold.net>
Signed-off-by: David S. Miller <davem@davemloft.net>
2021-06-18 13:13:40 -07:00

73 lines
2.2 KiB
Plaintext

# SPDX-License-Identifier: GPL-2.0-only
#
# Wireless WAN device configuration
#
menu "Wireless WAN"
config WWAN
tristate "WWAN Driver Core"
help
Say Y here if you want to use the WWAN driver core. This driver
provides a common framework for WWAN drivers.
To compile this driver as a module, choose M here: the module will be
called wwan.
if WWAN
config WWAN_HWSIM
tristate "Simulated WWAN device"
help
This driver is a developer testing tool that can be used to test WWAN
framework.
To compile this driver as a module, choose M here: the module will be
called wwan_hwsim. If unsure, say N.
config MHI_WWAN_CTRL
tristate "MHI WWAN control driver for QCOM-based PCIe modems"
depends on MHI_BUS
help
MHI WWAN CTRL allows QCOM-based PCIe modems to expose different modem
control protocols/ports to userspace, including AT, MBIM, QMI, DIAG
and FIREHOSE. These protocols can be accessed directly from userspace
(e.g. AT commands) or via libraries/tools (e.g. libmbim, libqmi,
libqcdm...).
To compile this driver as a module, choose M here: the module will be
called mhi_wwan_ctrl.
config RPMSG_WWAN_CTRL
tristate "RPMSG WWAN control driver"
depends on RPMSG
help
RPMSG WWAN CTRL allows modems available via RPMSG channels to expose
different modem protocols/ports to userspace, including AT and QMI.
These protocols can be accessed directly from userspace
(e.g. AT commands) or via libraries/tools (e.g. libqmi, libqcdm...).
This is mainly used for modems integrated into many Qualcomm SoCs,
e.g. for AT and QMI on Qualcomm MSM8916 or MSM8974. Note that many
newer Qualcomm SoCs (e.g. SDM845) still provide an AT port through
this driver but the QMI messages can only be sent through
QRTR network sockets (CONFIG_QRTR).
To compile this driver as a module, choose M here: the module will be
called rpmsg_wwan_ctrl.
config IOSM
tristate "IOSM Driver for Intel M.2 WWAN Device"
depends on INTEL_IOMMU
help
This driver enables Intel M.2 WWAN Device communication.
If you have one of those Intel M.2 WWAN Modules and wish to use it in
Linux say Y/M here.
If unsure, say N.
endif # WWAN
endmenu