diff options
Diffstat (limited to 'drivers/media/platform/exynos4-is/fimc-lite-reg.c')
-rw-r--r-- | drivers/media/platform/exynos4-is/fimc-lite-reg.c | 32 |
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); |