Messages in this thread | | | From | Yanchao Yang <> | Subject | [PATCH net-next v2 00/12] net: wwan: tmi: PCIe driver for MediaTek M.2 modem | Date | Wed, 18 Jan 2023 19:38:47 +0800 |
| |
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) - Manages device states according to control/data transmission states and host power states (i.e., S0, S3, S4, Runtime Suspend, etc.). * 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@mediatek.com> Ting Wang <ting.wang@mediatek.com> Hua Yang <hua.yang@mediatek.com> Mingliang Xu <mingliang.xu@mediatek.com> Felix Chen <felix.chen@mediatek.com> Aiden Wang <aiden.wang@mediatek.com> Guohao Zhang <guohao.zhang@mediatek.com> Chris Feng <chris.feng@mediatek.com> Yanchao Yang <yanchao.yang@mediatek.com> Michael Cai <michael.cai@mediatek.com> Lambert Wang <lambert.wang@mediatek.com> Mingchuang Qiao <mingchuang.qiao@mediatek.com> Xiayu Zhang <xiayu.zhang@mediatek.com> Haozhe Chang <haozhe.chang@mediatek.com>
V2: - Remove wrapper function, use kernel interfaces instead, ex, dma_map_single, dma_pool_zalloc, ... - Refine comments to meet kerneldoc format specification. - Use interfaces in bitfield.h to perform bitmask related operations. - Remove unused functions from patch-1. - Remove patch2 (net: wwan: tmi: Add buffer management).
Yanchao Yang (12): net: wwan: tmi: Add PCIe core 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 | 13 + drivers/net/wwan/Makefile | 1 + drivers/net/wwan/mediatek/Makefile | 24 + drivers/net/wwan/mediatek/mtk_cldma.c | 370 ++ drivers/net/wwan/mediatek/mtk_cldma.h | 163 + drivers/net/wwan/mediatek/mtk_common.h | 30 + drivers/net/wwan/mediatek/mtk_ctrl_plane.c | 521 ++ drivers/net/wwan/mediatek/mtk_ctrl_plane.h | 115 + drivers/net/wwan/mediatek/mtk_data_plane.h | 124 + drivers/net/wwan/mediatek/mtk_dev.c | 65 + drivers/net/wwan/mediatek/mtk_dev.h | 687 +++ drivers/net/wwan/mediatek/mtk_dpmaif.c | 4191 +++++++++++++++++ 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 | 1318 ++++++ drivers/net/wwan/mediatek/mtk_fsm.h | 178 + drivers/net/wwan/mediatek/mtk_pm.c | 1001 ++++ drivers/net/wwan/mediatek/mtk_port.c | 1358 ++++++ drivers/net/wwan/mediatek/mtk_port.h | 312 ++ drivers/net/wwan/mediatek/mtk_port_io.c | 777 +++ drivers/net/wwan/mediatek/mtk_port_io.h | 45 + drivers/net/wwan/mediatek/mtk_wwan.c | 662 +++ .../wwan/mediatek/pcie/mtk_cldma_drv_t800.c | 1049 +++++ .../wwan/mediatek/pcie/mtk_cldma_drv_t800.h | 25 + .../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 | 1332 ++++++ drivers/net/wwan/mediatek/pcie/mtk_pci.h | 150 + drivers/net/wwan/mediatek/pcie/mtk_reg.h | 84 + 33 files changed, 17770 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_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
| |