fimc-is: Clear all MCUCTL register in the power up sequence
authorSylwester Nawrocki <s.nawrocki@samsung.com>
Thu, 10 Mar 2016 16:43:00 +0000 (17:43 +0100)
committerMarek Szyprowski <m.szyprowski@samsung.com>
Fri, 27 Apr 2018 08:25:07 +0000 (10:25 +0200)
When the ISP, CAM{0,1} power domains are always on it is required
to clear MCUCTL registers in the ISP power up sequence, otherwise
the front camera is not working properly if previously the rear
camera pipeline was used. The original code relied on the MCUCTL
registers being reset to default values after the ISP power domain
switch off/on cycle.

Change-Id: I685603ab968e5eb3871dd0ed3a25a4eb694bdc75
Signed-off-by: Sylwester Nawrocki <s.nawrocki@samsung.com>
drivers/media/platform/exynos/fimc-is/fimc-is-device-ischain.c

index 03864545b4e1397595f2f7235ddff0036b313360..c0b86064119d46cbebe80457c0e679a3a47b4824 100644 (file)
@@ -1239,6 +1239,10 @@ int fimc_is_ischain_power(struct fimc_is_device_ischain *device, int on)
                if (rpm_ret < 0)
                        err("pm_runtime_get_sync() return error: %d", rpm_ret);
 
+               /* clear all MCUCTL registers */
+               for (i = 0; i < ISSR(63); i += 4)
+                       writel(0, core->regs + i);
+
                {
                        fimc_is_sec_get_sysfs_finfo(&sysfs_finfo);
                        if (!sysfs_finfo->is_caldata_read) {