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: 2718d91816ee ("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:
Boris Brezillon 2024-04-30 13:37:27 +02:00
parent 8bdbd8b558
commit 2fa42fd910

View File

@ -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");
}