summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--drivers/media/platform/exynos5-is/fimc-is-core.c10
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);