Re: [Query] OV5640 DVP and BT656 modes

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

 



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 ?

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