Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
14 changes: 14 additions & 0 deletions mt792x_core.c
Original file line number Diff line number Diff line change
Expand Up @@ -927,6 +927,20 @@ int mt792x_load_firmware(struct mt792x_dev *dev)
{
int ret;

/* Release semaphore if taken by previous failed load attempt.
* This prevents "Failed to get patch semaphore" errors when
* recovering from firmware crashes or suspend/resume failures.
*/
ret = mt76_connac_mcu_patch_sem_ctrl(&dev->mt76, false);
if (ret < 0)
dev_dbg(dev->mt76.dev, "Semaphore release returned %d (may be expected)\n", ret);

/* Always restart MCU to ensure clean state before loading firmware */
mt76_connac_mcu_restart(&dev->mt76);

/* Wait for MCU to be ready after restart */
msleep(100);

ret = mt76_connac2_load_patch(&dev->mt76, mt792x_patch_name(dev));
if (ret)
return ret;
Expand Down