Message ID | 200903190942.43219.tuukka.o.toivonen@nokia.com (mailing list archive) |
---|---|
State | RFC |
Headers | show |
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@nokia.com> 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@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
> -----Original Message----- > From: linux-media-owner@vger.kernel.org [mailto:linux-media- > owner@vger.kernel.org] On Behalf Of Suresh Rao > Sent: Thursday, March 19, 2009 7:59 AM > To: linux-media@vger.kernel.org > Cc: Tuukka.O Toivonen > Subject: Re: ISP Configuration for RAW Bayer sensor > > 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. Hi Suresh, I am currently working on a patch for solving these type of adjustments. The main idea is to specify from the sensor to the ISP, which is the output Raw sequence: RGGB, GRBG, BGGR, GBRG. And then adjust internal ISP reading offset to interpret the image adequately... I'll post the patch as soon as I have it ready (I'm currently busy with some other higher priority tasks for these remaining 2 weeks of the month :I) Regards, Sergio > > Thanks, > Suresh > > On Thu, Mar 19, 2009 at 1:12 PM, Tuukka.O Toivonen > <tuukka.o.toivonen@nokia.com> 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@vger.kernel.org > More majordomo info at http://vger.kernel.org/majordomo-info.html -- To unsubscribe from this list: send the line "unsubscribe linux-media" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
Hi Sergio, Thanks for the update. Sure, I love to get hands on it. Regards, Suresh On Fri, Mar 20, 2009 at 7:49 AM, Aguirre Rodriguez, Sergio Alberto <saaguirre@ti.com> wrote: > >> -----Original Message----- >> From: linux-media-owner@vger.kernel.org [mailto:linux-media- >> owner@vger.kernel.org] On Behalf Of Suresh Rao >> Sent: Thursday, March 19, 2009 7:59 AM >> To: linux-media@vger.kernel.org >> Cc: Tuukka.O Toivonen >> Subject: Re: ISP Configuration for RAW Bayer sensor >> >> 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. > > Hi Suresh, > > I am currently working on a patch for solving these type of adjustments. > > The main idea is to specify from the sensor to the ISP, which is the output Raw sequence: RGGB, GRBG, BGGR, GBRG. And then adjust internal ISP reading offset to interpret the image adequately... > > I'll post the patch as soon as I have it ready (I'm currently busy with some other higher priority tasks for these remaining 2 weeks of the month :I) > > Regards, > Sergio >> >> Thanks, >> Suresh >> >> On Thu, Mar 19, 2009 at 1:12 PM, Tuukka.O Toivonen >> <tuukka.o.toivonen@nokia.com> 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@vger.kernel.org >> More majordomo info at  http://vger.kernel.org/majordomo-info.html > > -- To unsubscribe from this list: send the line "unsubscribe linux-media" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
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);