mt76: mt7921: fix mt7921_wfsys_reset sequence
authorSean Wang <sean.wang@mediatek.com>
Mon, 10 May 2021 15:14:49 +0000 (23:14 +0800)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Wed, 14 Jul 2021 15:07:09 +0000 (17:07 +0200)
[ Upstream commit 20eb83c749609199443972cf80fb6004fc36afc6 ]

WiFi subsytem reset should control MT_WFSYS_SW_RST_B and then poll the
same register until the bit WFSYS_SW_INIT_DONE bit is set.

Fixes: 0c1ce9884607 ("mt76: mt7921: add wifi reset support")
Reviewed-by: Lorenzo Bianconi <lorenzo@kernel.org>
Signed-off-by: Sean Wang <sean.wang@mediatek.com>
Signed-off-by: Felix Fietkau <nbd@nbd.name>
Signed-off-by: Sasha Levin <sashal@kernel.org>
drivers/net/wireless/mediatek/mt76/mt7921/dma.c

index 71e664ee765201a978e43b9f93b2aa43d8ffc2fd..bd9143dc865f9ba589e9ca12d688d7b50bc4e302 100644 (file)
@@ -313,9 +313,9 @@ static int mt7921_dma_reset(struct mt7921_dev *dev, bool force)
 
 int mt7921_wfsys_reset(struct mt7921_dev *dev)
 {
-       mt76_set(dev, 0x70002600, BIT(0));
-       msleep(200);
-       mt76_clear(dev, 0x70002600, BIT(0));
+       mt76_clear(dev, MT_WFSYS_SW_RST_B, WFSYS_SW_RST_B);
+       msleep(50);
+       mt76_set(dev, MT_WFSYS_SW_RST_B, WFSYS_SW_RST_B);
 
        if (!__mt76_poll_msec(&dev->mt76, MT_WFSYS_SW_RST_B,
                              WFSYS_SW_INIT_DONE, WFSYS_SW_INIT_DONE, 500))