From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id B896734D4E2; Thu, 23 Jul 2026 08:34:39 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1784795679; cv=none; b=bQS/9RZIDGTVEL3yzWTAAvC53lcaQ4Hxm08w/s8CbPg+aZhyF/7CWHEj0IaYZx/WiZ2aHnKaDnKIDst2S8IsJNANtzvdOjQtLKxqS+wpnnUiDoyJu6qopuhkM4NGC5ZZPEZ9378DwbUcW4eck0HoXtSORmJS0KIEU0Ke9scn1Ak= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1784795679; c=relaxed/simple; bh=fWF94StvkaAIOTPUF07PNk7mIydr+bpFXjsyFWbTsv8=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=JEk687mjCmL9qbtcjb0ZREzuuWnTpYELZX0p3SM+1BZ9BZRA2DTgBfiRyL9WzECbNaoCY4zr1G4eq6ogqLEy6P8vK3JxrJ+gP2uJom5FDoAglEJmuXtjLTW1lSOuJlq0P0NM6hIwwaBY8L872hoqdQAd3bnb16zcFYqhXil7agk= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=tiQhnYPB; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="tiQhnYPB" Received: by smtp.kernel.org (Postfix) with ESMTPS id 7F8FAC2BCFA; Thu, 23 Jul 2026 08:34:39 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1784795679; bh=fWF94StvkaAIOTPUF07PNk7mIydr+bpFXjsyFWbTsv8=; h=From:Date:Subject:References:In-Reply-To:To:Cc:Reply-To:From; b=tiQhnYPBxyFf5KkdQwjeu6VRcTNlTPo7MyA3AxIAUvZCBts9lBLRojKnfmmnQXHGp PzgsqZtF17QDeyhI2nECHpx+CvRFWtt7zxzexSpJ/Zyu4mAGPTeLN6cmuPGQXZDMlx OV/YNEHTaIRk6r9NwHfkiqmHoT69F+a7DKikx1gC5Zh6Wuybs/NyKbIoWTY8CDpcof 1gHluoYQsoSw8l8yV6vtcALTHSp4Fdz8e0rcmskeHOSFwjw9qf4kA12rhXKDj70v5L N9fHVY+htdn3HnYpJ8DKK8yvMPLVaTVrC5q6OxEn45YEUWTSkDEUvs3YtTdSet90m1 WakWcwc+MchbQ== 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 6AA46C531C7; Thu, 23 Jul 2026 08:34:39 +0000 (UTC) From: Jack Wu via B4 Relay Date: Thu, 23 Jul 2026 16:34:27 +0800 Subject: [PATCH v5 2/7] net: wwan: t9xx: Add control plane transaction layer Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: 7bit Message-Id: <20260723-t9xx_driver_v1-v5-2-b27afb99ccbb@compal.com> References: <20260723-t9xx_driver_v1-v5-0-b27afb99ccbb@compal.com> In-Reply-To: <20260723-t9xx_driver_v1-v5-0-b27afb99ccbb@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=1784795676; l=6635; i=jackbb_wu@compal.com; s=20260526; h=from:subject:message-id; bh=rt3HsiDaAoMlFyfypNp+LPtigsjc1Lac/V3mvOuxxMg=; b=rn7hql4+YtoW1FwOQRtejxaEsg1U4sapyFpz0swcxRmi+s/A30y+wq9sGqKTqPbpRRb9+6gv+ gkq8qY8CQiPCKkoyWtxvuToIS1nSEAN9hK2veHl7q/LWgaELZ3aWxw6 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 Reply-To: jackbb_wu@compal.com 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. 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 | 5 ++++ drivers/net/wwan/t9xx/Makefile | 5 ++-- drivers/net/wwan/t9xx/mtk_ctrl_plane.c | 45 +++++++++++++++++++++++++++++ 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, 120 insertions(+), 2 deletions(-) diff --git a/drivers/net/wwan/Kconfig b/drivers/net/wwan/Kconfig index 18bd40b3b8d2..a2ffed346acc 100644 --- a/drivers/net/wwan/Kconfig +++ b/drivers/net/wwan/Kconfig @@ -124,6 +124,7 @@ config MTK_T7XX config MTK_T9XX tristate "MediaTek PCIe 5G WWAN modem T9xx device" depends on PCI && ACPI + select MTK_T9XX_PCI select NET_DEVLINK help Enables MediaTek PCIe based 5G WWAN modem (T9xx series) device. @@ -133,6 +134,10 @@ config MTK_T9XX 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..cf6079218e1c --- /dev/null +++ b/drivers/net/wwan/t9xx/mtk_ctrl_plane.c @@ -0,0 +1,45 @@ +// 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. + * + * Frees the control plane block associated with @mdev. + */ +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 1f6cca70b74c..9588635fab3d 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