linux-arm-kernel.lists.infradead.org archive mirror
 help / color / mirror / Atom feed
* [PATCH 5/8] ispccdc: Configure CCDC registers
@ 2011-09-08 13:35 Deepthy Ravi
  2011-09-08 17:23 ` Laurent Pinchart
  0 siblings, 1 reply; 2+ messages in thread
From: Deepthy Ravi @ 2011-09-08 13:35 UTC (permalink / raw)
  To: linux-arm-kernel

From: Vaibhav Hiremath <hvaibhav@ti.com>

Configure the CCDC registers for YUV and non YUV
data. Also some code clean-up for making it compact.

Signed-off-by: Vaibhav Hiremath <hvaibhav@ti.com>
Signed-off-by: Deepthy Ravi <deepthy.ravi@ti.com>
---
 drivers/media/video/omap3isp/ispccdc.c  |   65 +++++++++++++++++++++----------
 drivers/media/video/omap3isp/ispreg.h   |    1 +
 drivers/media/video/omap3isp/ispvideo.c |    3 +
 3 files changed, 48 insertions(+), 21 deletions(-)

diff --git a/drivers/media/video/omap3isp/ispccdc.c b/drivers/media/video/omap3isp/ispccdc.c
index d58fe45..c583384 100644
--- a/drivers/media/video/omap3isp/ispccdc.c
+++ b/drivers/media/video/omap3isp/ispccdc.c
@@ -58,6 +58,7 @@ static const unsigned int ccdc_fmts[] = {
 	V4L2_MBUS_FMT_SBGGR12_1X12,
 	V4L2_MBUS_FMT_SGBRG12_1X12,
 	V4L2_MBUS_FMT_UYVY8_2X8,
+	V4L2_MBUS_FMT_YUYV8_2X8,
 };
 
 /*
@@ -788,11 +789,16 @@ static void ccdc_apply_controls(struct isp_ccdc_device *ccdc)
 void omap3isp_ccdc_restore_context(struct isp_device *isp)
 {
 	struct isp_ccdc_device *ccdc = &isp->isp_ccdc;
+	struct v4l2_mbus_framefmt *format;
 
 	isp_reg_set(isp, OMAP3_ISP_IOMEM_CCDC, ISPCCDC_CFG, ISPCCDC_CFG_VDLC);
 
-	ccdc->update = OMAP3ISP_CCDC_ALAW | OMAP3ISP_CCDC_LPF
-		     | OMAP3ISP_CCDC_BLCLAMP | OMAP3ISP_CCDC_BCOMP;
+	/* CCDC_PAD_SINK */
+	format = &ccdc->formats[CCDC_PAD_SINK];
+	if ((format->code != V4L2_MBUS_FMT_UYVY8_2X8) &&
+			(format->code != V4L2_MBUS_FMT_UYVY8_2X8))
+		ccdc->update = OMAP3ISP_CCDC_ALAW | OMAP3ISP_CCDC_LPF
+				| OMAP3ISP_CCDC_BLCLAMP | OMAP3ISP_CCDC_BCOMP;
 	ccdc_apply_controls(ccdc);
 	ccdc_configure_fpc(ccdc);
 }
@@ -966,14 +972,22 @@ static void ccdc_config_sync_if(struct isp_ccdc_device *ccdc,
 	u32 syn_mode = isp_reg_readl(isp, OMAP3_ISP_IOMEM_CCDC,
 				     ISPCCDC_SYN_MODE);
 
+	syn_mode &= ~(ISPCCDC_SYN_MODE_VDHDOUT |
+			ISPCCDC_SYN_MODE_FLDOUT |
+			ISPCCDC_SYN_MODE_VDPOL |
+			ISPCCDC_SYN_MODE_HDPOL |
+			ISPCCDC_SYN_MODE_FLDPOL |
+			ISPCCDC_SYN_MODE_FLDMODE |
+			ISPCCDC_SYN_MODE_DATAPOL |
+			ISPCCDC_SYN_MODE_DATSIZ_MASK |
+			ISPCCDC_SYN_MODE_PACK8 |
+			ISPCCDC_SYN_MODE_INPMOD_MASK);
+
 	syn_mode |= ISPCCDC_SYN_MODE_VDHDEN;
 
 	if (syncif->fldstat)
 		syn_mode |= ISPCCDC_SYN_MODE_FLDSTAT;
-	else
-		syn_mode &= ~ISPCCDC_SYN_MODE_FLDSTAT;
 
-	syn_mode &= ~ISPCCDC_SYN_MODE_DATSIZ_MASK;
 	switch (syncif->datsz) {
 	case 8:
 		syn_mode |= ISPCCDC_SYN_MODE_DATSIZ_8;
@@ -991,28 +1005,18 @@ static void ccdc_config_sync_if(struct isp_ccdc_device *ccdc,
 
 	if (syncif->fldmode)
 		syn_mode |= ISPCCDC_SYN_MODE_FLDMODE;
-	else
-		syn_mode &= ~ISPCCDC_SYN_MODE_FLDMODE;
 
 	if (syncif->datapol)
 		syn_mode |= ISPCCDC_SYN_MODE_DATAPOL;
-	else
-		syn_mode &= ~ISPCCDC_SYN_MODE_DATAPOL;
 
 	if (syncif->fldpol)
 		syn_mode |= ISPCCDC_SYN_MODE_FLDPOL;
-	else
-		syn_mode &= ~ISPCCDC_SYN_MODE_FLDPOL;
 
 	if (syncif->hdpol)
 		syn_mode |= ISPCCDC_SYN_MODE_HDPOL;
-	else
-		syn_mode &= ~ISPCCDC_SYN_MODE_HDPOL;
 
 	if (syncif->vdpol)
 		syn_mode |= ISPCCDC_SYN_MODE_VDPOL;
-	else
-		syn_mode &= ~ISPCCDC_SYN_MODE_VDPOL;
 
 	if (syncif->ccdc_mastermode) {
 		syn_mode |= ISPCCDC_SYN_MODE_FLDOUT | ISPCCDC_SYN_MODE_VDHDOUT;
@@ -1027,9 +1031,7 @@ static void ccdc_config_sync_if(struct isp_ccdc_device *ccdc,
 			     | syncif->hlprf << ISPCCDC_PIX_LINES_HLPRF_SHIFT,
 			       OMAP3_ISP_IOMEM_CCDC,
 			       ISPCCDC_PIX_LINES);
-	} else
-		syn_mode &= ~(ISPCCDC_SYN_MODE_FLDOUT |
-			      ISPCCDC_SYN_MODE_VDHDOUT);
+	}
 
 	isp_reg_writel(isp, syn_mode, OMAP3_ISP_IOMEM_CCDC, ISPCCDC_SYN_MODE);
 
@@ -1181,6 +1183,9 @@ static void ccdc_configure(struct isp_ccdc_device *ccdc)
 
 	isp_reg_writel(isp, syn_mode, OMAP3_ISP_IOMEM_CCDC, ISPCCDC_SYN_MODE);
 
+	if (format->code == V4L2_MBUS_FMT_UYVY8_2X8)
+		isp_reg_set(isp, OMAP3_ISP_IOMEM_CCDC, ISPCCDC_CFG,
+			    ISPCCDC_CFG_Y8POS);
 	/* Mosaic filter */
 	switch (format->code) {
 	case V4L2_MBUS_FMT_SRGGB10_1X10:
@@ -1200,7 +1205,10 @@ static void ccdc_configure(struct isp_ccdc_device *ccdc)
 		ccdc_pattern = ccdc_sgrbg_pattern;
 		break;
 	}
-	ccdc_config_imgattr(ccdc, ccdc_pattern);
+
+	if ((format->code != V4L2_MBUS_FMT_YUYV8_2X8) &&
+			(format->code != V4L2_MBUS_FMT_UYVY8_2X8))
+		ccdc_config_imgattr(ccdc, ccdc_pattern);
 
 	/* Generate VD0 on the last line of the image and VD1 on the
 	 * 2/3 height line.
@@ -1221,6 +1229,15 @@ static void ccdc_configure(struct isp_ccdc_device *ccdc)
 			<< ISPCCDC_VERT_LINES_NLV_SHIFT,
 		       OMAP3_ISP_IOMEM_CCDC, ISPCCDC_VERT_LINES);
 
+	isp_reg_clr(isp, OMAP3_ISP_IOMEM_CCDC, ISPCCDC_SDOFST,
+		    ISPCCDC_SDOFST_LOFST_MASK << ISPCCDC_SDOFST_LOFST0_SHIFT);
+	isp_reg_clr(isp, OMAP3_ISP_IOMEM_CCDC, ISPCCDC_SDOFST,
+		    ISPCCDC_SDOFST_LOFST_MASK << ISPCCDC_SDOFST_LOFST1_SHIFT);
+	isp_reg_clr(isp, OMAP3_ISP_IOMEM_CCDC, ISPCCDC_SDOFST,
+		    ISPCCDC_SDOFST_LOFST_MASK << ISPCCDC_SDOFST_LOFST2_SHIFT);
+	isp_reg_clr(isp, OMAP3_ISP_IOMEM_CCDC, ISPCCDC_SDOFST,
+		    ISPCCDC_SDOFST_LOFST_MASK << ISPCCDC_SDOFST_LOFST3_SHIFT);
+
 	ccdc_config_outlineoffset(ccdc, ccdc->video_out.bpl_value, 0, 0);
 
 	/* CCDC_PAD_SOURCE_VP */
@@ -1270,6 +1287,7 @@ static void __ccdc_enable(struct isp_ccdc_device *ccdc, int enable)
 			ISPCCDC_PCR_EN, enable ? ISPCCDC_PCR_EN : 0);
 }
 
+static int __ccdc_handle_stopping(struct isp_ccdc_device *ccdc, u32 event);
 static int ccdc_disable(struct isp_ccdc_device *ccdc)
 {
 	unsigned long flags;
@@ -1280,6 +1298,11 @@ static int ccdc_disable(struct isp_ccdc_device *ccdc)
 		ccdc->stopping = CCDC_STOP_REQUEST;
 	spin_unlock_irqrestore(&ccdc->lock, flags);
 
+	__ccdc_lsc_enable(ccdc, 0);
+	__ccdc_enable(ccdc, 0);
+	ccdc->stopping = CCDC_STOP_EXECUTED;
+	__ccdc_handle_stopping(ccdc, CCDC_STOP_FINISHED);
+
 	ret = wait_event_timeout(ccdc->wait,
 				 ccdc->stopping == CCDC_STOP_FINISHED,
 				 msecs_to_jiffies(2000));
@@ -1735,7 +1758,7 @@ static int ccdc_set_stream(struct v4l2_subdev *sd, int enable)
 		 * links are inactive.
 		 */
 		ccdc_config_vp(ccdc);
-		ccdc_enable_vp(ccdc, 1);
+		ccdc_enable_vp(ccdc, 0);
 		ccdc->error = 0;
 		ccdc_print_status(ccdc);
 	}
@@ -2265,7 +2288,7 @@ int omap3isp_ccdc_init(struct isp_device *isp)
 
 	ccdc->vpcfg.pixelclk = 0;
 
-	ccdc->update = OMAP3ISP_CCDC_BLCLAMP;
+	ccdc->update = 0;
 	ccdc_apply_controls(ccdc);
 
 	return ccdc_init_entities(ccdc);
diff --git a/drivers/media/video/omap3isp/ispreg.h b/drivers/media/video/omap3isp/ispreg.h
index 69f6af6..ada39c6 100644
--- a/drivers/media/video/omap3isp/ispreg.h
+++ b/drivers/media/video/omap3isp/ispreg.h
@@ -827,6 +827,7 @@
 #define ISPCCDC_SDOFST_LOFST2_SHIFT		3
 #define ISPCCDC_SDOFST_LOFST1_SHIFT		6
 #define ISPCCDC_SDOFST_LOFST0_SHIFT		9
+#define ISPCCDC_SDOFST_LOFST_MASK              0x7
 #define EVENEVEN				1
 #define ODDEVEN					2
 #define EVENODD					3
diff --git a/drivers/media/video/omap3isp/ispvideo.c b/drivers/media/video/omap3isp/ispvideo.c
index ff0ffed..d595d01 100644
--- a/drivers/media/video/omap3isp/ispvideo.c
+++ b/drivers/media/video/omap3isp/ispvideo.c
@@ -104,6 +104,9 @@ static struct isp_format_info formats[] = {
 	{ V4L2_MBUS_FMT_UYVY8_2X8, V4L2_MBUS_FMT_UYVY8_2X8,
 	  V4L2_MBUS_FMT_UYVY8_2X8, 0,
 	  V4L2_PIX_FMT_UYVY, 16, },
+	{ V4L2_MBUS_FMT_YUYV8_2X8, V4L2_MBUS_FMT_YUYV8_2X8,
+	  V4L2_MBUS_FMT_YUYV8_2X8, 0,
+	  V4L2_PIX_FMT_YUYV, 16, },
 };
 
 const struct isp_format_info *
-- 
1.7.0.4

^ permalink raw reply related	[flat|nested] 2+ messages in thread

* [PATCH 5/8] ispccdc: Configure CCDC registers
  2011-09-08 13:35 [PATCH 5/8] ispccdc: Configure CCDC registers Deepthy Ravi
@ 2011-09-08 17:23 ` Laurent Pinchart
  0 siblings, 0 replies; 2+ messages in thread
From: Laurent Pinchart @ 2011-09-08 17:23 UTC (permalink / raw)
  To: linux-arm-kernel

Hi,

Thanks for the patch.

On Thursday 08 September 2011 15:35:44 Deepthy Ravi wrote:
> From: Vaibhav Hiremath <hvaibhav@ti.com>
> 
> Configure the CCDC registers for YUV and non YUV
> data. Also some code clean-up for making it compact.

I've already posted patches to the linux-media mailing list for this. Can you 
rebase this patch on top of them ?

> Signed-off-by: Vaibhav Hiremath <hvaibhav@ti.com>
> Signed-off-by: Deepthy Ravi <deepthy.ravi@ti.com>
> ---
>  drivers/media/video/omap3isp/ispccdc.c  |   65
> +++++++++++++++++++++---------- drivers/media/video/omap3isp/ispreg.h   | 
>   1 +
>  drivers/media/video/omap3isp/ispvideo.c |    3 +
>  3 files changed, 48 insertions(+), 21 deletions(-)
> 
> diff --git a/drivers/media/video/omap3isp/ispccdc.c
> b/drivers/media/video/omap3isp/ispccdc.c index d58fe45..c583384 100644
> --- a/drivers/media/video/omap3isp/ispccdc.c
> +++ b/drivers/media/video/omap3isp/ispccdc.c
> @@ -58,6 +58,7 @@ static const unsigned int ccdc_fmts[] = {
>  	V4L2_MBUS_FMT_SBGGR12_1X12,
>  	V4L2_MBUS_FMT_SGBRG12_1X12,
>  	V4L2_MBUS_FMT_UYVY8_2X8,
> +	V4L2_MBUS_FMT_YUYV8_2X8,
>  };
> 
>  /*
> @@ -788,11 +789,16 @@ static void ccdc_apply_controls(struct
> isp_ccdc_device *ccdc) void omap3isp_ccdc_restore_context(struct
> isp_device *isp)
>  {
>  	struct isp_ccdc_device *ccdc = &isp->isp_ccdc;
> +	struct v4l2_mbus_framefmt *format;
> 
>  	isp_reg_set(isp, OMAP3_ISP_IOMEM_CCDC, ISPCCDC_CFG, ISPCCDC_CFG_VDLC);
> 
> -	ccdc->update = OMAP3ISP_CCDC_ALAW | OMAP3ISP_CCDC_LPF
> -		     | OMAP3ISP_CCDC_BLCLAMP | OMAP3ISP_CCDC_BCOMP;
> +	/* CCDC_PAD_SINK */
> +	format = &ccdc->formats[CCDC_PAD_SINK];
> +	if ((format->code != V4L2_MBUS_FMT_UYVY8_2X8) &&
> +			(format->code != V4L2_MBUS_FMT_UYVY8_2X8))
> +		ccdc->update = OMAP3ISP_CCDC_ALAW | OMAP3ISP_CCDC_LPF
> +				| OMAP3ISP_CCDC_BLCLAMP | OMAP3ISP_CCDC_BCOMP;
>  	ccdc_apply_controls(ccdc);
>  	ccdc_configure_fpc(ccdc);
>  }
> @@ -966,14 +972,22 @@ static void ccdc_config_sync_if(struct
> isp_ccdc_device *ccdc, u32 syn_mode = isp_reg_readl(isp,
> OMAP3_ISP_IOMEM_CCDC,
>  				     ISPCCDC_SYN_MODE);
> 
> +	syn_mode &= ~(ISPCCDC_SYN_MODE_VDHDOUT |
> +			ISPCCDC_SYN_MODE_FLDOUT |
> +			ISPCCDC_SYN_MODE_VDPOL |
> +			ISPCCDC_SYN_MODE_HDPOL |
> +			ISPCCDC_SYN_MODE_FLDPOL |
> +			ISPCCDC_SYN_MODE_FLDMODE |
> +			ISPCCDC_SYN_MODE_DATAPOL |
> +			ISPCCDC_SYN_MODE_DATSIZ_MASK |
> +			ISPCCDC_SYN_MODE_PACK8 |
> +			ISPCCDC_SYN_MODE_INPMOD_MASK);
> +
>  	syn_mode |= ISPCCDC_SYN_MODE_VDHDEN;
> 
>  	if (syncif->fldstat)
>  		syn_mode |= ISPCCDC_SYN_MODE_FLDSTAT;
> -	else
> -		syn_mode &= ~ISPCCDC_SYN_MODE_FLDSTAT;
> 
> -	syn_mode &= ~ISPCCDC_SYN_MODE_DATSIZ_MASK;
>  	switch (syncif->datsz) {
>  	case 8:
>  		syn_mode |= ISPCCDC_SYN_MODE_DATSIZ_8;
> @@ -991,28 +1005,18 @@ static void ccdc_config_sync_if(struct
> isp_ccdc_device *ccdc,
> 
>  	if (syncif->fldmode)
>  		syn_mode |= ISPCCDC_SYN_MODE_FLDMODE;
> -	else
> -		syn_mode &= ~ISPCCDC_SYN_MODE_FLDMODE;
> 
>  	if (syncif->datapol)
>  		syn_mode |= ISPCCDC_SYN_MODE_DATAPOL;
> -	else
> -		syn_mode &= ~ISPCCDC_SYN_MODE_DATAPOL;
> 
>  	if (syncif->fldpol)
>  		syn_mode |= ISPCCDC_SYN_MODE_FLDPOL;
> -	else
> -		syn_mode &= ~ISPCCDC_SYN_MODE_FLDPOL;
> 
>  	if (syncif->hdpol)
>  		syn_mode |= ISPCCDC_SYN_MODE_HDPOL;
> -	else
> -		syn_mode &= ~ISPCCDC_SYN_MODE_HDPOL;
> 
>  	if (syncif->vdpol)
>  		syn_mode |= ISPCCDC_SYN_MODE_VDPOL;
> -	else
> -		syn_mode &= ~ISPCCDC_SYN_MODE_VDPOL;
> 
>  	if (syncif->ccdc_mastermode) {
>  		syn_mode |= ISPCCDC_SYN_MODE_FLDOUT | ISPCCDC_SYN_MODE_VDHDOUT;
> @@ -1027,9 +1031,7 @@ static void ccdc_config_sync_if(struct
> isp_ccdc_device *ccdc,
> 
>  			     | syncif->hlprf << ISPCCDC_PIX_LINES_HLPRF_SHIFT,
> 
>  			       OMAP3_ISP_IOMEM_CCDC,
>  			       ISPCCDC_PIX_LINES);
> -	} else
> -		syn_mode &= ~(ISPCCDC_SYN_MODE_FLDOUT |
> -			      ISPCCDC_SYN_MODE_VDHDOUT);
> +	}
> 
>  	isp_reg_writel(isp, syn_mode, OMAP3_ISP_IOMEM_CCDC, ISPCCDC_SYN_MODE);
> 
> @@ -1181,6 +1183,9 @@ static void ccdc_configure(struct isp_ccdc_device
> *ccdc)
> 
>  	isp_reg_writel(isp, syn_mode, OMAP3_ISP_IOMEM_CCDC, ISPCCDC_SYN_MODE);
> 
> +	if (format->code == V4L2_MBUS_FMT_UYVY8_2X8)
> +		isp_reg_set(isp, OMAP3_ISP_IOMEM_CCDC, ISPCCDC_CFG,
> +			    ISPCCDC_CFG_Y8POS);
>  	/* Mosaic filter */
>  	switch (format->code) {
>  	case V4L2_MBUS_FMT_SRGGB10_1X10:
> @@ -1200,7 +1205,10 @@ static void ccdc_configure(struct isp_ccdc_device
> *ccdc) ccdc_pattern = ccdc_sgrbg_pattern;
>  		break;
>  	}
> -	ccdc_config_imgattr(ccdc, ccdc_pattern);
> +
> +	if ((format->code != V4L2_MBUS_FMT_YUYV8_2X8) &&
> +			(format->code != V4L2_MBUS_FMT_UYVY8_2X8))
> +		ccdc_config_imgattr(ccdc, ccdc_pattern);
> 
>  	/* Generate VD0 on the last line of the image and VD1 on the
>  	 * 2/3 height line.
> @@ -1221,6 +1229,15 @@ static void ccdc_configure(struct isp_ccdc_device
> *ccdc) << ISPCCDC_VERT_LINES_NLV_SHIFT,
>  		       OMAP3_ISP_IOMEM_CCDC, ISPCCDC_VERT_LINES);
> 
> +	isp_reg_clr(isp, OMAP3_ISP_IOMEM_CCDC, ISPCCDC_SDOFST,
> +		    ISPCCDC_SDOFST_LOFST_MASK << ISPCCDC_SDOFST_LOFST0_SHIFT);
> +	isp_reg_clr(isp, OMAP3_ISP_IOMEM_CCDC, ISPCCDC_SDOFST,
> +		    ISPCCDC_SDOFST_LOFST_MASK << ISPCCDC_SDOFST_LOFST1_SHIFT);
> +	isp_reg_clr(isp, OMAP3_ISP_IOMEM_CCDC, ISPCCDC_SDOFST,
> +		    ISPCCDC_SDOFST_LOFST_MASK << ISPCCDC_SDOFST_LOFST2_SHIFT);
> +	isp_reg_clr(isp, OMAP3_ISP_IOMEM_CCDC, ISPCCDC_SDOFST,
> +		    ISPCCDC_SDOFST_LOFST_MASK << ISPCCDC_SDOFST_LOFST3_SHIFT);
> +
>  	ccdc_config_outlineoffset(ccdc, ccdc->video_out.bpl_value, 0, 0);
> 
>  	/* CCDC_PAD_SOURCE_VP */
> @@ -1270,6 +1287,7 @@ static void __ccdc_enable(struct isp_ccdc_device
> *ccdc, int enable) ISPCCDC_PCR_EN, enable ? ISPCCDC_PCR_EN : 0);
>  }
> 
> +static int __ccdc_handle_stopping(struct isp_ccdc_device *ccdc, u32
> event); static int ccdc_disable(struct isp_ccdc_device *ccdc)
>  {
>  	unsigned long flags;
> @@ -1280,6 +1298,11 @@ static int ccdc_disable(struct isp_ccdc_device
> *ccdc) ccdc->stopping = CCDC_STOP_REQUEST;
>  	spin_unlock_irqrestore(&ccdc->lock, flags);
> 
> +	__ccdc_lsc_enable(ccdc, 0);
> +	__ccdc_enable(ccdc, 0);
> +	ccdc->stopping = CCDC_STOP_EXECUTED;
> +	__ccdc_handle_stopping(ccdc, CCDC_STOP_FINISHED);
> +

This looks a bit unrelated. Could you please explain why that's needed ?

>  	ret = wait_event_timeout(ccdc->wait,
>  				 ccdc->stopping == CCDC_STOP_FINISHED,
>  				 msecs_to_jiffies(2000));
> @@ -1735,7 +1758,7 @@ static int ccdc_set_stream(struct v4l2_subdev *sd,
> int enable) * links are inactive.
>  		 */
>  		ccdc_config_vp(ccdc);
> -		ccdc_enable_vp(ccdc, 1);
> +		ccdc_enable_vp(ccdc, 0);

Are you sure about this ?

>  		ccdc->error = 0;
>  		ccdc_print_status(ccdc);
>  	}
> @@ -2265,7 +2288,7 @@ int omap3isp_ccdc_init(struct isp_device *isp)
> 
>  	ccdc->vpcfg.pixelclk = 0;
> 
> -	ccdc->update = OMAP3ISP_CCDC_BLCLAMP;
> +	ccdc->update = 0;
>  	ccdc_apply_controls(ccdc);
> 
>  	return ccdc_init_entities(ccdc);
> diff --git a/drivers/media/video/omap3isp/ispreg.h
> b/drivers/media/video/omap3isp/ispreg.h index 69f6af6..ada39c6 100644
> --- a/drivers/media/video/omap3isp/ispreg.h
> +++ b/drivers/media/video/omap3isp/ispreg.h
> @@ -827,6 +827,7 @@
>  #define ISPCCDC_SDOFST_LOFST2_SHIFT		3
>  #define ISPCCDC_SDOFST_LOFST1_SHIFT		6
>  #define ISPCCDC_SDOFST_LOFST0_SHIFT		9
> +#define ISPCCDC_SDOFST_LOFST_MASK              0x7
>  #define EVENEVEN				1
>  #define ODDEVEN					2
>  #define EVENODD					3
> diff --git a/drivers/media/video/omap3isp/ispvideo.c
> b/drivers/media/video/omap3isp/ispvideo.c index ff0ffed..d595d01 100644
> --- a/drivers/media/video/omap3isp/ispvideo.c
> +++ b/drivers/media/video/omap3isp/ispvideo.c
> @@ -104,6 +104,9 @@ static struct isp_format_info formats[] = {
>  	{ V4L2_MBUS_FMT_UYVY8_2X8, V4L2_MBUS_FMT_UYVY8_2X8,
>  	  V4L2_MBUS_FMT_UYVY8_2X8, 0,
>  	  V4L2_PIX_FMT_UYVY, 16, },
> +	{ V4L2_MBUS_FMT_YUYV8_2X8, V4L2_MBUS_FMT_YUYV8_2X8,
> +	  V4L2_MBUS_FMT_YUYV8_2X8, 0,
> +	  V4L2_PIX_FMT_YUYV, 16, },
>  };
> 
>  const struct isp_format_info *

-- 
Regards,

Laurent Pinchart

^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2011-09-08 17:23 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2011-09-08 13:35 [PATCH 5/8] ispccdc: Configure CCDC registers Deepthy Ravi
2011-09-08 17:23 ` Laurent Pinchart

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).