From: Deren Wu <deren.wu@xxxxxxxxxxxx> Accroding to chip hw flow, mt7921s need to re-acquire privilege again before normal running. Otherwise, the bus may be stuck in an abnormal status. Tested-by: Leon Yen <Leon.Yen@xxxxxxxxxxxx> Co-developed-by: Eric-SY Chang <Eric-SY.Chang@xxxxxxxxxxxx> Signed-off-by: Eric-SY Chang <Eric-SY.Chang@xxxxxxxxxxxx> Co-developed-by: YN Chen <YN.Chen@xxxxxxxxxxxx> Signed-off-by: YN Chen <YN.Chen@xxxxxxxxxxxx> Signed-off-by: Deren Wu <deren.wu@xxxxxxxxxxxx> --- drivers/net/wireless/mediatek/mt76/mt7921/mcu.c | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/drivers/net/wireless/mediatek/mt76/mt7921/mcu.c b/drivers/net/wireless/mediatek/mt76/mt7921/mcu.c index 6ada1ebe7d68..1227d626e9d3 100644 --- a/drivers/net/wireless/mediatek/mt76/mt7921/mcu.c +++ b/drivers/net/wireless/mediatek/mt76/mt7921/mcu.c @@ -720,6 +720,17 @@ static int mt7921_load_patch(struct mt7921_dev *dev) if (ret) dev_err(dev->mt76.dev, "Failed to start patch\n"); + if (mt76_is_sdio(&dev->mt76)) { + /* activate again */ + ret = __mt7921_mcu_fw_pmctrl(dev); + if (ret) + return ret; + + ret = __mt7921_mcu_drv_pmctrl(dev); + if (ret) + return ret; + } + out: sem = mt76_connac_mcu_patch_sem_ctrl(&dev->mt76, false); switch (sem) { -- 2.18.0