Re: Current status report of mt9p031.

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

 



Hi Javier,

On Tuesday 10 May 2011 09:31:02 javier Martin wrote:
> On 5 May 2011 18:55, Laurent Pinchart <laurent.pinchart@xxxxxxxxxxxxxxxx> 
wrote:
> > Hi Javier,
> > 
> > Here's the review of 0002-mt9p031.patch.
> 
> [snip]
> 
> >> +static int mt9p031_probe(struct i2c_client *client,
> >> +                      const struct i2c_device_id *did)
> >> +{
> >> +     struct mt9p031 *mt9p031;
> >> +     struct v4l2_subdev *sd = i2c_get_clientdata(client);
> >> +     struct mt9p031_platform_data *pdata = client->dev.platform_data;
> >> +     struct i2c_adapter *adapter = to_i2c_adapter(client->dev.parent);
> >> +     int ret;
> >> +
> >> +     if (!i2c_check_functionality(adapter, I2C_FUNC_SMBUS_WORD_DATA)) {
> >> +             dev_warn(&adapter->dev,
> >> +                      "I2C-Adapter doesn't support
> >> I2C_FUNC_SMBUS_WORD\n"); +             return -EIO;
> >> +     }
> >> +
> >> +     mt9p031 = kzalloc(sizeof(struct mt9p031), GFP_KERNEL);
> >> +     if (!mt9p031)
> >> +             return -ENOMEM;
> >> +
> >> +     v4l2_i2c_subdev_init(&mt9p031->subdev, client,
> >> &mt9p031_subdev_ops); +
> >> +//       struct isp_device *isp =
> >> v4l2_dev_to_isp_device(subdev->v4l2_dev); +//       isp_set_xclk(isp,
> >> 16*1000*1000, ISP_XCLK_A);
> >> +
> >> +     mt9p031->rect.left      = 0/*MT9P031_COLUMN_SKIP*/;
> >> +     mt9p031->rect.top       = 0/*MT9P031_ROW_SKIP*/;
> >> +     mt9p031->rect.width     = MT9P031_MAX_WIDTH;
> >> +     mt9p031->rect.height    = MT9P031_MAX_HEIGHT;
> >> +
> >> +     switch (pdata->data_shift) {
> >> +     case 2:
> >> +             mt9p031->format.code = V4L2_MBUS_FMT_SGRBG8_1X8;
> >> +             break;
> >> +     case 1:
> >> +             mt9p031->format.code = V4L2_MBUS_FMT_SGRBG10_1X10;
> >> +             break;
> >> +     case 0:
> >> +             mt9p031->format.code = V4L2_MBUS_FMT_SBGGR12_1X12;
> >> +     }
> > 
> > Why ? The sensor produces 12-bit data, you shouldn't fake other data
> > widths.
> 
> Hi Laurent,
> I was fixing all the issues you have pointed out when I ran into this.
> 
> It is true that mt9p031 produces 12-bit data only. However, when
> connected to omap3isp it is possible to discard 4 least significant
> bits (i.e. changing V4L2_MBUS_FMT_SGRBG12_1X12 into
> V4L2_MBUS_FMT_SGRBG8_1X8).
> The point is, if I just force  "mt9p031->format.code =
> V4L2_MBUS_FMT_SGRBG12_1X12;" then the following test will fail:
> 
> ./media-ctl -r -l '"mt9p031 2-0048":0->"OMAP3 ISP CCDC":0[1], "OMAP3
> ISP CCDC":1->"OMAP3 ISP CCDC output":0[1]'
> ./media-ctl -f '"mt9p031 2-0048":0[SGRBG8 320x240], "OMAP3 ISP
> CCDC":1[SGRBG8 320x240]'
> Unable to set format: Invalid argument (-22) --->
> v4l2_subdev_set_format() fails which is quite logical since that
> format is now not defined in mt9p031.c
>
> And this test will fail too:
> ./media-ctl -r -l '"mt9p031 2-0048":0->"OMAP3 ISP CCDC":0[1], "OMAP3
> ISP CCDC":1->"OMAP3 ISP CCDC output":0[1]'
> ./media-ctl -f '"mt9p031 2-0048":0[SGRBG8 320x240], "OMAP3 ISP
> CCDC":1[SGRBG8 320x240]'
> ./yavta --stdout -f SGRBG8 -s 320x240 -n 4 --capture=100 --skip 3 -F
> `./media-ctl -e "OMAP3 ISP CCDC output"` | nc 192.168.0.42 3000
> Device /dev/video2 opened: OMAP3 ISP CCDC output (media).
> Video format set: width: 320 height: 240 buffer size: 76800
> Video format: GRBG (47425247) 320x240
> 4 buffers requested.
> length: 76800 offset: 0
> Buffer 0 mapped at address 0x40133000.
> length: 76800 offset: 77824
> Buffer 1 mapped at address 0x401e3000.
> length: 76800 offset: 155648
> Buffer 2 mapped at address 0x4021e000.
> length: 76800 offset: 233472
> Buffer 3 mapped at address 0x40368000.
> Unable to start streaming: 22. ---> ioctl(VIDIOC_STREAMON) fails
> 
> What is the clean way of doing this?

Please try replacing the media-ctl -f line with

./media-ctl -f '"mt9p031 2-0048":0[SGRBG12 320x240], \
	"OMAP3 ISP CCDC":0[SGRBG8 320x240], \
	"OMAP3 ISP CCDC":1[SGRBG8 320x240]'

-- 
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


[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