mt76: mt7921s: update mt7921s_wfsys_reset sequence
authorYN Chen <YN.Chen@mediatek.com>
Wed, 22 Dec 2021 05:58:18 +0000 (13:58 +0800)
committerFelix Fietkau <nbd@nbd.name>
Thu, 3 Feb 2022 12:57:57 +0000 (13:57 +0100)
MT7921S firmware expects driver to clear out the firmware download state
before FW is downloaded again in WiFi reset procedure.

Co-developed-by: Sean Wang <sean.wang@mediatek.com>
Signed-off-by: Sean Wang <sean.wang@mediatek.com>
Signed-off-by: YN Chen <YN.Chen@mediatek.com>
Signed-off-by: Felix Fietkau <nbd@nbd.name>
drivers/net/wireless/mediatek/mt76/mt7921/regs.h
drivers/net/wireless/mediatek/mt76/mt7921/sdio_mac.c

index cbd38122c510f82e886584f8a88f0ad4ddb65125..411695f273cda94c8aa4a2cab643efeecbfc73d5 100644 (file)
 
 #define MT_DMASHDL_SCHED_SET(_n)       MT_DMA_SHDL(0x070 + ((_n) << 2))
 
+#define MT_CONN_STATUS                 0x7c053c10
+#define MT_WIFI_PATCH_DL_STATE         BIT(0)
+
 #define MT_CONN_ON_LPCTL               0x7c060010
 #define PCIE_LPCR_HOST_OWN_SYNC                BIT(2)
 #define PCIE_LPCR_HOST_CLR_OWN         BIT(1)
index e0f0d3a2b17e2380531087104e2858ba6dad433c..4fd1d4765b04d3a3d9c84028349c2e83f9eb121e 100644 (file)
@@ -63,6 +63,8 @@ int mt7921s_wfsys_reset(struct mt7921_dev *dev)
        clear_bit(MT76_STATE_MCU_RUNNING, &dev->mphy.state);
 
        /* activate mt7921s again */
+       mt7921s_mcu_drv_pmctrl(dev);
+       mt76_clear(dev, MT_CONN_STATUS, MT_WIFI_PATCH_DL_STATE);
        mt7921s_mcu_fw_pmctrl(dev);
        mt7921s_mcu_drv_pmctrl(dev);