Since cfg1 initialization just about the frame rate, and it hardware related, just move it to isi_hw_initialize(). Signed-off-by: Josh Wu <rainyfeeling@xxxxxxxxx> --- drivers/media/platform/soc_camera/atmel-isi.c | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/drivers/media/platform/soc_camera/atmel-isi.c b/drivers/media/platform/soc_camera/atmel-isi.c index 0c3cb74..4bd8258 100644 --- a/drivers/media/platform/soc_camera/atmel-isi.c +++ b/drivers/media/platform/soc_camera/atmel-isi.c @@ -210,6 +210,10 @@ static void isi_hw_initialize(struct atmel_isi *isi) cfg1 |= ISI_CFG1_THMASK_BEATS_16; + cfg1 |= isi->pdata.frate & ISI_CFG1_FRATE_DIV_MASK; + + cfg1 |= ISI_CFG1_DISCR; + isi_writel(isi, ISI_CTRL, ISI_CTRL_DIS); isi_writel(isi, ISI_CFG1, cfg1); } @@ -409,9 +413,8 @@ static void buffer_cleanup(struct vb2_buffer *vb) static void start_dma(struct atmel_isi *isi, struct frame_buffer *buffer) { - u32 ctrl, cfg1; + u32 ctrl; - cfg1 = isi_readl(isi, ISI_CFG1); /* Enable irq: cxfr for the codec path, pxfr for the preview path */ isi_writel(isi, ISI_INTEN, ISI_SR_CXFR_DONE | ISI_SR_PXFR_DONE); @@ -436,10 +439,6 @@ static void start_dma(struct atmel_isi *isi, struct frame_buffer *buffer) isi_writel(isi, ISI_DMA_CHER, ISI_DMA_CHSR_P_CH); } - cfg1 &= ~ISI_CFG1_FRATE_DIV_MASK; - /* Enable linked list */ - cfg1 |= isi->pdata.frate | ISI_CFG1_DISCR; - /* Enable ISI */ ctrl = ISI_CTRL_EN; @@ -447,7 +446,6 @@ static void start_dma(struct atmel_isi *isi, struct frame_buffer *buffer) ctrl |= ISI_CTRL_CDC; isi_writel(isi, ISI_CTRL, ctrl); - isi_writel(isi, ISI_CFG1, cfg1); } static void buffer_queue(struct vb2_buffer *vb) -- 1.9.1 -- To unsubscribe from this list: send the line "unsubscribe linux-media" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html