Re: [Query] OV5640 DVP and BT656 modes

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

 



Hi Laurent,

On Tue, Jul 28, 2020 at 8:55 PM Laurent Pinchart
<laurent.pinchart@xxxxxxxxxxxxxxxx> wrote:
>
> Hi Prabhakar,
>
> On Tue, Jul 28, 2020 at 08:04:39PM +0100, Lad, Prabhakar wrote:
> > On Tue, Jul 28, 2020 at 7:43 PM Laurent Pinchart wrote:
> > > On Tue, Jul 28, 2020 at 06:50:21PM +0100, Lad, Prabhakar wrote:
> > > > Hi,
> > > >
> > > > I am currently investigating adding support for the BT656 format which
> > > > is currently missing in the driver.
> > > >
> > > > The platform which I am currently testing can support both 8-bit DVP
> > > > and BT656 modes.
> > > > * Testing DVP mode capturing 320x240, 640x480 worked  OK with random
> > > > green lines in-between
> > > >
> > > > Following is the chunk of code which enables BT656 support,  (for
> > > > BT656 mode ov5640_set_dvp_pclk() is used), with the below changes I
> > > > can get 640x480 working
> > > >
> > > > #define OV5640_REG_CCIR656_CTRL00    0x4730
> > > >
> > > > static int ov5640_set_stream_bt656(struct ov5640_dev *sensor, bool on)
> > > > {
> > > >     int ret;
> > > >
> > > >     ret = ov5640_write_reg(sensor,
> > > >                    OV5640_REG_IO_MIPI_CTRL00, on ? 0x18: 0);
> > > >     if (ret)
> > > >         return ret;
> > > >
> > > >     ret = ov5640_write_reg(sensor,
> > > >                    OV5640_REG_PAD_OUTPUT_ENABLE01, 0x7f);
> > > >     if (ret)
> > > >         return ret;
> > > >
> > > >     ret = ov5640_write_reg(sensor,
> > > >                    OV5640_REG_PAD_OUTPUT_ENABLE02, 0xfc);
> > > >     if (ret)
> > > >         return ret;
> > > >
> > > >     return ov5640_write_reg(sensor,
> > > >                 OV5640_REG_CCIR656_CTRL00, on ? 0x1: 0x0);
> > > > }
> > > >
> > > > As soon as I change the code to below to disable the data pads on
> > > > stream OFF as below it stops working!
>
> What stops working ? BT.656, non-BT.656, or both ? And how exactly does
> it stop working ? The change below only affects the !on case, does the
> first capture succeed and the subsequent captures fail ?
>
Sorry for the confusion. I am mainly focusing on BT.656 atm, so with
the below (!on case) BT.6565 stops working. Using yavta to capture
single frames [1] the first run is OK and subsequent fails and its
similar behaviour with gstreamer pipeline [2] too.

[1] yavta /dev/video$1 -c1 -n3 -s640x480 -fUYVY -Fov.raw
[2] gst-launch-1.0 -emv v4l2src device=/dev/video$1 io-mode=dmabuf !
queue ! 'video/x-raw,format=UYVY,width=640,height=480,framerate=30/1'
! queue ! videoconvert ! queue ! fbdevsink sync=false

Cheers,
Prabhakar

> > > > static int ov5640_set_stream_bt656(struct ov5640_dev *sensor, bool on)
> > > > {
> > > >     int ret;
> > > >
> > > >     ret = ov5640_write_reg(sensor,
> > > >                    OV5640_REG_IO_MIPI_CTRL00, on ? 0x18: 0);
> > > >     if (ret)
> > > >         return ret;
> > > >
> > > >     ret = ov5640_write_reg(sensor,
> > > >                    OV5640_REG_PAD_OUTPUT_ENABLE01, on ? 0x7f, 0);
> > >
> > > s/,/:/ ? Is that a typo in your e-mail, or also in the code you've
> > > tested ? I assume the former as the latter shouldn't compile.
> >
> > My bad it's a typo :) as my code base had one which doesnt disable
> > data pads on stream off, so I mistyped while hand crafting it.
> >
> > > >     if (ret)
> > > >         return ret;
> > > >
> > > >     ret = ov5640_write_reg(sensor,
> > > >                    OV5640_REG_PAD_OUTPUT_ENABLE02, on ? 0xfc, 0);
> > > >     if (ret)
> > > >         return ret;
> > > >
> > > >     return ov5640_write_reg(sensor,
> > > >                 OV5640_REG_CCIR656_CTRL00, on ? 0x1: 0x0);
> > > > }
> > > >
> > > > Looking at the datasheet [1] I don't find it wrong or is there any
> > > > information missing in this freely available datasheet.
> > > >
> > > > Ideally BT656 mode should just work in DVP mode by setting 0x1 in
> > > > 0x4730, but doesn work.
> > > >
> > > > Is there anything  I'm missing here, any thoughts ?
> > > >
> > > > [1] https://cdn.sparkfun.com/datasheets/Sensors/LightImaging/OV5640_datasheet.pdf
>
> --
> Regards,
>
> Laurent Pinchart



[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