]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
wifi: mt76: mt7921: handle MT7902 irq_map quirk with mutable copy
authorSean Wang <sean.wang@mediatek.com>
Thu, 19 Feb 2026 00:39:59 +0000 (18:39 -0600)
committerFelix Fietkau <nbd@nbd.name>
Tue, 24 Mar 2026 15:49:29 +0000 (15:49 +0000)
MT7902 PCIe requires a different wm2_complete_mask value, so introduce a
mutable per-device copy of the default irq_map and override the field
only for this chip. Other devices continue using the shared const
template.

This is a prerequisite patch before enabling MT7902 PCIe support.

Co-developed-by: Xiong Huang <xiong.huang@mediatek.com>
Signed-off-by: Xiong Huang <xiong.huang@mediatek.com>
Signed-off-by: Sean Wang <sean.wang@mediatek.com>
Link: https://patch.msgid.link/20260219004007.19733-3-sean.wang@kernel.org
Signed-off-by: Felix Fietkau <nbd@nbd.name>
drivers/net/wireless/mediatek/mt76/mt7921/pci.c

index 65c7fe67113705de4b802562579ed6f45718e87f..5f857a21f362d470522bbc77148d0dbd5a0a8e7f 100644 (file)
@@ -327,6 +327,20 @@ static int mt7921_pci_probe(struct pci_dev *pdev,
        dev->hif_ops = &mt7921_pcie_ops;
        dev->irq_map = &irq_map;
        mt76_mmio_init(&dev->mt76, regs);
+
+       if (id->device == 0x7902) {
+               struct mt792x_irq_map *map;
+
+               /* MT7902 needs a mutable copy because wm2_complete_mask differs */
+               map = devm_kmemdup(&pdev->dev, &irq_map,
+                                  sizeof(irq_map), GFP_KERNEL);
+               if (!map)
+                       return -ENOMEM;
+
+               map->rx.wm2_complete_mask = 0;
+               dev->irq_map = map;
+       }
+
        tasklet_init(&mdev->irq_tasklet, mt792x_irq_tasklet, (unsigned long)dev);
 
        dev->phy.dev = dev;