Hi Josh, Thank you for the patch. On Wednesday 17 June 2015 18:39:38 Josh Wu wrote: > In the function configure_geometry(), we will setup the ISI CFG2 > according to the sensor output format. > > It make no sense to just read back the CFG2 register and just set part > of it. > > So just set up this register directly makes things simpler. > Currently only support YUV format from camera sensor. > > Signed-off-by: Josh Wu <josh.wu@xxxxxxxxx> The default value of the register is all 0 so this should be good. Reviewed-by: Laurent Pinchart <laurent.pinchart@xxxxxxxxxxxxxxxx> > --- > > drivers/media/platform/soc_camera/atmel-isi.c | 20 +++++++------------- > 1 file changed, 7 insertions(+), 13 deletions(-) > > diff --git a/drivers/media/platform/soc_camera/atmel-isi.c > b/drivers/media/platform/soc_camera/atmel-isi.c index 9070172..8bc40ca > 100644 > --- a/drivers/media/platform/soc_camera/atmel-isi.c > +++ b/drivers/media/platform/soc_camera/atmel-isi.c > @@ -105,24 +105,25 @@ static u32 isi_readl(struct atmel_isi *isi, u32 reg) > static int configure_geometry(struct atmel_isi *isi, u32 width, > u32 height, u32 code) > { > - u32 cfg2, cr; > + u32 cfg2; > > + /* According to sensor's output format to set cfg2 */ > switch (code) { > /* YUV, including grey */ > case MEDIA_BUS_FMT_Y8_1X8: > - cr = ISI_CFG2_GRAYSCALE; > + cfg2 = ISI_CFG2_GRAYSCALE; > break; > case MEDIA_BUS_FMT_VYUY8_2X8: > - cr = ISI_CFG2_YCC_SWAP_MODE_3; > + cfg2 = ISI_CFG2_YCC_SWAP_MODE_3; > break; > case MEDIA_BUS_FMT_UYVY8_2X8: > - cr = ISI_CFG2_YCC_SWAP_MODE_2; > + cfg2 = ISI_CFG2_YCC_SWAP_MODE_2; > break; > case MEDIA_BUS_FMT_YVYU8_2X8: > - cr = ISI_CFG2_YCC_SWAP_MODE_1; > + cfg2 = ISI_CFG2_YCC_SWAP_MODE_1; > break; > case MEDIA_BUS_FMT_YUYV8_2X8: > - cr = ISI_CFG2_YCC_SWAP_DEFAULT; > + cfg2 = ISI_CFG2_YCC_SWAP_DEFAULT; > break; > /* RGB, TODO */ > default: > @@ -130,17 +131,10 @@ static int configure_geometry(struct atmel_isi *isi, > u32 width, } > > isi_writel(isi, ISI_CTRL, ISI_CTRL_DIS); > - > - cfg2 = isi_readl(isi, ISI_CFG2); > - /* Set YCC swap mode */ > - cfg2 &= ~ISI_CFG2_YCC_SWAP_MODE_MASK; > - cfg2 |= cr; > /* Set width */ > - cfg2 &= ~(ISI_CFG2_IM_HSIZE_MASK); > cfg2 |= ((width - 1) << ISI_CFG2_IM_HSIZE_OFFSET) & > ISI_CFG2_IM_HSIZE_MASK; > /* Set height */ > - cfg2 &= ~(ISI_CFG2_IM_VSIZE_MASK); > cfg2 |= ((height - 1) << ISI_CFG2_IM_VSIZE_OFFSET) > & ISI_CFG2_IM_VSIZE_MASK; > isi_writel(isi, ISI_CFG2, cfg2); -- Regards, Laurent Pinchart -- 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