summaryrefslogtreecommitdiff
path: root/drivers/media/platform/exynos4-is/fimc-lite-reg.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/media/platform/exynos4-is/fimc-lite-reg.c')
-rw-r--r--drivers/media/platform/exynos4-is/fimc-lite-reg.c32
1 files changed, 24 insertions, 8 deletions
diff --git a/drivers/media/platform/exynos4-is/fimc-lite-reg.c b/drivers/media/platform/exynos4-is/fimc-lite-reg.c
index 72a343e3b5e..6df640d9e13 100644
--- a/drivers/media/platform/exynos4-is/fimc-lite-reg.c
+++ b/drivers/media/platform/exynos4-is/fimc-lite-reg.c
@@ -83,6 +83,14 @@ void flite_hw_set_interrupt_mask(struct fimc_lite *dev)
writel(cfg, dev->regs + FLITE_REG_CIGCTRL);
}
+
+void flite_hw_clear_interrupt_mask(struct fimc_lite *dev)
+{
+ u32 cfg = readl(dev->regs + FLITE_REG_CIGCTRL);
+ cfg |= FLITE_REG_CIGCTRL_IRQ_DISABLE_MASK;
+ writel(cfg, dev->regs + FLITE_REG_CIGCTRL);
+}
+
void flite_hw_capture_start(struct fimc_lite *dev)
{
u32 cfg = readl(dev->regs + FLITE_REG_CIIMGCPT);
@@ -296,21 +304,29 @@ void flite_hw_mask_dma_buffer(struct fimc_lite *dev, u32 index)
writel(cfg, dev->regs + FLITE_REG_CIFCNTSEQ);
}
-/* Enable/disable output DMA, set output pixel size and offsets (composition) */
-void flite_hw_set_output_dma(struct fimc_lite *dev, struct flite_frame *f,
- bool enable)
+/* Enable/disable DMA/local output path */
+void flite_hw_set_output_path(struct fimc_lite* dev, bool dma, bool local)
{
u32 cfg = readl(dev->regs + FLITE_REG_CIGCTRL);
- if (!enable) {
- cfg |= FLITE_REG_CIGCTRL_ODMA_DISABLE;
- writel(cfg, dev->regs + FLITE_REG_CIGCTRL);
- return;
+ if (dev->dd->has_out_local_enable) {
+ if (local)
+ cfg &= ~FLITE_REG_CIGCTRL_OUT_LOCAL_DISABLE;
+ else
+ cfg |= FLITE_REG_CIGCTRL_OUT_LOCAL_DISABLE;
}
- cfg &= ~FLITE_REG_CIGCTRL_ODMA_DISABLE;
+ if (dma)
+ cfg &= ~FLITE_REG_CIGCTRL_ODMA_DISABLE;
+ else
+ cfg |= FLITE_REG_CIGCTRL_ODMA_DISABLE;
+
writel(cfg, dev->regs + FLITE_REG_CIGCTRL);
+}
+/* Configure output DMA, set output pixel size and offsets (composition) */
+void flite_hw_configure_output_dma(struct fimc_lite *dev, struct flite_frame *f)
+{
flite_hw_set_out_order(dev, f);
flite_hw_set_dma_window(dev, f);
flite_hw_set_pack12(dev, 0);