Hi Tuukka, Thanks a lot for the patch, I will try this. I tried similar thing but on the sensor side and it worked, ie., I skip the very first line from readout and get the desired format for the ISP. Thanks, Suresh On Thu, Mar 19, 2009 at 1:12 PM, Tuukka.O Toivonen <tuukka.o.toivonen@xxxxxxxxx> wrote: > On Wednesday 18 March 2009 18:17:56 ext Suresh Rao wrote: >> I am working with MT9V023 RAW sensor. The data format from the sensor is >> >> B G B G B G B G ... >> G R G R G R G R ... >> B G B G B G B G ... >> G R G R G R G R ........ [ Format 1] > [...] >> I want to use the ISP on the OMAP for doing interpolation and format >> conversion to UYVY. I am able to capture the images from the sensor, >> however I notice that the color information is missing. I dug the >> sources and found that in the RAW capture mode ISP is getting >> configured to input format >> >> G R G R G R G R ... >> B G B G B G B G ... >> G R G R G R G R ... >> B G B G B G B G ... [Format 2] >> >> Has anyone tried sensors with BGGR ( Format 1) on OMAP? >> >> Can anyone give me some pointers or information on how to configure >> ISP for BGGR (Format 1) > > If you can live with losing a few pixels (maybe sensor has a few extra) > I recommend to configure ISP to crop away the topmost line. > > Here's couple of old _example_ patches how to configure the cropping. > Just gives an idea where to start... > > - Tuukka > > > diff --git a/drivers/media/video/isp/ispccdc.c b/drivers/media/video/isp/ispccdc.c > index 2288bc9..87870f1 100644 > --- a/drivers/media/video/isp/ispccdc.c > +++ b/drivers/media/video/isp/ispccdc.c > @@ -1189,13 +1189,13 @@ int ispccdc_config_size(u32 input_w, u32 input_h, u32 output_w, u32 output_h) > ISPCCDC_HORZ_INFO); > } else { > if (ispccdc_obj.ccdc_inpfmt == CCDC_RAW) { > - omap_writel(1 << ISPCCDC_HORZ_INFO_SPH_SHIFT > - | ((ispccdc_obj.ccdcout_w - 1) > + omap_writel(0 << ISPCCDC_HORZ_INFO_SPH_SHIFT > + | (ispccdc_obj.ccdcout_w > << ISPCCDC_HORZ_INFO_NPH_SHIFT), > ISPCCDC_HORZ_INFO); > } else { > omap_writel(0 << ISPCCDC_HORZ_INFO_SPH_SHIFT > - | ((ispccdc_obj.ccdcout_w - 1) > + | (ispccdc_obj.ccdcout_w > << ISPCCDC_HORZ_INFO_NPH_SHIFT), > ISPCCDC_HORZ_INFO); > } > @@ -1227,7 +1227,7 @@ int ispccdc_config_size(u32 input_w, u32 input_h, u32 output_w, u32 output_h) > ISPCCDC_VP_OUT_VERT_NUM_SHIFT), > ISPCCDC_VP_OUT); > omap_writel(0 << ISPCCDC_HORZ_INFO_SPH_SHIFT | > - ((ispccdc_obj.ccdcout_w - 1) << > + (ispccdc_obj.ccdcout_w << > ISPCCDC_HORZ_INFO_NPH_SHIFT), > ISPCCDC_HORZ_INFO); > omap_writel(0 << ISPCCDC_VERT_START_SLV0_SHIFT, > diff --git a/drivers/media/video/isp/ispccdc.c > b/drivers/media/video/isp/ispccdc.c > index f5957b2..6afaabf 100644 > --- a/drivers/media/video/isp/ispccdc.c > +++ b/drivers/media/video/isp/ispccdc.c > @@ -478,7 +478,7 @@ EXPORT_SYMBOL(ispccdc_enable_lsc); > **/ > void ispccdc_config_crop(u32 left, u32 top, u32 height, u32 width) > { > - ispccdc_obj.ccdcin_woffset = left + ((left + 1) % 2); > + ispccdc_obj.ccdcin_woffset = left + (left % 2); > ispccdc_obj.ccdcin_hoffset = top + (top % 2); > > ispccdc_obj.crop_w = width - (width % 16); > @@ -1166,7 +1166,7 @@ int ispccdc_config_size(u32 input_w, u32 input_h, > u32 output_w, u32 output_h) > ISPCCDC_FMT_VERT); > omap_writel((ispccdc_obj.ccdcout_w << > ISPCCDC_VP_OUT_HORZ_NUM_SHIFT) | > - (ispccdc_obj.ccdcout_h << > + (ispccdc_obj.ccdcout_h - 1 << > ISPCCDC_VP_OUT_VERT_NUM_SHIFT), > ISPCCDC_VP_OUT); > omap_writel((((ispccdc_obj.ccdcout_h - 25) & > > > -- 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