[Query] OV5640 DVP and BT656 modes

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

 



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!

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

Cheers,
--Prabhakar



[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