drm/panthor: Fix the FW reset logic
In the post_reset function, if the fast reset didn't succeed, we
are not clearing the fast_reset flag, which prevents firmware
sections from being reloaded. While at it, use panthor_fw_stop()
instead of manually writing DISABLE to the MCU_CONTROL register.
Fixes: 2718d91816 ("drm/panthor: Add the FW logical block")
Signed-off-by: Boris Brezillon <boris.brezillon@collabora.com>
Reviewed-by: Liviu Dudau <liviu.dudau@arm.com>
Reviewed-by: Steven Price <steven.price@arm.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20240430113727.493155-1-boris.brezillon@collabora.com
This commit is contained in:
@@ -1083,10 +1083,11 @@ int panthor_fw_post_reset(struct panthor_device *ptdev)
|
||||
if (!ret)
|
||||
goto out;
|
||||
|
||||
/* Force a disable, so we get a fresh boot on the next
|
||||
* panthor_fw_start() call.
|
||||
/* Forcibly reset the MCU and force a slow reset, so we get a
|
||||
* fresh boot on the next panthor_fw_start() call.
|
||||
*/
|
||||
gpu_write(ptdev, MCU_CONTROL, MCU_CONTROL_DISABLE);
|
||||
panthor_fw_stop(ptdev);
|
||||
ptdev->fw->fast_reset = false;
|
||||
drm_err(&ptdev->base, "FW fast reset failed, trying a slow reset");
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user