From 73d3d5c97c9c0d71ef9ac6bc72520fb1dc547702 Mon Sep 17 00:00:00 2001 From: Pengpeng Hou Date: Sun, 30 Aug 2026 21:46:09 +0800 Subject: [PATCH] media: mali-c55: fail power-on when safe stop times out The power-on path requests safe stop to establish a non-streaming state but ignores the polling result and publishes runtime resume success. Power the block back off and propagate a safe-stop timeout. Fixes: d5f281f3dd29 ("media: mali-c55: Add Mali-C55 ISP driver") Cc: stable@vger.kernel.org Signed-off-by: Pengpeng Hou Reviewed-by: Jacopo Mondi Signed-off-by: Jacopo Mondi Signed-off-by: Hans Verkuil --- drivers/media/platform/arm/mali-c55/mali-c55-core.c | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/drivers/media/platform/arm/mali-c55/mali-c55-core.c b/drivers/media/platform/arm/mali-c55/mali-c55-core.c index f28e9f4354ac..288fba483180 100644 --- a/drivers/media/platform/arm/mali-c55/mali-c55-core.c +++ b/drivers/media/platform/arm/mali-c55/mali-c55-core.c @@ -730,8 +730,13 @@ static int __mali_c55_power_on(struct mali_c55 *mali_c55) /* Set safe stop to ensure we're in a non-streaming state */ mali_c55_write(mali_c55, MALI_C55_REG_INPUT_MODE_REQUEST, MALI_C55_INPUT_SAFE_STOP); - readl_poll_timeout(mali_c55->base + MALI_C55_REG_MODE_STATUS, - val, !val, 10 * USEC_PER_MSEC, 250 * USEC_PER_MSEC); + ret = readl_poll_timeout(mali_c55->base + MALI_C55_REG_MODE_STATUS, + val, !val, 10 * USEC_PER_MSEC, 250 * USEC_PER_MSEC); + if (ret) { + dev_err(mali_c55->dev, "safe stop timed out\n"); + __mali_c55_power_off(mali_c55); + return ret; + } return 0; }