AnsweredAssumed Answered

TVP5150  on IMX6Q

Question asked by donghua ge on Jul 31, 2013
Latest reply on Aug 1, 2013 by Kamil Lulko

Hi

I try to modify tvp5150.c for i.mx6 board.The input is PAL video source.

 

The serial port print the message as follow.

TVP5150 io_init

tvp5150_probe:tvp5150 probe i2c address is 0x5D

TVP5150 Chip version = 0x04

   type is 2 (expect 2)

   num ioctls is 13

In MVC: mxc_v4l2_master_attach

   slave.name = tvp5150

   master.name = mxc_v4l2_cap1

sdata->csi = 0

cam->csi = 1

tvp5150  mxc_v4l2_master_attach: csi doesn't match

In MVC: mxc_v4l2_master_attach

   slave.name = tvp5150

   master.name = mxc_v4l2_cap0

sdata->csi = 0

cam->csi = 0

tvp5150  mxc_v4l2_master_attach: csi does match

tvp5150  mxc_v4l2_master_attach  type is 2

PAL video source.

tvp5150  mxc_v4l2_master_attach  attach___attach___attach

tvp5150  v4l2_int_device_register succeed.

mxc_v4l2_output mxc_v4l2_output.0: V4L2 device registered as video16

mxc_v4l2_output mxc_v4l2_output.0: V4L2 device registered as video17

 

 

 

 

When I execute the test command ./mxc_v4l2_tvin.out   -ow 720 -oh 480 -ol 10 -ot 20 -f YU12 in linux.

It occurs the errors as follow and can't display  on screen.

 

 

 

root@freescale /unit_tests$

< 160 -oh 160 -ot 20 -ol 20 -r 0 -t 50 -d 0 -fg -fr 30                      

start_________start_________start_________start_________start_________start_________start

tvp5150 mxc_v4l_open  type is 2 (expect 2)

end___________end___________end___________end___________end___________end___________end

PAL video source.

success________success_________success_________success_________success_________success_________success

tvp5150   do_ioctl___do_ioctl___do_ioctl___do_ioctl

tvp5150   do_ioctl___do_ioctl___do_ioctl___do_ioctl

TV decoder chip is tvp5150tvp5150   do_ioctl___do_ioctl___do_ioctl___do_ioctl

 

 

PAL video source.

tvp5150   do_ioctl___do_ioctl___do_ioctl___do_ioctl

In mxc_v4l2_s_std ff

tvp5150   do_ioctl___do_ioctl___do_ioctl___do_ioctl

tvp5150   do_ioctl___do_ioctl___do_ioctl___do_ioctl

PAL video source.

imx-ipuv3 imx-ipuv3.0: Unsupported CCIR656 interlaced video mode

tvp5150   do_ioctl___do_ioctl___do_ioctl___do_ioctl

tvp5150   do_ioctl___do_ioctl___do_ioctl___do_ioctl

tvp5150   do_ioctl___do_ioctl___do_ioctl___do_ioctl

VIDIOC_G_FMT failed

tvp5150   do_ioctl___do_ioctl___do_ioctl___do_ioctl

driver=mxc_vout, card=DISP3 FG, bmxc_v4l2_output mxc_v4l2_output.0: Enable deinterlace BT.

us=, version=0x00000000, capabilities=0x04000002

fmt RGB565: fourcc = 0x50424752

fmt BGR24: fourcc = 0x33524742

fmt RGB24: fourcc = 0x33424752

fmt RGB32: fourcc = 0x34424752

fmt BGR32: foutvp5150   do_ioctl___do_ioctl___do_ioctl___do_ioctl

rcc = 0x34524742

fmt NV12: fourctvp5150   do_ioctl___do_ioctl___do_ioctl___do_ioctl

c = 0x3231564e

fmt UYVY: fourcc tvp5150   do_ioctl___do_ioctl___do_ioctl___do_ioctl

= 0x59565955

fmt YUYV: fourcc = tvp5150   do_ioctl___do_ioctl___do_ioctl___do_ioctl

0x56595559

fmt YUV422 planar: fotvp5150   do_ioctl___do_ioctl___do_ioctl___do_ioctl

urcc = 0x50323234

fmt YUV444: fotvp5150   do_ioctl___do_ioctl___do_ioctl___do_ioctl

urcc = 0x34343459

fmt YUV420: fotvp5150   do_ioctl___do_ioctl___do_ioctl___do_ioctl

urcc = 0x32315559

fmt TILED NV12PAL video source.

P: fourcc = 0x50564e54

fmt TILEDtvp5150   do_ioctl___do_ioctl___do_ioctl___do_ioctl

NV12F: fourcc = 0x46564e54

fmt YUV444 planar: fourcc = 0x50343434

start time = 330 s, 691641 us

ERROR: v4l2 capture: mxc_v4l_dqueue timeout enc_counter 0

tvp5150   do_ioctl___do_ioctl___do_ioctl___do_ioctl

VIDIOC_DQBUF failed.

tvp5150   do_ioctl___do_ioctl___do_ioctl___do_ioctl

tvp5150   close___close___close___close

root@freescale /unit_tests$

 

 

The  ioctl_g_ifparm as follow:

 

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

{

  dev_dbg(&tvp5150_data.i2c_client->dev, "In tvp5150:ioctl_g_ifparm\n");

 

 

  if (s == NULL) {

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

  return -1;

  }

 

 

  /* Initialize structure to 0s then set any non-0 values. */

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

  p->if_type = V4L2_IF_TYPE_BT656; /* This is the only possibility. */

  p->u.bt656.mode = V4L2_IF_TYPE_BT656_MODE_NOBT_8BIT;

  p->u.bt656.nobt_hs_inv = 1;

  p->u.bt656.bt_sync_correct = 1;

 

 

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

 

 

  return 0;

}

 

 

Who can help to fix the problem?

Thanks.

Outcomes