Re: ISP Configuration for RAW Bayer sensor

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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

[Index of Archives]     [Linux Input]     [Video for Linux]     [Gstreamer Embedded]     [Mplayer Users]     [Linux USB Devel]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [Yosemite Backpacking]
  Powered by Linux