Commit 2fa42fd9 authored by Boris Brezillon's avatar Boris Brezillon

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: 2718d918 ("drm/panthor: Add the FW logical block")
Signed-off-by: default avatarBoris Brezillon <boris.brezillon@collabora.com>
Reviewed-by: default avatarLiviu Dudau <liviu.dudau@arm.com>
Reviewed-by: default avatarSteven Price <steven.price@arm.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20240430113727.493155-1-boris.brezillon@collabora.com
parent 8bdbd8b5
...@@ -1083,10 +1083,11 @@ int panthor_fw_post_reset(struct panthor_device *ptdev) ...@@ -1083,10 +1083,11 @@ int panthor_fw_post_reset(struct panthor_device *ptdev)
if (!ret) if (!ret)
goto out; goto out;
/* Force a disable, so we get a fresh boot on the next /* Forcibly reset the MCU and force a slow reset, so we get a
* panthor_fw_start() call. * 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"); drm_err(&ptdev->base, "FW fast reset failed, trying a slow reset");
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment