CSI Parallel Capture problems on a i.MX6 DualLite

cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

CSI Parallel Capture problems on a i.MX6 DualLite

1,618 Views
pantelisantonio
Contributor I

Hello,

I am facing problems getting input on a CSI1 connected HDMI receiver which is using parallel mode capture.

Register contents seem fine, and everything is setup correctly but I get the dreaded

"ERROR: v4l2 capture: mxc_v4l_dqueue timeout enc_counter 0" message and no EOF interrupt at-all.

I have tried everything, including moving to embedded sync, reversing polarities, hooking the DATA_EN via SION to

always enabled etc. Clocks, HSYNC, VSYNC and DATA_EN seem to be fine, and turning the muxing into GPIO inputs

and measuring report the values programmed in the HDMI receiver. I am including register dumps and dmesg output.

Kernel version tried are imx_3.14.28 and boundary-imx_3.14.38_6qp_beta-cec

Is there a way to debug problems like that? I.e. is there a way to instrument in the IPU to report number of HSYNCs,VSYNCs

counted, or any other kind of debugging capabilities?

If I had to guess there might be a problem with the clocks or the muxing but I can't find anything wrong.

pinmuxing in DT:

MX6QDL_PAD_EIM_D28__IPU1_CSI1_DATA12    0xb0b1          /* CCIRB_0 */

MX6QDL_PAD_EIM_D27__IPU1_CSI1_DATA13    0xb0b1          /* CCIRB_1 */

MX6QDL_PAD_EIM_D26__IPU1_CSI1_DATA14    0xb0b1          /* CCIRB_2 */

MX6QDL_PAD_EIM_D20__IPU1_CSI1_DATA15    0xb0b1          /* CCIRB_3 */

MX6QDL_PAD_EIM_D19__IPU1_CSI1_DATA16    0xb0b1          /* CCIRB_4 */

MX6QDL_PAD_EIM_D18__IPU1_CSI1_DATA17    0xb0b1          /* CCIRB_5 */

MX6QDL_PAD_EIM_D16__IPU1_CSI1_DATA18    0xb0b1          /* CCIRB_6 */

MX6QDL_PAD_EIM_EB2__IPU1_CSI1_DATA19    0xb0b1          /* CCIRB_7 */

MX6QDL_PAD_EIM_D29__IPU1_CSI1_VSYNC     0xb0b1          /* CCIRB_VSYNC */

MX6QDL_PAD_EIM_EB3__IPU1_CSI1_HSYNC     0xb0b1          /* CCIRB_HSYNC */

MX6QDL_PAD_EIM_D17__IPU1_CSI1_PIXCLK    0xb0b1          /* CCIRB_CLK */

MX6QDL_PAD_EIM_D23__IPU1_CSI1_DATA_EN   0xb0b1          /* CCIRB_DE */

dmesg dump:

mxc_v4l_open: Mxc Camera ipu0/csi1

mxc_cam_select_input: input(1) CSI MEM

ep9555e 2-003c: ep9555e:ioctl_g_ifparm

   clock_curr=mclk=24000000

vsync_pol(0) hsync_pol(0) ext_vsync(1)

ep9555e 2-003c: ep9555e:ioctl_g_fmt_cap

ep9555e 2-003c:    Returning size of 720x480

   g_fmt_cap returns widthxheight of input as 720 x 480

On Open: Input to ipu size is 720 x 480

End of setup_ifparm: v2f pix widthxheight 720 x 480

End of setup_ifparm: crop_bounds widthxheight 720 x 480

End of setup_ifparm: crop_defrect widthxheight 720 x 480

End of setup_ifparm: crop_current widthxheight 720 x 480

ep9555e 2-003c: ep9555e:ioctl_g_fmt_cap

ioctl_g_fmt_cap: left=0, top=0, 720x480

imx-ipuv3 2400000.ipu: drivers/mxc/ipu3/ipu_capture.c:87 @ipu_csi_init_interface: CSI1_SENS_CONF=0x04008a00

imx-ipuv3 2400000.ipu: drivers/mxc/ipu3/ipu_capture.c:141 @ipu_csi_init_interface: CSI1_SENS_CONF=0x00008a00

imx-ipuv3 2400000.ipu: ipu_csi_init_interface: 720x480

imx-ipuv3 2400000.ipu: CSI_SENS_CONF = 0x00008A00

imx-ipuv3 2400000.ipu: CSI_ACT_FRM_SIZE = 0x01DF02CF

ep9555e 2-003c: ep9555e:ioctl_s_power

ep9555e 2-003c: ep9555e: ioctl_s_power: POWER on

ep9555e 2-003c: In ep9555e:ioctl_init

ep9555e 2-003c: ep9555e:ioctl_dev_init

mxc_v4l_ioctl

mxc_v4l_do_ioctl: c02c5651 ipu0/csi1

mxc_v4l_ioctl

mxc_v4l_do_ioctl: c02c564a ipu0/csi1

mxc_v4l_ioctl

mxc_v4l_do_ioctl: c0405602 ipu0/csi1

mxc_v4l_ioctl

mxc_v4l_do_ioctl: c0405602 ipu0/csi1

mxc_v4l_ioctl

mxc_v4l_do_ioctl: c0cc5616 ipu0/csi1

   case VIDIOC_S_PARM

mxc_v4l2_s_param

ep9555e 2-003c: In ep9555e:ioctl_g_parm

ep9555e 2-003c:    type is V4L2_BUF_TYPE_VIDEO_CAPTURE

   Current capabilities are 1

   Current capturemode is 0  change to 0

   Current framerate is 30  change to 30

ep9555e 2-003c: In ep9555e:ioctl_s_parm

ep9555e 2-003c: ep9555e:ioctl_g_ifparm

   clock_curr=mclk=24000000

vsync_pol(0) hsync_pol(0) ext_vsync(1)

ep9555e 2-003c: ep9555e:ioctl_g_fmt_cap

ep9555e 2-003c:    Returning size of 720x480

   g_fmt_cap returns widthxheight of input as 720 x 480

ep9555e 2-003c: ep9555e:ioctl_g_fmt_cap

ioctl_g_fmt_cap: left=0, top=0, 720x480

imx-ipuv3 2400000.ipu: drivers/mxc/ipu3/ipu_capture.c:87 @ipu_csi_init_interface: CSI1_SENS_CONF=0x00008a00

imx-ipuv3 2400000.ipu: drivers/mxc/ipu3/ipu_capture.c:141 @ipu_csi_init_interface: CSI1_SENS_CONF=0x00008a00

imx-ipuv3 2400000.ipu: ipu_csi_init_interface: 720x480

imx-ipuv3 2400000.ipu: CSI_SENS_CONF = 0x00008A00

imx-ipuv3 2400000.ipu: CSI_ACT_FRM_SIZE = 0x01DF02CF

mxc_v4l_ioctl

mxc_v4l_do_ioctl: c0045627 ipu0/csi1

   case VIDIOC_S_INPUT(1)

mxc_v4l_ioctl

mxc_v4l_do_ioctl: c014563b ipu0/csi1

   case VIDIOC_G_CROP

mxc_v4l_ioctl

mxc_v4l_do_ioctl: 4014563c ipu0/csi1

   case VIDIOC_S_CROP

   Cropping Input to ipu size 720 x 480

mxc_v4l_ioctl

mxc_v4l_do_ioctl: c0cc5605 ipu0/csi1

   case VIDIOC_S_FMT

mxc_v4l2_s_fmt: 720x480, type=1

   type=V4L2_BUF_TYPE_VIDEO_CAPTURE

End of mxc_v4l2_s_fmt: v2f pix widthxheight 720 x 480

End of mxc_v4l2_s_fmt: crop_bounds widthxheight 720 x 480

End of mxc_v4l2_s_fmt: crop_defrect widthxheight 720 x 480

End of mxc_v4l2_s_fmt: crop_current widthxheight 720 x 480

mxc_v4l_ioctl

mxc_v4l_do_ioctl: c008561c ipu0/csi1

   case VIDIOC_S_CTRL

mxc_v4l2_s_ctrl

mxc_v4l_ioctl

mxc_v4l_do_ioctl: c0145608 ipu0/csi1

   case VIDIOC_REQBUFS

mxc_streamoff: ipu0/csi1 capture_on=0 CSI MEM

mxc_free_frame_buf

mxc_allocate_frame_buf: size=518400

mxc_v4l_ioctl

mxc_v4l_do_ioctl: c0cc5604 ipu0/csi1

   case VIDIOC_G_FMT

mxc_v4l2_g_fmt: type=1

   type is V4L2_BUF_TYPE_VIDEO_CAPTURE

End of mxc_v4l2_g_fmt: v2f pix widthxheight 720 x 480

End of mxc_v4l2_g_fmt: crop_bounds widthxheight 720 x 480

End of mxc_v4l2_g_fmt: crop_defrect widthxheight 720 x 480

End of mxc_v4l2_g_fmt: crop_current widthxheight 720 x 480

mxc_v4l_ioctl

mxc_v4l_do_ioctl: c0445609 ipu0/csi1

   case VIDIOC_QUERYBUF

mxc_v4l2_buffer_status

mxc_mmap:pgoff=0x48e00, start=0x76dd6000, end=0x76e55000

mxc_v4l_ioctl

mxc_v4l_do_ioctl: c0445609 ipu0/csi1

   case VIDIOC_QUERYBUF

mxc_v4l2_buffer_status

mxc_mmap:pgoff=0x48e80, start=0x76d57000, end=0x76dd6000

mxc_v4l_ioctl

mxc_v4l_do_ioctl: c0445609 ipu0/csi1

   case VIDIOC_QUERYBUF

mxc_v4l2_buffer_status

mxc_mmap:pgoff=0x48f00, start=0x76cd8000, end=0x76d57000

mxc_v4l_ioctl

mxc_v4l_do_ioctl: c044560f ipu0/csi1

   case VIDIOC_QBUF, length=0

mxc_v4l_ioctl

mxc_v4l_do_ioctl: c044560f ipu0/csi1

   case VIDIOC_QBUF, length=0

mxc_v4l_ioctl

mxc_v4l_do_ioctl: c044560f ipu0/csi1

   case VIDIOC_QBUF, length=0

mxc_v4l_ioctl

mxc_v4l_do_ioctl: 40045612 ipu0/csi1

   case VIDIOC_STREAMON

mxc_streamon

imx-ipuv3 2400000.ipu: init channel = 16

imx-ipuv3 2400000.ipu: init channel = 16

imx-ipuv3 2400000.ipu: drivers/mxc/ipu3/ipu_common.c:808 @ipu_init_channel: CSI1_SENS_CONF=0x00008a00

imx-ipuv3 2400000.ipu: _ipu_csi_init: in CSI_SENS_CONF = 0x00008A00

imx-ipuv3 2400000.ipu: _ipu_csi_init:CSI_SENS_CONF: ipu=80951558,csi=1,data=4008a00, channel=10ffffc1

imx-ipuv3 2400000.ipu: drivers/mxc/ipu3/ipu_capture.c:843 @_ipu_csi_init: CSI1_SENS_CONF=0x04008a00

imx-ipuv3 2400000.ipu: initializing idma ch 1 @ c08c0040

imx-ipuv3 2400000.ipu: ch 1 word 0 - 00000000 2A300000 000D2F00 E0000000 00077C59

imx-ipuv3 2400000.ipu: ch 1 word 1 - 08080000 01010000 0047C000 0000B3C0 00000167

imx-ipuv3 2400000.ipu: PFS 0x2,

imx-ipuv3 2400000.ipu: BPP 0x0,

imx-ipuv3 2400000.ipu: NPB 0x1f

imx-ipuv3 2400000.ipu: FW 719,

imx-ipuv3 2400000.ipu: FH 479,

imx-ipuv3 2400000.ipu: EBA0 0x40400000

imx-ipuv3 2400000.ipu: EBA1 0x40400000

imx-ipuv3 2400000.ipu: Stride 719

imx-ipuv3 2400000.ipu: scan_order 0

imx-ipuv3 2400000.ipu: uv_stride 359

imx-ipuv3 2400000.ipu: u_offset 0x54600

imx-ipuv3 2400000.ipu: v_offset 0x69780

imx-ipuv3 2400000.ipu: Width0 0+1,

imx-ipuv3 2400000.ipu: Width1 0+1,

imx-ipuv3 2400000.ipu: Width2 0+1,

imx-ipuv3 2400000.ipu: Width3 0+1,

imx-ipuv3 2400000.ipu: Offset0 7,

imx-ipuv3 2400000.ipu: Offset1 11,

imx-ipuv3 2400000.ipu: Offset2 0,

imx-ipuv3 2400000.ipu: Offset3 0

eba 48e00000

eba 48e80000

mxc_v4l_ioctl

mxc_v4l_do_ioctl: c0445611 ipu0/csi1

   case VIDIOC_DQBUF

mxc_v4l_dqueue

ERROR: v4l2 capture: mxc_v4l_dqueue() interrupt received

mxc_v4l_ioctl

mxc_v4l_do_ioctl: c0445611 ipu0/csi1

   case VIDIOC_DQBUF

mxc_v4l_dqueue

ERROR: v4l2 capture: mxc_v4l_dqueue timeout enc_counter 0

mxc_v4l_ioctl

mxc_v4l_do_ioctl: c044560f ipu0/csi1

   case VIDIOC_QBUF, length=0

ERROR: v4l2 capture: VIDIOC_QBUF: buffer already queued

mxc_v4l_ioctl

mxc_v4l_do_ioctl: 40045613 ipu0/csi1

   case VIDIOC_STREAMOFF

mxc_streamoff: ipu0/csi1 capture_on=1 CSI MEM

imx-ipuv3 2400000.ipu: CSI stop timeout - 5 * 10ms

mxc_free_frames

mxc_v4l_close

mxc_streamoff: ipu0/csi1 capture_on=0 CSI MEM

mxc_v4l_close: release resource

mxc_free_frame_buf

mxc_free_frames

power_down_callback: ipu0/csi1

ep9555e 2-003c: ep9555e:ioctl_s_power

ep9555e 2-003c: ep9555e: ioctl_s_power: POWER off

mxc_sdc_fb fb.18: blank = 1

imx-ipuv3 2400000.ipu: DC stop timeout - 0 * 10ms

imx-ipuv3 2400000.ipu: ipu busfreq high release.

Register dump:

0x20E0174: IOMUXC_SW_MUX_CTL_PAD_EIM_DATA28         0x00000003

0x20E0544: IOMUXC_SW_PAD_CTL_PAD_EIM_DATA28         0x0000b0b1

0x20E0890: IOMUXC_IPU1_SENS1_DATA12_SELECT_INPUT    0x00000001

0x20E0170: IOMUXC_SW_MUX_CTL_PAD_EIM_DATA27         0x00000003

0x20E0540: IOMUXC_SW_PAD_CTL_PAD_EIM_DATA27         0x0000b0b1

0x20E0894: IOMUXC_IPU1_SENS1_DATA13_SELECT_INPUT    0x00000001

0x20E016C: IOMUXC_SW_MUX_CTL_PAD_EIM_DATA26         0x00000003

0x20E053C: IOMUXC_SW_PAD_CTL_PAD_EIM_DATA26         0x0000b0b1

0x20E0898: IOMUXC_IPU1_SENS1_DATA14_SELECT_INPUT    0x00000001

0x20E0154: IOMUXC_SW_MUX_CTL_PAD_EIM_DATA20         0x00000003

0x20E0524: IOMUXC_SW_PAD_CTL_PAD_EIM_DATA20         0x0000b0b1

0x20E089C: IOMUXC_IPU1_SENS1_DATA15_SELECT_INPUT    0x00000001

0x20E0150: IOMUXC_SW_MUX_CTL_PAD_EIM_DATA19         0x00000003

0x20E0520: IOMUXC_SW_PAD_CTL_PAD_EIM_DATA19         0x0000b0b1

0x20E08A0: IOMUXC_IPU1_SENS1_DATA16_SELECT_INPUT    0x00000001

0x20E014C: IOMUXC_SW_MUX_CTL_PAD_EIM_DATA18         0x00000003

0x20E051C: IOMUXC_SW_PAD_CTL_PAD_EIM_DATA18         0x0000b0b1

0x20E08A4: IOMUXC_IPU1_SENS1_DATA17_SELECT_INPUT    0x00000001

0x20E014C: IOMUXC_SW_MUX_CTL_PAD_EIM_DATA18         0x00000003

0x20E051C: IOMUXC_SW_PAD_CTL_PAD_EIM_DATA18         0x0000b0b1

0x20E08A8: IOMUXC_IPU1_SENS1_DATA18_SELECT_INPUT    0x00000001

0x20E01CC: IOMUXC_SW_MUX_CTL_PAD_EIM_EB2_B          0x00000003

0x20E059C: IOMUXC_SW_PAD_CTL_PAD_EIM_EB2_B          0x0000b0b1

0x20E08AC: IOMUXC_IPU1_SENS1_DATA19_SELECT_INPUT    0x00000001

0x20E0160: IOMUXC_SW_MUX_CTL_PAD_EIM_DATA23         0x00000004

0x20E0530: IOMUXC_SW_PAD_CTL_PAD_EIM_DATA23         0x0000b0b1

0x20E08B0: IOMUXC_IPU1_SENS1_DATA_EN_SELECT_INPUT   0x00000000

0x20E01D0: IOMUXC_SW_MUX_CTL_PAD_EIM_EB3_B          0x00000004

0x20E05A0: IOMUXC_SW_PAD_CTL_PAD_EIM_EB3_B          0x0000b0b1

0x20E08B4: IOMUXC_IPU1_SENS1_HSYNC_SELECT_INPUT     0x00000001

0x20E0148: IOMUXC_SW_MUX_CTL_PAD_EIM_DATA17         0x00000003

0x20E0518: IOMUXC_SW_PAD_CTL_PAD_EIM_DATA17         0x0000b0b1

0x20E08B8: IOMUXC_IPU1_SENS1_PIX_CLK_SELECT_INPUT   0x00000001

0x20E0178: IOMUXC_SW_MUX_CTL_PAD_EIM_DATA29         0x00000006

0x20E0548: IOMUXC_SW_PAD_CTL_PAD_EIM_DATA29         0x0000b0b1

0x20E08BC: IOMUXC_IPU1_SENS1_VSYNC_SELECT_INPUT     0x00000000

0x2600000: IPU_CONF                                 0x00000762

0x2600004: IPU_SISG_CTRL0                           0x00000000

0x2600008: IPU_SISG_CTRL1                           0x00000000

0x260003C: IPU_INT_CTRL_1                           0x80000002

0x2600040: IPU_INT_CTRL_2                           0x00080000

0x2600044: IPU_INT_CTRL_3                           0x00000000

0x2600048: IPU_INT_CTRL_4                           0x00000000

0x260004C: IPU_INT_CTRL_5                           0xbffeff2f

0x2600050: IPU_INT_CTRL_6                           0x001fff02

0x2600054: IPU_INT_CTRL_7                           0x00000000

0x2600058: IPU_INT_CTRL_8                           0x00000000

0x260005C: IPU_INT_CTRL_9                           0xdc000001

0x2600060: IPU_INT_CTRL_10                          0x777f000f

0x2600064: IPU_INT_CTRL_11                          0x00000000

0x2600068: IPU_INT_CTRL_12                          0x00000000

0x260006C: IPU_INT_CTRL_13                          0x00000000

0x2600070: IPU_INT_CTRL_14                          0x00000000

0x2600074: IPU_INT_CTRL_15                          0x00000000

0x2600078: IPU_SDMA_EVENT_1                         0x00000000

0x260007C: IPU_SDMA_EVENT_2                         0x00000000

0x2600080: IPU_SDMA_EVENT_3                         0x00000000

0x2600084: IPU_SDMA_EVENT_4                         0x00000000

0x2600088: IPU_SDMA_EVENT_7                         0x00000000

0x260008C: IPU_SDMA_EVENT_8                         0x00000000

0x2600090: IPU_SDMA_EVENT_11                        0x00000000

0x2600094: IPU_SDMA_EVENT_12                        0x00000000

0x2600098: IPU_SDMA_EVENT_13                        0x00000000

0x260009C: IPU_SDMA_EVENT_14                        0x00000000

0x2600200: IPU_INT_STAT_1                           0x00800000

0x2600204: IPU_INT_STAT_2                           0x00000000

0x2600208: IPU_INT_STAT_3                           0x00800000

0x260020C: IPU_INT_STAT_4                           0x00000000

0x2600210: IPU_INT_STAT_5                           0x00000000

0x2600214: IPU_INT_STAT_6                           0x00000000

0x2600218: IPU_INT_STAT_7                           0x00800000

0x260021C: IPU_INT_STAT_8                           0x00000000

0x2600220: IPU_INT_STAT_9                           0x00000000

0x2600224: IPU_INT_STAT_10                          0x00000000

0x2600228: IPU_INT_STAT_11                          0x00000000

0x260022C: IPU_INT_STAT_12                          0x00000000

0x2600230: IPU_INT_STAT_13                          0x00800000

0x2600234: IPU_INT_STAT_14                          0x00000000

0x2600238: IPU_INT_STAT_15                          0x01bf400c

0x260023C: IPU_CUR_BUF_0                            0x00000002

0x2600240: IPU_CUR_BUF_1                            0x00000000

0x2600244: IPU_ALT_CUR_BUF_0                        0x00000000

0x2600248: IPU_ALT_CUR_BUF_1                        0x00000000

0x2638000: IPU_CSI1_SENS_CONF                       0x04008a00

0x2638004: IPU_CSI1_SENS_FRM_SIZE                   0x01df02cf

0x2638008: IPU_CSI1_ACT_FRM_SIZE                    0x01df02cf

0x263800C: IPU_CSI1_OUT_FRM_CTRL                    0x00000000

0x2638010: IPU_CSI1_TST_CTRL                        0x00000000

0x2638014: IPU_CSI1_CCIR_CODE_1                     0x00040030

0x2638018: IPU_CSI1_CCIR_CODE_2                     0x00000000

0x263801C: IPU_CSI1_CCIR_CODE_3                     0x00ff0000

0x26000A8: IPU_FS_PROC_FLOW1                        0x00000000

0x26000AC: IPU_FS_PROC_FLOW2                        0x00000000

0x26000B0: IPU_FS_PROC_FLOW3                        0x00000000

0x20E0034: IOMUXC_GPR13                             0x00000024

Labels (2)
0 Kudos
2 Replies

590 Views
Yuri
NXP Employee
NXP Employee

Hello,

  Please try CSIx_SENS_DATA_FORMAT = 011 (Bayer or Generic data).


Also, looks like, in Your case CSI0_SENS_PRTCL = 0 (Gated clock mode).

Please check, using i.MX6 S/DL Datasheet(s), in particular section 4.11.10.2.2
(Gated Clock Mode) of IMX6SDLCEC (Rev. 5, 06/2015) – if Your timings are correct.

http://cache.freescale.com/files/32bit/doc/data_sheet/IMX6SDLCEC.pdf 


Have a great day,
Yuri

-----------------------------------------------------------------------------------------------------------------------
Note: If this post answers your question, please click the Correct Answer button. Thank you!
-----------------------------------------------------------------------------------------------------------------------

0 Kudos

590 Views
pantelisantonio
Contributor I

Hi Yuri,

I'm at ELCE right now, so I can't test right now but I think I have tried everything, besides the CSIx_SENS_DATA_FORMAT one since the format is YUV.

I'll try them when I'm back.

Thanks for the help.

0 Kudos