diff options
-rw-r--r-- | drivers/media/platform/exynos5-is/fimc-is-core.c | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/drivers/media/platform/exynos5-is/fimc-is-core.c b/drivers/media/platform/exynos5-is/fimc-is-core.c index 592479d9ec0..397fb290ad5 100644 --- a/drivers/media/platform/exynos5-is/fimc-is-core.c +++ b/drivers/media/platform/exynos5-is/fimc-is-core.c @@ -25,6 +25,7 @@ #include "fimc-is.h" #include "fimc-is-i2c.h" #include "exynos5-mdev.h" +#include "fimc-is-regs.h" #define CLK_MCU_ISP_DIV0_FREQ (200 * 1000000) #define CLK_MCU_ISP_DIV1_FREQ (100 * 1000000) @@ -413,6 +414,12 @@ void fimc_is_clk_disable(struct fimc_is *is) } } +static inline void fimc_is_reset_cmu_isp(struct fimc_is *is) +{ + if (is->drvdata->variant == FIMC_IS_EXYNOS3250) + pmu_is_write(0x0, is, EXYNOS3250_PMUREG_CMU_RESET_ISP); +} + static int fimc_is_pm_resume(struct device *dev) { struct fimc_is *is = dev_get_drvdata(dev); @@ -431,6 +438,7 @@ static int fimc_is_pm_suspend(struct device *dev) { struct fimc_is *is = dev_get_drvdata(dev); fimc_is_clk_disable(is); + fimc_is_reset_cmu_isp(is); return 0; } @@ -522,6 +530,8 @@ static int fimc_is_probe(struct platform_device *pdev) } + fimc_is_reset_cmu_isp(is); + is->alloc_ctx = vb2_dma_contig_init_ctx(dev); if (IS_ERR(is->alloc_ctx)) { ret = PTR_ERR(is->alloc_ctx); |