wifi: mt76: mt7915: add dev->hif2 support for mt7916 WED device
authorSujuan Chen <sujuan.chen@mediatek.com>
Wed, 22 Feb 2023 13:01:35 +0000 (21:01 +0800)
committerFelix Fietkau <nbd@nbd.name>
Mon, 17 Apr 2023 13:34:34 +0000 (15:34 +0200)
Enable two PCIe interfaces (dev->hif2) support for mt7916 when WED is enabled.

Signed-off-by: Sujuan Chen <sujuan.chen@mediatek.com>
Signed-off-by: Felix Fietkau <nbd@nbd.name>
drivers/net/wireless/mediatek/mt76/mt7915/dma.c
drivers/net/wireless/mediatek/mt76/mt7915/mcu.c
drivers/net/wireless/mediatek/mt76/mt7915/mmio.c

index abe17da..43a5456 100644 (file)
@@ -87,8 +87,14 @@ static void mt7915_dma_config(struct mt7915_dev *dev)
                                   MT7916_RXQ_BAND0);
                        RXQ_CONFIG(MT_RXQ_MCU_WA, WFDMA0, MT_INT_WED_RX_DONE_WA_MT7916,
                                   MT7916_RXQ_MCU_WA);
-                       RXQ_CONFIG(MT_RXQ_BAND1, WFDMA0, MT_INT_WED_RX_DONE_BAND1_MT7916,
-                                  MT7916_RXQ_BAND1);
+                       if (dev->hif2)
+                               RXQ_CONFIG(MT_RXQ_BAND1, WFDMA0,
+                                          MT_INT_RX_DONE_BAND1_MT7916,
+                                          MT7916_RXQ_BAND1);
+                       else
+                               RXQ_CONFIG(MT_RXQ_BAND1, WFDMA0,
+                                          MT_INT_WED_RX_DONE_BAND1_MT7916,
+                                          MT7916_RXQ_BAND1);
                        RXQ_CONFIG(MT_RXQ_MAIN_WA, WFDMA0, MT_INT_WED_RX_DONE_WA_MAIN_MT7916,
                                   MT7916_RXQ_MCU_WA_MAIN);
                        TXQ_CONFIG(0, WFDMA0, MT_INT_WED_TX_DONE_BAND0,
index 5545a8b..16f09ea 100644 (file)
@@ -2370,7 +2370,9 @@ int mt7915_mcu_init_firmware(struct mt7915_dev *dev)
        if (ret)
                return ret;
 
-       if (mtk_wed_device_active(&dev->mt76.mmio.wed) && is_mt7915(&dev->mt76))
+       if ((mtk_wed_device_active(&dev->mt76.mmio.wed) &&
+            is_mt7915(&dev->mt76)) ||
+           !mtk_wed_get_rx_capa(&dev->mt76.mmio.wed))
                mt7915_mcu_wa_cmd(dev, MCU_WA_PARAM_CMD(CAPABILITY), 0, 0, 0);
 
        ret = mt7915_mcu_set_mwds(dev, 1);
index 225a196..6f0c0e2 100644 (file)
@@ -989,13 +989,13 @@ irqreturn_t mt7915_irq_handler(int irq, void *dev_instance)
        struct mt7915_dev *dev = dev_instance;
        struct mtk_wed_device *wed = &dev->mt76.mmio.wed;
 
-       if (mtk_wed_device_active(wed)) {
+       if (mtk_wed_device_active(wed))
                mtk_wed_device_irq_set_mask(wed, 0);
-       } else {
+       else
                mt76_wr(dev, MT_INT_MASK_CSR, 0);
-               if (dev->hif2)
-                       mt76_wr(dev, MT_INT1_MASK_CSR, 0);
-       }
+
+       if (dev->hif2)
+               mt76_wr(dev, MT_INT1_MASK_CSR, 0);
 
        if (!test_bit(MT76_STATE_INITIALIZED, &dev->mphy.state))
                return IRQ_NONE;