[PATCH 03/20] wifi: mt76: mt7925: replace shared rx irq masks with per-chip definitions
JB Tsai
jb.tsai at mediatek.com
Fri Jun 12 00:50:40 PDT 2026
From: Emery Hsin <emery.hsin at mediatek.com>
Replace shared MT_INT_RX_DONE_* macros with chip-specific
MT7925_INT_RX_DONE_{DATA,WM,WM2,ALL} and populate all_complete_mask
in mt7925_irq_map. Update resume and mac_reset paths accordingly.
This is a preparation patch before enabling MT7928 PCIe support.
Signed-off-by: Emery Hsin <emery.hsin at mediatek.com>
---
.../net/wireless/mediatek/mt76/mt7925/pci.c | 33 ++++++++++---------
.../wireless/mediatek/mt76/mt7925/pci_mac.c | 4 +--
.../net/wireless/mediatek/mt76/mt7925/regs.h | 9 ++---
3 files changed, 23 insertions(+), 23 deletions(-)
diff --git a/drivers/net/wireless/mediatek/mt76/mt7925/pci.c b/drivers/net/wireless/mediatek/mt76/mt7925/pci.c
index ea64303283ed..95a0bd615167 100644
--- a/drivers/net/wireless/mediatek/mt76/mt7925/pci.c
+++ b/drivers/net/wireless/mediatek/mt76/mt7925/pci.c
@@ -298,6 +298,20 @@ static int mt7925_dma_init(struct mt792x_dev *dev)
return mt792x_dma_enable(dev);
}
+static const struct mt792x_irq_map mt7925_irq_map = {
+ .host_irq_enable = MT_WFDMA0_HOST_INT_ENA,
+ .tx = {
+ .all_complete_mask = MT_INT_TX_DONE_ALL,
+ .mcu_complete_mask = MT_INT_TX_DONE_MCU,
+ },
+ .rx = {
+ .all_complete_mask = MT7925_INT_RX_DONE_ALL,
+ .data_complete_mask = MT7925_INT_RX_DONE_DATA,
+ .wm_complete_mask = MT7925_INT_RX_DONE_WM,
+ .wm2_complete_mask = MT_INT_RX_DONE_WM2,
+ },
+};
+
static const struct mt792x_irq_map mt7927_irq_map = {
.host_irq_enable = MT_WFDMA0_HOST_INT_ENA,
.tx = {
@@ -339,17 +353,6 @@ static int mt7925_pci_probe(struct pci_dev *pdev,
.drv_own = mt792xe_mcu_drv_pmctrl,
.fw_own = mt792xe_mcu_fw_pmctrl,
};
- static const struct mt792x_irq_map irq_map = {
- .host_irq_enable = MT_WFDMA0_HOST_INT_ENA,
- .tx = {
- .all_complete_mask = MT_INT_TX_DONE_ALL,
- .mcu_complete_mask = MT_INT_TX_DONE_MCU,
- },
- .rx = {
- .data_complete_mask = HOST_RX_DONE_INT_ENA2,
- .wm_complete_mask = HOST_RX_DONE_INT_ENA0,
- },
- };
struct ieee80211_ops *ops;
struct mt76_bus_ops *bus_ops;
struct mt792x_dev *dev;
@@ -407,7 +410,7 @@ static int mt7925_pci_probe(struct pci_dev *pdev,
dev = container_of(mdev, struct mt792x_dev, mt76);
dev->fw_features = features;
dev->hif_ops = &mt7925_pcie_ops;
- dev->irq_map = is_mt7927_hw ? &mt7927_irq_map : &irq_map;
+ dev->irq_map = is_mt7927_hw ? &mt7927_irq_map : &mt7925_irq_map;
mt76_mmio_init(&dev->mt76, pcim_iomap_table(pdev)[0]);
tasklet_init(&mdev->irq_tasklet, mt792x_irq_tasklet, (unsigned long)dev);
@@ -456,7 +459,7 @@ static int mt7925_pci_probe(struct pci_dev *pdev,
if (ret)
goto err_free_dev;
- mt76_wr(dev, irq_map.host_irq_enable, 0);
+ mt76_wr(dev, dev->irq_map->host_irq_enable, 0);
mt76_wr(dev, MT_PCIE_MAC_INT_ENABLE, 0xff);
@@ -613,9 +616,7 @@ static int _mt7925_pci_resume(struct device *device, bool restore)
mt76_wr(dev, MT_PCIE_MAC_INT_ENABLE, 0xff);
mt76_connac_irq_enable(&dev->mt76,
dev->irq_map->tx.all_complete_mask |
- dev->irq_map->rx.data_complete_mask |
- dev->irq_map->rx.wm_complete_mask |
- dev->irq_map->rx.wm2_complete_mask |
+ dev->irq_map->rx.all_complete_mask |
MT_INT_MCU_CMD);
mt76_set(dev, MT_MCU2HOST_SW_INT_ENA, MT_MCU_CMD_WAKE_RX_PCIE);
diff --git a/drivers/net/wireless/mediatek/mt76/mt7925/pci_mac.c b/drivers/net/wireless/mediatek/mt76/mt7925/pci_mac.c
index 97683949a305..d288739e1307 100644
--- a/drivers/net/wireless/mediatek/mt76/mt7925/pci_mac.c
+++ b/drivers/net/wireless/mediatek/mt76/mt7925/pci_mac.c
@@ -119,9 +119,7 @@ int mt7925e_mac_reset(struct mt792x_dev *dev)
mt76_wr(dev, dev->irq_map->host_irq_enable,
dev->irq_map->tx.all_complete_mask |
- dev->irq_map->rx.data_complete_mask |
- dev->irq_map->rx.wm_complete_mask |
- dev->irq_map->rx.wm2_complete_mask |
+ dev->irq_map->rx.all_complete_mask |
MT_INT_MCU_CMD);
mt76_wr(dev, MT_PCIE_MAC_INT_ENABLE, 0xff);
diff --git a/drivers/net/wireless/mediatek/mt76/mt7925/regs.h b/drivers/net/wireless/mediatek/mt76/mt7925/regs.h
index 24985bba1b90..aed90cc82858 100644
--- a/drivers/net/wireless/mediatek/mt76/mt7925/regs.h
+++ b/drivers/net/wireless/mediatek/mt76/mt7925/regs.h
@@ -43,11 +43,12 @@
#define HOST_TX_DONE_INT_ENA17 BIT(27)
/* WFDMA interrupt */
-#define MT_INT_RX_DONE_DATA HOST_RX_DONE_INT_ENA2
-#define MT_INT_RX_DONE_WM HOST_RX_DONE_INT_ENA0
#define MT_INT_RX_DONE_WM2 HOST_RX_DONE_INT_ENA1
-#define MT_INT_RX_DONE_ALL (MT_INT_RX_DONE_DATA | \
- MT_INT_RX_DONE_WM | \
+
+#define MT7925_INT_RX_DONE_DATA HOST_RX_DONE_INT_ENA2
+#define MT7925_INT_RX_DONE_WM HOST_RX_DONE_INT_ENA0
+#define MT7925_INT_RX_DONE_ALL (MT7925_INT_RX_DONE_DATA | \
+ MT7925_INT_RX_DONE_WM | \
MT_INT_RX_DONE_WM2)
#define MT_INT_TX_DONE_MCU_WM (HOST_TX_DONE_INT_ENA15 | \
--
2.45.2
More information about the Linux-mediatek
mailing list