From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 299C6C61DDF for ; Fri, 28 Aug 2026 09:18:20 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender:Reply-To:List-Subscribe: List-Help:List-Post:List-Archive:List-Unsubscribe:List-Id:Cc:To:In-Reply-To: References:Message-Id:Content-Transfer-Encoding:Content-Type:MIME-Version: Subject:Date:From:Content-ID:Content-Description:Resent-Date:Resent-From: Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Owner; bh=B7MfT0NJo/fb2Lk4xt8+xKpGYCezdGCQIYDVVa/ucB0=; b=BbjeQnLhXlZ+Y6I+vmzzcCyk46 o3obXyKr9ZxOKPAc9JX1e462gV4dXh63Qugpl4OX7/eS2NZHW9vJl7X4JCy18P6SjwbHCDm/eSY1q 6FWtRtALf14A+E12+X8MZGR+v21jQLLocgxX70c5YAdUzbdgD8kWSum4c3N67ee8c4PtnX//jIVFf aN9AWeDlqOcdp6tTe+xScdzvqPga/yylhqdkkjZY8cWWpn7X5xlra6oGXm2pZyGiD33/Wm+S6oTCS ikd/3nh3D9yjMd0D/6HbrLoUNuF8VIUnw8y7w/eOOnFG1ayFDx2thu+x4iq3L3h7f24Fiw6UNk8B9 Dr1gD3Zg==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.99.1 #2 (Red Hat Linux)) id 1wzsir-00000005RWi-3LV2; Fri, 28 Aug 2026 09:18:05 +0000 Received: from tor.source.kernel.org ([2600:3c04:e001:324:0:1991:8:25]) by bombadil.infradead.org with esmtps (Exim 4.99.1 #2 (Red Hat Linux)) id 1wzsip-00000005RU1-1MCo; Fri, 28 Aug 2026 09:18:03 +0000 Received: from smtp.kernel.org (transwarp.subspace.kernel.org [100.75.92.58]) by tor.source.kernel.org (Postfix) with ESMTP id 83BE8601FD; Fri, 28 Aug 2026 09:18:02 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPS id 36E42C2BCF7; Fri, 28 Aug 2026 09:18:02 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1787908682; bh=psC+Pm1C52OGErPzFsuc5Xi2brMYlnpCeU52yeLDA7c=; h=From:Date:Subject:References:In-Reply-To:To:Cc:Reply-To:From; b=QhQjLOFYiPuIBNI1UOCgNDUczKDrWXs3vQSXNn38LlhOp2JfnyuAXCxA3Z5KzlmVG naZDOzWgH5lznyTH1G6zLf4+bvQPN04b4FCTdKMcnPCiC6iU9wneRVqFjBYB5n0itO iweWj3KstfJgyqSlEG9Qx+AbaJmqb4Z65rtDu1eLcLiiCQlbH9Oh7O2BuNJA8gjHpE 4MQH8Uo2n7YLOI0fL8yYa88pWYwBZN73DEGcUJSIjhYCtPw4qQp+nCu379h3svZ/12 yJq9Mj3ptiSQ7IG+evETyHKgoUYroDenC9u855XekbUsvVfljbIw3kDB/zriYuuUOi lf5ikMef/+biw== Received: from aws-us-west-2-korg-lkml-1.web.codeaurora.org (localhost.localdomain [127.0.0.1]) by smtp.lore.kernel.org (Postfix) with ESMTP id 1C69FC61DD5; Fri, 28 Aug 2026 09:18:02 +0000 (UTC) From: Jack Wu via B4 Relay Date: Fri, 28 Aug 2026 17:17:19 +0800 Subject: [PATCH v7 2/6] net: wwan: t9xx: Add control plane transaction layer MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: 7bit Message-Id: <20260828-t9xx_driver_v1-v7-2-bf8f6074d88a@compal.com> References: <20260828-t9xx_driver_v1-v7-0-bf8f6074d88a@compal.com> In-Reply-To: <20260828-t9xx_driver_v1-v7-0-bf8f6074d88a@compal.com> To: Loic Poulain , Sergey Ryazanov , Johannes Berg , Andrew Lunn , "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , Jack Wu , Wen-Zhi Huang , Shi-Wei Yeh , Minano Tseng , Matthias Brugger , AngeloGioacchino Del Regno , Simon Horman , Jonathan Corbet , Shuah Khan , Robert Yu , Jeff Chang Cc: linux-kernel@vger.kernel.org, netdev@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-mediatek@lists.infradead.org, linux-doc@vger.kernel.org X-Mailer: b4 0.15.2 X-Developer-Signature: v=1; a=ed25519-sha256; t=1787908678; l=6974; i=jackbb_wu@compal.com; s=20260526; h=from:subject:message-id; bh=vuOoF1S4yacoIe/fJXVMIUwk0KIIejR9ydhwr36eXio=; b=zhbOpa+zWXvDVB+yAmJ+Shda5AxTXn2yfqs4qu3I2BRaBtyqTLhxlHqBh2gDrNoaZmaor4UC4 ILIzT+ZJsLYBlPB7XONRY5yqk7ezuWY0eoIbMzCmg5UBxmjFDN8xaPa X-Developer-Key: i=jackbb_wu@compal.com; a=ed25519; pk=VH1prTWixNl8OEUPPSfII3p46MzJpQN8J3+ecE1tZXg= X-Endpoint-Received: by B4 Relay for jackbb_wu@compal.com/20260526 with auth_id=793 X-Original-From: Jack Wu X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: jackbb_wu@compal.com Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org From: Jack Wu Introduce the control plane and transaction layer framework for the T9XX WWAN driver. This patch adds the core data structures (mtk_ctrl_blk, mtk_ctrl_trans) and initialization entry points that subsequent patches build upon. Split PCIe-specific objects into a separate mtk_t9xx_pcie module gated by the hidden MTK_T9XX_PCI config symbol. The control plane block (ctrl_blk) serves as the central context for managing the transaction layer, port layer, and FSM interactions. The actual DMA engine and TX/RX service implementations are added in subsequent patches. Signed-off-by: Jack Wu --- drivers/net/wwan/Kconfig | 9 ++++-- drivers/net/wwan/t9xx/Makefile | 5 ++-- drivers/net/wwan/t9xx/mtk_ctrl_plane.c | 46 +++++++++++++++++++++++++++++ drivers/net/wwan/t9xx/mtk_ctrl_plane.h | 22 ++++++++++++++ drivers/net/wwan/t9xx/mtk_dev.c | 11 +++++++ drivers/net/wwan/t9xx/mtk_dev.h | 2 ++ drivers/net/wwan/t9xx/pcie/Makefile | 10 +++++++ drivers/net/wwan/t9xx/pcie/mtk_pci.c | 1 + drivers/net/wwan/t9xx/pcie/mtk_trans_ctrl.h | 21 +++++++++++++ 9 files changed, 123 insertions(+), 4 deletions(-) diff --git a/drivers/net/wwan/Kconfig b/drivers/net/wwan/Kconfig index 55c45af410ee..aeaed8f058ec 100644 --- a/drivers/net/wwan/Kconfig +++ b/drivers/net/wwan/Kconfig @@ -124,14 +124,19 @@ config MTK_T7XX config MTK_T9XX tristate "MediaTek PCIe 5G WWAN modem T9xx device" depends on PCI && ACPI + select MTK_T9XX_PCI help Enables MediaTek PCIe based 5G WWAN modem (T9xx series) device. - To compile this driver as a module, choose M here: the module will be - called mtk_t9xx. + To compile this driver as a module, choose M here: the modules will + be called mtk_t9xx and mtk_t9xx_pcie. If unsure, say N. +config MTK_T9XX_PCI + tristate + depends on PCI + endif # WWAN endmenu diff --git a/drivers/net/wwan/t9xx/Makefile b/drivers/net/wwan/t9xx/Makefile index 6f2dd3f91454..ae9d6f2344ab 100644 --- a/drivers/net/wwan/t9xx/Makefile +++ b/drivers/net/wwan/t9xx/Makefile @@ -4,7 +4,8 @@ ccflags-y += -I$(src)/pcie ccflags-y += -I$(src) obj-$(CONFIG_MTK_T9XX) += mtk_t9xx.o +obj-$(CONFIG_MTK_T9XX_PCI) += pcie/ mtk_t9xx-y := \ - pcie/mtk_pci.o \ - pcie/mtk_pci_drv_m9xx.o + mtk_dev.o \ + mtk_ctrl_plane.o diff --git a/drivers/net/wwan/t9xx/mtk_ctrl_plane.c b/drivers/net/wwan/t9xx/mtk_ctrl_plane.c new file mode 100644 index 000000000000..65a20407173d --- /dev/null +++ b/drivers/net/wwan/t9xx/mtk_ctrl_plane.c @@ -0,0 +1,46 @@ +// SPDX-License-Identifier: GPL-2.0-only +/* + * Copyright (c) 2022, MediaTek Inc. + * Copyright (c) 2022-2023, Intel Corporation. + */ + +#include + +#include "mtk_ctrl_plane.h" + +/** + * mtk_ctrl_init() - Initialize the control plane block. + * @mdev: Pointer to the MTK modem device. + * + * Allocates and initializes the control plane block + * associated with @mdev. + * + * Return: 0 on success, -ENOMEM on allocation failure. + */ +int mtk_ctrl_init(struct mtk_md_dev *mdev) +{ + struct mtk_ctrl_blk *ctrl_blk; + + ctrl_blk = devm_kzalloc(mdev->dev, sizeof(*ctrl_blk), GFP_KERNEL); + if (!ctrl_blk) + return -ENOMEM; + + ctrl_blk->mdev = mdev; + mdev->ctrl_blk = ctrl_blk; + + return 0; +} +EXPORT_SYMBOL(mtk_ctrl_init); + +/** + * mtk_ctrl_exit() - Clean up the control plane block. + * @mdev: Pointer to the MTK modem device. + * + * Clears the control plane block pointer. The allocation + * itself is managed by devres and freed on driver detach. + */ +void mtk_ctrl_exit(struct mtk_md_dev *mdev) +{ + mdev->ctrl_blk = NULL; +} +EXPORT_SYMBOL(mtk_ctrl_exit); diff --git a/drivers/net/wwan/t9xx/mtk_ctrl_plane.h b/drivers/net/wwan/t9xx/mtk_ctrl_plane.h new file mode 100644 index 000000000000..c141876ef95d --- /dev/null +++ b/drivers/net/wwan/t9xx/mtk_ctrl_plane.h @@ -0,0 +1,22 @@ +/* SPDX-License-Identifier: GPL-2.0-only + * + * Copyright (c) 2022, MediaTek Inc. + */ + +#ifndef __MTK_CTRL_PLANE_H__ +#define __MTK_CTRL_PLANE_H__ + +#include +#include + +#include "mtk_dev.h" + +struct mtk_ctrl_blk { + struct mtk_md_dev *mdev; + struct mtk_ctrl_trans *trans; +}; + +int mtk_ctrl_init(struct mtk_md_dev *mdev); +void mtk_ctrl_exit(struct mtk_md_dev *mdev); + +#endif /* __MTK_CTRL_PLANE_H__ */ diff --git a/drivers/net/wwan/t9xx/mtk_dev.c b/drivers/net/wwan/t9xx/mtk_dev.c new file mode 100644 index 000000000000..50f77d5a210c --- /dev/null +++ b/drivers/net/wwan/t9xx/mtk_dev.c @@ -0,0 +1,11 @@ +// SPDX-License-Identifier: GPL-2.0-only +/* + * Copyright (c) 2022, MediaTek Inc. + */ + +#include + +#include "mtk_dev.h" + +MODULE_DESCRIPTION("MediaTek T9xx PCIe WWAN driver"); +MODULE_LICENSE("GPL"); diff --git a/drivers/net/wwan/t9xx/mtk_dev.h b/drivers/net/wwan/t9xx/mtk_dev.h index 8278a0e2875e..9843171fe2ae 100644 --- a/drivers/net/wwan/t9xx/mtk_dev.h +++ b/drivers/net/wwan/t9xx/mtk_dev.h @@ -36,6 +36,7 @@ enum mtk_dev_evt_d2h { }; struct mtk_md_dev; +struct mtk_ctrl_blk; struct mtk_dev_ops { u32 (*get_dev_state)(struct mtk_md_dev *mdev); @@ -57,6 +58,7 @@ struct mtk_md_dev { void *hw_priv; u32 hw_ver; char dev_str[MTK_DEV_STR_LEN]; + struct mtk_ctrl_blk *ctrl_blk; }; static inline u32 mtk_dev_get_dev_state(struct mtk_md_dev *mdev) diff --git a/drivers/net/wwan/t9xx/pcie/Makefile b/drivers/net/wwan/t9xx/pcie/Makefile new file mode 100644 index 000000000000..7410d1796d27 --- /dev/null +++ b/drivers/net/wwan/t9xx/pcie/Makefile @@ -0,0 +1,10 @@ +# SPDX-License-Identifier: GPL-2.0-only + +ccflags-y += -I$(src) +ccflags-y += -I$(src)/.. + +obj-$(CONFIG_MTK_T9XX_PCI) += mtk_t9xx_pcie.o + +mtk_t9xx_pcie-y := \ + mtk_pci_drv_m9xx.o \ + mtk_pci.o diff --git a/drivers/net/wwan/t9xx/pcie/mtk_pci.c b/drivers/net/wwan/t9xx/pcie/mtk_pci.c index a89780390dd2..c2370fdbf6e8 100644 --- a/drivers/net/wwan/t9xx/pcie/mtk_pci.c +++ b/drivers/net/wwan/t9xx/pcie/mtk_pci.c @@ -14,6 +14,7 @@ #include #include "mtk_dev.h" +#include "mtk_trans_ctrl.h" #include "mtk_pci.h" #include "mtk_pci_reg.h" diff --git a/drivers/net/wwan/t9xx/pcie/mtk_trans_ctrl.h b/drivers/net/wwan/t9xx/pcie/mtk_trans_ctrl.h new file mode 100644 index 000000000000..d6de4c43b529 --- /dev/null +++ b/drivers/net/wwan/t9xx/pcie/mtk_trans_ctrl.h @@ -0,0 +1,21 @@ +/* SPDX-License-Identifier: GPL-2.0-only + * + * Copyright (c) 2022, MediaTek Inc. + */ + +#ifndef __MTK_TRANS_CTRL_H__ +#define __MTK_TRANS_CTRL_H__ + +#include +#include +#include +#include + +#include "mtk_dev.h" + +struct mtk_ctrl_trans { + struct mtk_ctrl_blk *ctrl_blk; + struct mtk_md_dev *mdev; +}; + +#endif -- 2.34.1