Skip to content

Commit a55a0c7

Browse files
YN Chennbd168
authored andcommitted
mt76: mt7921s: fix firmware download random fail
To avoid racing problems in chip, mt7921s should reacquire drv-own after firmware semaphore is released. Fixes: 78b2175 ("mt76: mt7921s: fix bus hang with wrong privilege") Signed-off-by: YN Chen <[email protected]> Signed-off-by: Deren Wu <[email protected]> Signed-off-by: Felix Fietkau <[email protected]>
1 parent 45b6f9c commit a55a0c7

File tree

1 file changed

+8
-7
lines changed
  • drivers/net/wireless/mediatek/mt76/mt7921

1 file changed

+8
-7
lines changed

drivers/net/wireless/mediatek/mt76/mt7921/mcu.c

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -583,13 +583,6 @@ static int mt7921_load_patch(struct mt7921_dev *dev)
583583
if (ret)
584584
dev_err(dev->mt76.dev, "Failed to start patch\n");
585585

586-
if (mt76_is_sdio(&dev->mt76)) {
587-
/* activate again */
588-
ret = __mt7921_mcu_fw_pmctrl(dev);
589-
if (!ret)
590-
ret = __mt7921_mcu_drv_pmctrl(dev);
591-
}
592-
593586
out:
594587
sem = mt76_connac_mcu_patch_sem_ctrl(&dev->mt76, false);
595588
switch (sem) {
@@ -600,6 +593,14 @@ static int mt7921_load_patch(struct mt7921_dev *dev)
600593
dev_err(dev->mt76.dev, "Failed to release patch semaphore\n");
601594
break;
602595
}
596+
597+
if (!ret && mt76_is_sdio(&dev->mt76)) {
598+
/* activate again */
599+
ret = __mt7921_mcu_fw_pmctrl(dev);
600+
if (!ret)
601+
ret = __mt7921_mcu_drv_pmctrl(dev);
602+
}
603+
603604
release_firmware(fw);
604605

605606
return ret;

0 commit comments

Comments
 (0)