[PATCH 05/20] wifi: mt76: mt792x: replace shared PCIe MAC macros with per-chip struct
JB Tsai
jb.tsai at mediatek.com
Fri Jun 12 00:50:42 PDT 2026
From: Emery Hsin <emery.hsin at mediatek.com>
Replace hardcoded MT_PCIE_MAC_INT_ENABLE and MT_PCIE_MAC_PM macros
with a per-chip mt792x_pcie_reg struct. Remove the shared macros
from mt792x_regs.h and update mt792x_wpdma_reinit_cond() to use
dev->pcie_reg.
This is a preparation patch before enabling MT7928 PCIe support.
Signed-off-by: Emery Hsin <emery.hsin at mediatek.com>
---
drivers/net/wireless/mediatek/mt76/mt792x.h | 6 ++++++
drivers/net/wireless/mediatek/mt76/mt792x_dma.c | 6 ++++--
drivers/net/wireless/mediatek/mt76/mt792x_regs.h | 4 ----
3 files changed, 10 insertions(+), 6 deletions(-)
diff --git a/drivers/net/wireless/mediatek/mt76/mt792x.h b/drivers/net/wireless/mediatek/mt76/mt792x.h
index 83c729f8bb76..eacee63e13f3 100644
--- a/drivers/net/wireless/mediatek/mt76/mt792x.h
+++ b/drivers/net/wireless/mediatek/mt76/mt792x.h
@@ -238,6 +238,11 @@ struct mt792x_hif_ops {
int (*fw_own)(struct mt792x_dev *dev);
};
+struct mt792x_pcie_reg {
+ u32 imask;
+ u32 pm;
+};
+
struct mt792x_dev {
union { /* must be first */
struct mt76_dev mt76;
@@ -273,6 +278,7 @@ struct mt792x_dev {
struct mt76_connac_coredump coredump;
const struct mt792x_hif_ops *hif_ops;
const struct mt792x_irq_map *irq_map;
+ const struct mt792x_pcie_reg *pcie_reg;
struct work_struct ipv6_ns_work;
struct delayed_work mlo_pm_work;
diff --git a/drivers/net/wireless/mediatek/mt76/mt792x_dma.c b/drivers/net/wireless/mediatek/mt76/mt792x_dma.c
index 946ff6d58954..2947504ef20b 100644
--- a/drivers/net/wireless/mediatek/mt76/mt792x_dma.c
+++ b/drivers/net/wireless/mediatek/mt76/mt792x_dma.c
@@ -345,7 +345,8 @@ int mt792x_wpdma_reinit_cond(struct mt792x_dev *dev)
if (mt792x_dma_need_reinit(dev)) {
/* disable interrutpts */
mt76_wr(dev, dev->irq_map->host_irq_enable, 0);
- mt76_wr(dev, MT_PCIE_MAC_INT_ENABLE, 0x0);
+ if (dev->pcie_reg)
+ mt76_wr(dev, dev->pcie_reg->imask, 0x0);
err = mt792x_wpdma_reset(dev, false);
if (err) {
@@ -354,7 +355,8 @@ int mt792x_wpdma_reinit_cond(struct mt792x_dev *dev)
}
/* enable interrutpts */
- mt76_wr(dev, MT_PCIE_MAC_INT_ENABLE, 0xff);
+ if (dev->pcie_reg)
+ mt76_wr(dev, dev->pcie_reg->imask, 0xff);
pm->stats.lp_wake++;
}
diff --git a/drivers/net/wireless/mediatek/mt76/mt792x_regs.h b/drivers/net/wireless/mediatek/mt76/mt792x_regs.h
index 4cd5b33b640e..6d174b158915 100644
--- a/drivers/net/wireless/mediatek/mt76/mt792x_regs.h
+++ b/drivers/net/wireless/mediatek/mt76/mt792x_regs.h
@@ -415,10 +415,6 @@
#define MT_HW_EMI_CTL 0x18011100
#define MT_HW_EMI_CTL_SLPPROT_EN BIT(1)
-#define MT_PCIE_MAC_BASE 0x10000
-#define MT_PCIE_MAC(ofs) (MT_PCIE_MAC_BASE + (ofs))
-#define MT_PCIE_MAC_INT_ENABLE MT_PCIE_MAC(0x188)
-#define MT_PCIE_MAC_PM MT_PCIE_MAC(0x194)
#define MT_PCIE_MAC_PM_L0S_DIS BIT(8)
#define MT_DMA_SHDL(ofs) (0x7c026000 + (ofs))
--
2.45.2
More information about the Linux-mediatek
mailing list