[PATCH net-next v1 00/13] net: wwan: tmi: PCIe driver for MediaTek M.2 modem
Yanchao Yang
yanchao.yang at mediatek.com
Tue Nov 22 03:11:39 PST 2022
From: MediaTek Corporation <linuxwwan at mediatek.com>
TMI(T-series Modem Interface) is the PCIe host device driver for MediaTek's
modem. The driver uses the WWAN framework infrastructure to create the
following control ports and network interfaces for data transactions.
* /dev/wwan0at0 - Interface that supports AT commands.
* /dev/wwan0mbim0 - Interface conforming to the MBIM protocol.
* wwan0-X - Primary network interface for IP traffic.
The main blocks in the TMI driver are:
* HW layer - Abstracts the hardware bus operations for the device, and
provides generic interfaces for the transaction layer to get the device's
information and control the device's behavior. It includes:
* PCIe - Implements probe, removal and interrupt handling.
* MHCCIF (Modem Host Cross-Core Interface) - Provides interrupt channels
for bidirectional event notification such as handshake, exception,
power management and port enumeration.
* RGU (Reset General Unit) - Receives reset notification from device.
* Transaction layer - Implements data transactions for the control plane
and the data plane. It includes:
* DPMAIF (Data Plane Modem AP Interface) - Controls the hardware that
provides uplink and downlink queues for the data path. The data exchange
takes place using circular buffers to share data buffer addresses and
metadata to describe the packets.
* CLDMA (Cross Layer DMA) - Manages the hardware used by the port layer
to send control messages to the device using MediaTek's CCCI (Cross-Core
Communication Interface) protocol.
* TX Services - Dispatch packets from the port layer to the device.
* RX Services - Dispatch packets to the port layer when receiving packets
from the device.
* Port layer - Provides control plane and data plane interfaces to userspace.
It includes:
* Control Plane - Provides device node interfaces for controlling data
transactions.
* Data Plane - Provides network link interfaces wwanX (0, 1, 2...) for IP
data transactions.
* Core logic - Contains the core logic to keep the device working.
It includes:
* FSM (Finite State Machine) - Monitors the state of the device, and
notifies each module when the state changes.
* PM (Power Management) - Reduces power consumption by putting the device
into low power state.
* Exception - Monitors exception events and tries to recover the device.
The compilation of the TMI driver is enabled by the CONFIG_MTK_TMI config
option which depends on CONFIG_WWAN.
List of contributors:
Min Dong <min.dong at mediatek.com>
Ting Wang <ting.wang at mediatek.com>
Hua Yang <hua.yang at mediatek.com>
Mingliang Xu <mingliang.xu at mediatek.com>
Felix Chen <felix.chen at mediatek.com>
Aiden Wang <aiden.wang at mediatek.com>
Guohao Zhang <guohao.zhang at mediatek.com>
Chris Feng <chris.feng at mediatek.com>
Michael Cai <michael.cai at mediatek.com>
Lambert Wang <lambert.wang at mediatek.com>
Mingchuang Qiao <mingchuang.qiao at mediatek.com>
Xiayu Zhang <xiayu.zhang at mediatek.com>
Haozhe Chang <haozhe.chang at mediatek.com>
MediaTek Corporation (13):
net: wwan: tmi: Add PCIe core
net: wwan: tmi: Add buffer management
net: wwan: tmi: Add control plane transaction layer
net: wwan: tmi: Add control DMA interface
net: wwan: tmi: Add control port
net: wwan: tmi: Add FSM thread
net: wwan: tmi: Add AT & MBIM WWAN ports
net: wwan: tmi: Introduce data plane hardware interface
net: wwan: tmi: Add data plane transaction layer
net: wwan: tmi: Introduce WWAN interface
net: wwan: tmi: Add exception handling service
net: wwan: tmi: Add power management support
net: wwan: tmi: Add maintainers and documentation
.../networking/device_drivers/wwan/index.rst | 1 +
.../networking/device_drivers/wwan/tmi.rst | 48 +
MAINTAINERS | 11 +
drivers/net/wwan/Kconfig | 11 +
drivers/net/wwan/Makefile | 1 +
drivers/net/wwan/mediatek/Makefile | 25 +
drivers/net/wwan/mediatek/mtk_bm.c | 369 ++
drivers/net/wwan/mediatek/mtk_bm.h | 79 +
drivers/net/wwan/mediatek/mtk_cldma.c | 354 ++
drivers/net/wwan/mediatek/mtk_cldma.h | 162 +
drivers/net/wwan/mediatek/mtk_common.h | 30 +
drivers/net/wwan/mediatek/mtk_ctrl_plane.c | 508 ++
drivers/net/wwan/mediatek/mtk_ctrl_plane.h | 118 +
drivers/net/wwan/mediatek/mtk_data_plane.h | 124 +
drivers/net/wwan/mediatek/mtk_dev.c | 103 +
drivers/net/wwan/mediatek/mtk_dev.h | 713 +++
drivers/net/wwan/mediatek/mtk_dpmaif.c | 4237 +++++++++++++++++
drivers/net/wwan/mediatek/mtk_dpmaif_drv.h | 277 ++
drivers/net/wwan/mediatek/mtk_ethtool.c | 179 +
drivers/net/wwan/mediatek/mtk_except.c | 176 +
drivers/net/wwan/mediatek/mtk_fsm.c | 1321 +++++
drivers/net/wwan/mediatek/mtk_fsm.h | 178 +
drivers/net/wwan/mediatek/mtk_pm.c | 1004 ++++
drivers/net/wwan/mediatek/mtk_port.c | 1349 ++++++
drivers/net/wwan/mediatek/mtk_port.h | 305 ++
drivers/net/wwan/mediatek/mtk_port_io.c | 767 +++
drivers/net/wwan/mediatek/mtk_port_io.h | 86 +
drivers/net/wwan/mediatek/mtk_wwan.c | 665 +++
.../wwan/mediatek/pcie/mtk_cldma_drv_t800.c | 1049 ++++
.../wwan/mediatek/pcie/mtk_cldma_drv_t800.h | 24 +
.../wwan/mediatek/pcie/mtk_dpmaif_drv_t800.c | 2115 ++++++++
.../wwan/mediatek/pcie/mtk_dpmaif_reg_t800.h | 368 ++
drivers/net/wwan/mediatek/pcie/mtk_pci.c | 1356 ++++++
drivers/net/wwan/mediatek/pcie/mtk_pci.h | 150 +
drivers/net/wwan/mediatek/pcie/mtk_reg.h | 84 +
35 files changed, 18347 insertions(+)
create mode 100644 Documentation/networking/device_drivers/wwan/tmi.rst
create mode 100644 drivers/net/wwan/mediatek/Makefile
create mode 100644 drivers/net/wwan/mediatek/mtk_bm.c
create mode 100644 drivers/net/wwan/mediatek/mtk_bm.h
create mode 100644 drivers/net/wwan/mediatek/mtk_cldma.c
create mode 100644 drivers/net/wwan/mediatek/mtk_cldma.h
create mode 100644 drivers/net/wwan/mediatek/mtk_common.h
create mode 100644 drivers/net/wwan/mediatek/mtk_ctrl_plane.c
create mode 100644 drivers/net/wwan/mediatek/mtk_ctrl_plane.h
create mode 100644 drivers/net/wwan/mediatek/mtk_data_plane.h
create mode 100644 drivers/net/wwan/mediatek/mtk_dev.c
create mode 100644 drivers/net/wwan/mediatek/mtk_dev.h
create mode 100644 drivers/net/wwan/mediatek/mtk_dpmaif.c
create mode 100644 drivers/net/wwan/mediatek/mtk_dpmaif_drv.h
create mode 100644 drivers/net/wwan/mediatek/mtk_ethtool.c
create mode 100644 drivers/net/wwan/mediatek/mtk_except.c
create mode 100644 drivers/net/wwan/mediatek/mtk_fsm.c
create mode 100644 drivers/net/wwan/mediatek/mtk_fsm.h
create mode 100644 drivers/net/wwan/mediatek/mtk_pm.c
create mode 100644 drivers/net/wwan/mediatek/mtk_port.c
create mode 100644 drivers/net/wwan/mediatek/mtk_port.h
create mode 100644 drivers/net/wwan/mediatek/mtk_port_io.c
create mode 100644 drivers/net/wwan/mediatek/mtk_port_io.h
create mode 100644 drivers/net/wwan/mediatek/mtk_wwan.c
create mode 100644 drivers/net/wwan/mediatek/pcie/mtk_cldma_drv_t800.c
create mode 100644 drivers/net/wwan/mediatek/pcie/mtk_cldma_drv_t800.h
create mode 100644 drivers/net/wwan/mediatek/pcie/mtk_dpmaif_drv_t800.c
create mode 100644 drivers/net/wwan/mediatek/pcie/mtk_dpmaif_reg_t800.h
create mode 100644 drivers/net/wwan/mediatek/pcie/mtk_pci.c
create mode 100644 drivers/net/wwan/mediatek/pcie/mtk_pci.h
create mode 100644 drivers/net/wwan/mediatek/pcie/mtk_reg.h
--
2.32.0
More information about the Linux-mediatek
mailing list