Hello there.
I use kernel 3.10.53 with dart imx6.
I try to receive 576i interlaced pal over mipi csi, but can`t get any data received.
I always get ERROR: v4l2_capture : mxc_v4l_dqueue timeout enc_counter 0.
Data is sent to i.Mx6 from NVP6324 AHD/PAL video reciever.
This is the configuration of sensor struct. And ioctl_g_ifparm function for setting interlaced mode.
nvp6324_data.sen.streamcap.capability = 0; nvp6324_data.sen.streamcap.capturemode = 0; nvp6324_data.sen.pix.pixelformat = V4L2_PIX_FMT_UYVY; /* YUV422 */ nvp6324_data.std_id = V4L2_STD_ALL; nvp6324_data.sen.pix.width = 720; nvp6324_data.sen.pix.height = 576; nvp6324_data.sen.streamcap.timeperframe.denominator = 25; nvp6324_data.sen.streamcap.timeperframe.numerator = 1; nvp6324_data.sen.spix.top = 0; nvp6324_data.sen.spix.left = 0;
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.clock_curr = 0;//BT656 interlace clock mode 1 - prorgressive 0 - interlaced p->u.bt656.clock_max = 27000000; dev_info(&nvp6324_data.sen.i2c_client->dev, "nvp6324 interlaced ioctl_g_ifparm clock = %d\n" , p->u.bt656.clock_curr);
Here is the output from console.
nvp6324_mipi 0-0030: nvp6324 set power on
nvp6324_mipi 0-0030: ioctl_init
nvp6324_mipi 0-0030: ioctl_dev_init
nvp6324_mipi 0-0030: dphy status is: 300
nvp6324_mipi 0-0030: mipi csi2 error status is: 0
nvp6324_mipi 0-0030: Reg No Vid1: 0
nvp6324_mipi 0-0030: Reg No Vid2: 0
nvp6324_mipi 0-0030: Reg No Vid3: 0
nvp6324_mipi 0-0030: Reg No Vid4: 0
nvp6324_mipi 0-0030: Reg Agc lock1: 0
nvp6324_mipi 0-0030: Reg Agc lock2: 0
nvp6324_mipi 0-0030: Reg Agc lock3: 1
nvp6324_mipi 0-0030: Reg Agc lock4: 0
nvp6324_mipi 0-0030: Reg Clamp lock1: 0
nvp6324_mipi 0-0030: Reg Clamp lock2: 0
nvp6324_mipi 0-0030: Reg Clamp lock3: 1
nvp6324_mipi 0-0030: Reg Clamp lock4: 0
nvp6324_mipi 0-0030: Reg Hlock lock1: 0
nvp6324_mipi 0-0030: Reg Hlock lock2: 0
nvp6324_mipi 0-0030: Reg Hlock lock3: 1
nvp6324_mipi 0-0030: Reg Hlock lock4: 0
nvp6324_mipi 0-0030: nvp6324 ioctl_enum_framesizes w = 720 h = 625
nvp6324_mipi 0-0030: nvp6324 ioctl_g_parm
nvp6324_mipi 0-0030: nvp6324 V4L2_BUF_TYPE_VIDEO_CAPTURE ioctl_g_parm
nvp6324_mipi 0-0030: nvp6324 cparm->capability = 0 cparm->timeperframe.denominator = 25 cparm->timeperframe.numerator = 1 cparm->capturemode = 0
nvp6324_mipi 0-0030: nvp6324 ioctl_s_parm
nvp6324_mipi 0-0030: nvp6324 interlaced ioctl_g_ifparm clock = 0
nvp6324_mipi 0-0030: nvp6324 ioctl_g_fmt_cap
imx-ipuv3 2800000.ipu: CSI_SENS_CONF = 0x00000A30
imx-ipuv3 2800000.ipu: CSI_SENS_FRM_SIZE = 0x027002CF
imx-ipuv3 2800000.ipu: CSI_ACT_FRM_SIZE = 0x023F02CF
imx-ipuv3 2800000.ipu: CCSI_CCIR_CODE_1 = 0x01040596
imx-ipuv3 2800000.ipu: CSI_CCIR_CODE_1 = 0x000D07DF
imx-ipuv3 2800000.ipu: CSI_CCIR_CODE_1= 0x00FF0000
Pipeline is live and does not need PREROLL ...
Setting pipeline to PLAYING ...
0:00:05.352170334 210 0x124eac0 WARN bin gstbin.c:2395:gst_bin_do_latency_func:<pipeline0> did not really configure latency of 0:00:00.000000000
New clock: GstSystemClock
ERROR: v4l2 capture: mxc_v4l_dqueue timeout enc_counter 0
0:00:15.349449002 210 0x12436f0 ERROR mfw_v4lsrc mfw_gst_v4lsrc.c:1243:mfw_gst_v4lsrc_buffer_new: >>V4L_SRC: VIDIOC_DQBUF failed.
0:00:15.349714668 210 0x12436f0 WARN basesrc gstbasesrc.c:2625:gst_base_src_loop:<mfwgstv4lsrc0> error: Internal data flow error.
0:00:15.349829335 210 0x12436f0 WARN basesrc gstbasesrc.c:2625:gst_base_src_loop:<mfwgstv4lsrc0> error: streaming task paused, reason error (-5)
ERROR: from element /GstPipeline:pipeline0/MFWGstV4LSrc:mfwgstv4lsrc0: Internal data flow error.
Additional debug info:
gstbasesrc.c(2625): gst_base_src_loop (): /GstPipeline:pipeline0/MFWGstV4LSrc:mfwgstv4lsrc0:
streaming task paused, reason error (-5)
Execution ended after 9997886668 ns.
Setting pipeline to PAUSED ...
Setting pipeline to READY ...
^Cimx-ipuv3 2800000.ipu: CSI stop timeout - 5 * 10ms
Caught interrupt -- nvp6324_mipi 0-0030: nvp6324 set power off
Setting pipeline to NULL ...
Freeing pipeline ...
When i am in interlaced mode, i can cat /dev/video0 and i see data coming. So it seems like incoming data is skipped somewhere after.
If i configure input like progressive (p->u.bt656.clock_curr = 1) , i am able to get input data and able to process is with gstreamer , but there are like 2 frames in line. One fram at the top , and one frame at the bottom, divided in the middle. (Picture is attached).
I am struggling with this problem almost a week, tried kernel 4.1.15 and higher but no effect.
Hi theabyssover123
may be useful to look at application note
In general may be recommended to post it on vendor support portal https://www.variscite.com/support/
as this board was developed and supported by variscite.
Best regards
igor