AnsweredAssumed Answered

IMX6Q - YOCTO - TVP5150 Configuration?

Question asked by michael dale on May 13, 2014
Latest reply on Jan 24, 2017 by Arti Trivedi

Hello all,

 

I am currently trying to setup the IMX6Q sabresd board running the dora branch of the fsl yocto to work with a TVP5150 video decoder ic on CSI0. I have noticed a lot of places on the community where the chip is mentioned but have not come across any code examples/device settings. I have rewritten the OV5642 file to implement my new driver, set the chip to output BT656 (with embedded syncs) and that is fine the driver settings seem to be configured ok as well because running

 

./mxc_v4l2_tvin.out -ow 720 -oh 625 -ol 10 -ot 20 -f UYVY

 

works fine in the respect that nothing moans and i get a black window, but that is it no images, could someone please shed some light? I have attached a few debugs that may be helpful.

 

root@imx6qsabresd:/unit_tests#GST_DEBUG=*:3 ./mxc_v4l2_tvin.out -ow 720 -oh 625 -ol 10 -ot 20 -f UYVY

ioctl_g_ifparm!

ioctl_init!

ioctl_dev_init!

ioctl_g_chip_ident!

TV decoder chip is tvp5150_cameraioctl_g_parm!

 

ioctl_s_parm!

ioctl_g_ifparm!

driver=mxc_vout, card=DISP3 FG, bus=, version=0x00000000, capabilities=0x04000002

fmt RGB565: fourcc = 0x50424752

fmt BGR24: fourcc = 0x33524742

fmt RGB24: fourcc = 0x33424752

fmt RGB32: fourcc = 0x34424752

fmt BGR32: fourcc = 0x34524742

fmt NV12: fourcc = 0x3231564e

fmt UYVY: fourcc = 0x59565955

fmt YUYV: fourcc = 0x56595559

fmt YUV422 planar: fourcc = 0x50323234

fmt YUV444: fourcc = 0x34343459

fmt YUV420: fourcc = 0x32315559

fmt YVU420: fourcc = 0x32315659

fmt TILED NV12P: fourcc = 0x50564e54

fmt TILED NV12F: fourcc = 0x46564e54

fmt YUV444 planar: fourcc = 0x50343434

start time = 1399970894 s, 435077 us

 

 

root@imx6qsabresd:/unit_tests# GST_DEBUG=*:2 gst-launch mfw_v4lsrc ! mfw_v4lsink

MFW_GST_V4LSRC_PLUGIN 3.0.9 build on Apr 17 2014 10:51:15.w_v4lsrc ! mfw_v4lsink

ioctl_g_ifparm!

ioctl_init!

ioctl_dev_init!

ERROR: v4l2 capture: slave not found!

0:00:00.137862658  1151    0x6ece0 WARN   octl_g_ifparm!

m          mfw_v4lsink mfw_gst_v4lsink.c:303:mfw_gst_v4l2sink_query_support_formats: unrecognized format:[Y444]YUV444

MFW_GST_V4LSINK_PLUGIN 3.0.9 build on Apr 17 2014 10:51:05.

Setting pipeline to PAUSED ...

ioctl_init!

ioctl_dev_init!

ioctl_g_chip_ident!

ioctl_enum_framesizes!

ioctl_g_parm!

ioctl_s_parm!

ioctl_g_ifparm!

Pipeline is live and does not need PREROLL ...

Setting pipeline imx-ipuv3 imx-ipuv3.0: IPU Warning - IPU_INT_STAT_5 = 0x00000001

to PLAYING ...

0:00:00.258041658  1151    0x6ece0 WARN                     bin /home/michaeld/fsl-community-bsp/build/tmp/work/cortexa9hf-vfp-neon-poky-linux-gnueabi/gstreamer/0.10.36-r2/gstreamer-0.10.36/gst/gstbin.c:2399:gst_bin_do_latency_func:<pipeline0> failed to query latency

New clock: GstSystemClock

0:00:00.304081325  1151 0x2c302600 WARN                     bin /home/michaeld/fsl-community-bsp/build/tmp/work/cortexa9hf-vfp-neon-poky-linux-gnueabi/gstreamer/0.10.36-r2/gstreamer-0.10.36/gst/gstbin.c:2395:gst_bin_do_latency_func:<pipeline0> did not really configure latency of 0:00:00.000000000

full screen size:720x480

0:00:00.304748991  1151 0x2c302600 WARN             mfw_v4lsink mfw_gst_v4l.c:1516:mfw_gst_v4l2_display_init: Wrong display width information

0:00:00.304881991  1151 0x2c302600 WARN             mfw_v4lsink mfw_gst_v4l.c:1520:mfw_gst_v4l2_display_init: Wrong display height information

[V4L Update Display]: left=0, top=0, width=720, height=480

set v4l display crop sucessfully

set v4l rotate sucessfully

full screen size:720x480

0:00:00.305954325  1151    0x23c30 WARN             mfw_v4lsink mfw_gst_v4l.c:1516:mfw_gst_v4l2_display_init: Wrong display width information

0:00:00.306084325  1151    0x23c30 WARN             mfw_v4lsink mfw_gst_v4l.c:1520:mfw_gst_v4l2_display_init: Wrong display height information

>>V4L_SINK: Actually buffer status:

        hardware buffer : 12

        software buffer : 0

imx-ipuv3 imx-ipuv3.0: IPU Warning - IPU_INT_STAT_5 = 0x00000001

imx-ipuv3 imx-ipuv3.0: IPU Warning - IPU_INT_STAT_5 = 0x00000001

^CCaught interrupt -- handling interrupt.

Interrupt: Stopping pipeline ...

Execution ended after 2003870333 ns.

Setting pipeline to PAUSED ...

Running time 0:00:02.004623333 render fps 22.947

Setting pipeline to READY ...

Setting pipeline to NULL ...

Total rendered:46

 

 

static int ioctl_g_ifparm(struct v4l2_int_device *s, struct v4l2_ifparm *p)

{

    if (s == NULL) {

        printk("ERROR!! no slave device set!\n");

        return -1;

    }

    printk("ioctl_g_ifparm!\n");

 

    memset(p, 0, sizeof(*p));

    p->if_type = V4L2_IF_TYPE_BT656;

    p->u.bt656.frame_start_on_rising_vs = 1;

    p->u.bt656.swap = 0;

    p->u.bt656.nobt_hs_inv = 0;

    p->u.bt656.nobt_vs_inv = 0;

    p->u.bt656.mode = V4L2_IF_TYPE_BT656_MODE_BT_8BIT;

    p->u.bt656.clock_min = (27000000);

    p->u.bt656.clock_max = (27000000);

    p->u.bt656.nobt_hs_inv = 1;

    p->u.bt656.bt_sync_correct = 0;

 

    /* TVP5150 has a dedicated clock so no clock settings are needed */

    return 0;

}

 

part of probe function

 

    memset(&tvp5150_data, 0, sizeof(tvp5150_data));

    tvp5150_data.i2c_client = client;

    tvp5150_data.streamcap.timeperframe.denominator = DEFAULT_FPS;

    tvp5150_data.streamcap.timeperframe.numerator = 1;

    tvp5150_data.pix.width = 720;

    tvp5150_data.pix.height = 625;

    tvp5150_data.pix.pixelformat = V4L2_PIX_FMT_UYVY;

    tvp5150_data.pix.priv = 1;

    tvp5150_data.on = true;

 

 

part of dev init

 

    tvp5150_data.on = true;

    tvp5150_write_reg(0x02, 0x01);// powerdown

    tvp5150_write_reg(0x03, 0x0D);// all outputs enabled   

    tvp5150_write_reg(0x04, 0x00);// autoswitch all formats

    tvp5150_write_reg(0x0d, 0x47);// bt656 mode with embedded syncs

    tvp5150_write_reg(0x02, 0x04);// powerup

 

 

thanks,

 

Michael Dale

Outcomes