[PATCH 00/11] net: wwan: t9xx: Add MediaTek T9XX WWAN driver

Jack Wu via B4 Relay devnull+jackbb_wu.compal.com at kernel.org
Fri May 29 03:31:39 PDT 2026


T9XX is the PCIe host device driver for MediaTek's
t900 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 T9XX 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 and port enumeration.

* 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.

The compilation of the T9XX driver is enabled by the
CONFIG_MTK_T9XX and CONFIG_MTK_T9XX_PCI config option
which depends on CONFIG_WWAN.

---
Jack Wu (11):
      net: wwan: t9xx: Add PCIe core
      net: wwan: t9xx: Add control plane transaction layer
      net: wwan: t9xx: Add control DMA interface
      net: wwan: t9xx: Add control port
      net: wwan: t9xx: Add FSM thread
      net: wwan: t9xx: Add AT & MBIM WWAN ports
      net: wwan: t9xx: Introduce data plane hardware
      net: wwan: t9xx: Add data plane transaction layer
      net: wwan: t9xx: Introduce WWAN interface
      net: wwan: t9xx: Add power management support
      net: wwan: t9xx: Add maintainers and documentation

 .../networking/device_drivers/wwan/t9xx.rst        |   48 +
 MAINTAINERS                                        |   10 +
 drivers/net/wwan/Kconfig                           |   17 +
 drivers/net/wwan/Makefile                          |    1 +
 drivers/net/wwan/t9xx/Makefile                     |   16 +
 drivers/net/wwan/t9xx/mtk_ctrl_plane.c             |   95 +
 drivers/net/wwan/t9xx/mtk_ctrl_plane.h             |   88 +
 drivers/net/wwan/t9xx/mtk_data_plane.c             |  104 +
 drivers/net/wwan/t9xx/mtk_data_plane.h             |  105 +
 drivers/net/wwan/t9xx/mtk_dev.c                    |   55 +
 drivers/net/wwan/t9xx/mtk_dev.h                    |  114 +
 drivers/net/wwan/t9xx/mtk_fsm.c                    |  931 +++++++
 drivers/net/wwan/t9xx/mtk_fsm.h                    |  140 +
 drivers/net/wwan/t9xx/mtk_port.c                   |  967 +++++++
 drivers/net/wwan/t9xx/mtk_port.h                   |  176 ++
 drivers/net/wwan/t9xx/mtk_port_io.c                |  576 +++++
 drivers/net/wwan/t9xx/mtk_port_io.h                |   41 +
 drivers/net/wwan/t9xx/mtk_utility.h                |   33 +
 drivers/net/wwan/t9xx/mtk_wwan.c                   |  475 ++++
 drivers/net/wwan/t9xx/mtk_wwan.h                   |   17 +
 drivers/net/wwan/t9xx/pcie/Makefile                |   19 +
 drivers/net/wwan/t9xx/pcie/mtk_cldma.c             | 1527 +++++++++++
 drivers/net/wwan/t9xx/pcie/mtk_cldma.h             |  176 ++
 drivers/net/wwan/t9xx/pcie/mtk_cldma_drv.c         |  373 +++
 drivers/net/wwan/t9xx/pcie/mtk_cldma_drv.h         |  174 ++
 drivers/net/wwan/t9xx/pcie/mtk_cldma_drv_m9xx.c    |  177 ++
 drivers/net/wwan/t9xx/pcie/mtk_cldma_drv_m9xx.h    |  101 +
 drivers/net/wwan/t9xx/pcie/mtk_ctrl_cfg_m9xx.c     |   55 +
 drivers/net/wwan/t9xx/pcie/mtk_dpmaif.c            | 2714 ++++++++++++++++++++
 drivers/net/wwan/t9xx/pcie/mtk_dpmaif.h            |   16 +
 drivers/net/wwan/t9xx/pcie/mtk_dpmaif_drv.c        | 1586 ++++++++++++
 drivers/net/wwan/t9xx/pcie/mtk_dpmaif_drv.h        |  268 ++
 drivers/net/wwan/t9xx/pcie/mtk_dpmaif_drv_m9xx.c   |  687 +++++
 drivers/net/wwan/t9xx/pcie/mtk_dpmaif_reg.h        |  387 +++
 drivers/net/wwan/t9xx/pcie/mtk_dpmaif_reg_m9xx.h   |   37 +
 drivers/net/wwan/t9xx/pcie/mtk_dpmaif_ring.c       |  168 ++
 drivers/net/wwan/t9xx/pcie/mtk_dpmaif_ring.h       |  161 ++
 drivers/net/wwan/t9xx/pcie/mtk_pci.c               | 1067 ++++++++
 drivers/net/wwan/t9xx/pcie/mtk_pci.h               |  219 ++
 drivers/net/wwan/t9xx/pcie/mtk_pci_drv_m9xx.c      |   70 +
 drivers/net/wwan/t9xx/pcie/mtk_pci_reg.h           |   72 +
 drivers/net/wwan/t9xx/pcie/mtk_trans_ctrl.c        |  593 +++++
 drivers/net/wwan/t9xx/pcie/mtk_trans_ctrl.h        |  105 +
 43 files changed, 14761 insertions(+)
---
base-commit: eb3f4b7426cfd2b79d65b7d37155480b32259a11
change-id: 20260529-t9xx_driver_v1-1744f8af7739

Best regards,
--  
Jack Wu <jackbb_wu at compal.com>





More information about the linux-arm-kernel mailing list