]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
media: platform: exynos4-is: Add hardware sync wait to fimc_is_hw_change_mode()
authorWentao Liang <vulab@iscas.ac.cn>
Tue, 22 Apr 2025 02:13:45 +0000 (10:13 +0800)
committerHans Verkuil <hverkuil@xs4all.nl>
Fri, 25 Apr 2025 13:14:37 +0000 (15:14 +0200)
In fimc_is_hw_change_mode(), the function changes camera modes without
waiting for hardware completion, risking corrupted data or system hangs
if subsequent operations proceed before the hardware is ready.

Add fimc_is_hw_wait_intmsr0_intmsd0() after mode configuration, ensuring
hardware state synchronization and stable interrupt handling.

Signed-off-by: Wentao Liang <vulab@iscas.ac.cn>
Signed-off-by: Hans Verkuil <hverkuil@xs4all.nl>
drivers/media/platform/samsung/exynos4-is/fimc-is-regs.c

index 366e6393817d2174b2fe7098f2a43a885f7b3a5b..5f9c44e825a5fa24108d4ac20adf4a76fa1fc520 100644 (file)
@@ -164,6 +164,7 @@ int fimc_is_hw_change_mode(struct fimc_is *is)
        if (WARN_ON(is->config_index >= ARRAY_SIZE(cmd)))
                return -EINVAL;
 
+       fimc_is_hw_wait_intmsr0_intmsd0(is);
        mcuctl_write(cmd[is->config_index], is, MCUCTL_REG_ISSR(0));
        mcuctl_write(is->sensor_index, is, MCUCTL_REG_ISSR(1));
        mcuctl_write(is->setfile.sub_index, is, MCUCTL_REG_ISSR(2));