OSDN Git Service

mt76: mt7921: fix MT7921E reset failure
authorSean Wang <sean.wang@mediatek.com>
Wed, 3 Nov 2021 00:05:16 +0000 (08:05 +0800)
committerFelix Fietkau <nbd@nbd.name>
Sat, 18 Dec 2021 10:47:57 +0000 (11:47 +0100)
There is a missing mt7921e_driver_own in the MT7921E reset procedure
since the mt7921 mcu.c has been refactored for MT7921S, that will
result in MT7921E reset failure, so add it back now.

Fixes: dfc7743de1eb ("mt76: mt7921: refactor mcu.c to be bus independent")
Reported-by: YN Chen <YN.Chen@mediatek.com>
Signed-off-by: Sean Wang <sean.wang@mediatek.com>
Signed-off-by: Felix Fietkau <nbd@nbd.name>
drivers/net/wireless/mediatek/mt76/mt7921/mt7921.h
drivers/net/wireless/mediatek/mt76/mt7921/pci_mac.c
drivers/net/wireless/mediatek/mt76/mt7921/pci_mcu.c

index e9c7c3a..d6b8237 100644 (file)
@@ -446,6 +446,7 @@ int mt7921_mcu_restart(struct mt76_dev *dev);
 
 void mt7921e_queue_rx_skb(struct mt76_dev *mdev, enum mt76_rxq_id q,
                          struct sk_buff *skb);
+int mt7921e_driver_own(struct mt7921_dev *dev);
 int mt7921e_mac_reset(struct mt7921_dev *dev);
 int mt7921e_mcu_init(struct mt7921_dev *dev);
 int mt7921s_wfsys_reset(struct mt7921_dev *dev);
index f9547d2..85286cc 100644 (file)
@@ -321,6 +321,10 @@ int mt7921e_mac_reset(struct mt7921_dev *dev)
                MT_INT_MCU_CMD);
        mt76_wr(dev, MT_PCIE_MAC_INT_ENABLE, 0xff);
 
+       err = mt7921e_driver_own(dev);
+       if (err)
+               return err;
+
        err = mt7921_run_firmware(dev);
        if (err)
                goto out;
index 583a89a..7b34c7f 100644 (file)
@@ -4,7 +4,7 @@
 #include "mt7921.h"
 #include "mcu.h"
 
-static int mt7921e_driver_own(struct mt7921_dev *dev)
+int mt7921e_driver_own(struct mt7921_dev *dev)
 {
        u32 reg = mt7921_reg_map_l1(dev, MT_TOP_LPCR_HOST_BAND0);