Hi, 2015-01-08 17:53 GMT+01:00 Jean-Michel Hautbois <jean-michel.hautbois@xxxxxxxxxxx>: > Hi, > > I have modified both Steve's and Philipp's code, in order to get > something able to get frames from an ADV7611. > Right now, I am back to Philipp's base of code, rebased on top of > media-tree, and everything works fine, except the very last link > between SFMC and IDMAC (using media controller). > Here is a status. > > The code is here : > https://github.com/Vodalys/linux-2.6-imx/tree/media-tree-zabel Right now, I can go further. I added support for BT.1120 in order to get the correct video format, and I am able to start a streaming, but I can't get an interrupt on IDMAC. I am starting with setting DV timings on adv7611 input, and then, I am using 4l2-compliance in order to test streaming. It has shown several things, most of them are corrected, sometimes in a hacky way. Right now, I can do the following : $> media-ctl --set-dv '"adv7611 1-004c":1 [fmt:YUYV/1280x720]' && media-ctl --set-v4l2 '"adv7611 1-004c":1 [fmt:YUYV/1280x720]' $> echo -n 'module imx_ipuv3_csi +p' > /sys/kernel/debug/dynamic_debug/control $> v4l2-compliance -v -s Driver Info: Driver name : imx-ipuv3-csi Card type : imx-ipuv3-camera Bus info : platform:imx-ipuv3-csi Driver version: 3.19.0 Capabilities : 0x84200001 Video Capture Streaming Extended Pix Format Device Capabilities Device Caps : 0x04200001 Video Capture Streaming Extended Pix Format Compliance test for device /dev/video0 (not using libv4l2): Required ioctls: test VIDIOC_QUERYCAP: OK Allow for multiple opens: test second video open: OK test VIDIOC_QUERYCAP: OK test VIDIOC_G/S_PRIORITY: OK Debug ioctls: test VIDIOC_DBG_G/S_REGISTER: OK test VIDIOC_LOG_STATUS: OK Input ioctls: test VIDIOC_G/S_TUNER/ENUM_FREQ_BANDS: OK (Not Supported) test VIDIOC_G/S_FREQUENCY: OK (Not Supported) test VIDIOC_S_HW_FREQ_SEEK: OK (Not Supported) test VIDIOC_ENUMAUDIO: OK (Not Supported) test VIDIOC_G/S/ENUMINPUT: OK (Not Supported) test VIDIOC_G/S_AUDIO: OK (Not Supported) Inputs: 0 Audio Inputs: 0 Tuners: 0 Output ioctls: test VIDIOC_G/S_MODULATOR: OK (Not Supported) test VIDIOC_G/S_FREQUENCY: OK (Not Supported) test VIDIOC_ENUMAUDOUT: OK (Not Supported) test VIDIOC_G/S/ENUMOUTPUT: OK (Not Supported) test VIDIOC_G/S_AUDOUT: OK (Not Supported) Outputs: 0 Audio Outputs: 0 Modulators: 0 Input/Output configuration ioctls: test VIDIOC_ENUM/G/S/QUERY_STD: OK (Not Supported) test VIDIOC_ENUM/G/S/QUERY_DV_TIMINGS: OK (Not Supported) test VIDIOC_DV_TIMINGS_CAP: OK (Not Supported) test VIDIOC_G/S_EDID: OK (Not Supported) Control ioctls: info: checking v4l2_queryctrl of control 'User Controls' (0x00980001) info: checking v4l2_queryctrl of control 'Brightness' (0x00980900) info: checking v4l2_queryctrl of control 'Contrast' (0x00980901) info: checking v4l2_queryctrl of control 'Saturation' (0x00980902) info: checking v4l2_queryctrl of control 'Hue' (0x00980903) info: checking v4l2_queryctrl of control 'Image Processing Controls' (0x009f0001) info: checking v4l2_queryctrl of control 'Test Pattern' (0x009f0903) info: checking v4l2_queryctrl of control 'Brightness' (0x00980900) info: checking v4l2_queryctrl of control 'Contrast' (0x00980901) info: checking v4l2_queryctrl of control 'Saturation' (0x00980902) info: checking v4l2_queryctrl of control 'Hue' (0x00980903) test VIDIOC_QUERYCTRL/MENU: OK info: checking control 'User Controls' (0x00980001) info: checking control 'Brightness' (0x00980900) info: checking control 'Contrast' (0x00980901) info: checking control 'Saturation' (0x00980902) info: checking control 'Hue' (0x00980903) info: checking control 'Image Processing Controls' (0x009f0001) info: checking control 'Test Pattern' (0x009f0903) test VIDIOC_G/S_CTRL: OK info: checking extended control 'User Controls' (0x00980001) info: checking extended control 'Brightness' (0x00980900) info: checking extended control 'Contrast' (0x00980901) info: checking extended control 'Saturation' (0x00980902) info: checking extended control 'Hue' (0x00980903) info: checking extended control 'Image Processing Controls' (0x009f0001) info: checking extended control 'Test Pattern' (0x009f0903) test VIDIOC_G/S/TRY_EXT_CTRLS: OK info: checking control event 'User Controls' (0x00980001) fail: /run/media/jm/SSD_JM/Projets/vodabox3/poky/build/tmp/work/cortexa9hf-vfp-neon-poky-linux-gnueabi/v4l-utils/git-r0/git/utils/v4l2-compliance/v4l2-test-controls.cpp(721): subscribe event for control 'User Controls' failed test VIDIOC_(UN)SUBSCRIBE_EVENT/DQEVENT: FAIL test VIDIOC_G/S_JPEGCOMP: OK (Not Supported) Standard Controls: 7 Private Controls: 0 Format ioctls: info: found 2 framesizes for pixel format 59455247 info: found 2 framesizes for pixel format 20303159 info: found 2 framesizes for pixel format 20363159 info: found 2 framesizes for pixel format 59565955 info: found 2 framesizes for pixel format 56595559 info: found 5 formats for buftype 1 test VIDIOC_ENUM_FMT/FRAMESIZES/FRAMEINTERVALS: OK test VIDIOC_G/S_PARM: OK (Not Supported) test VIDIOC_G_FBUF: OK (Not Supported) test VIDIOC_G_FMT: OK test VIDIOC_TRY_FMT: OK info: Global format check succeeded for type 1 test VIDIOC_S_FMT: OK test VIDIOC_G_SLICED_VBI_CAP: OK (Not Supported) Codec ioctls: test VIDIOC_(TRY_)ENCODER_CMD: OK (Not Supported) test VIDIOC_G_ENC_INDEX: OK (Not Supported) test VIDIOC_(TRY_)DECODER_CMD: OK (Not Supported) Buffer ioctls: info: test buftype Video Capture test VIDIOC_REQBUFS/CREATE_BUFS/QUERYBUF: OK test VIDIOC_EXPBUF: OK (Not Supported) Streaming ioctls: test read/write: OK (Not Supported) Video Capture: It waits here. I can still abort it using ^C and disply kernel messages : $> dmesg [ 41.794280] imx-ipuv3-camera imx-ipuv3-camera.2: get 3 buffer(s) of size 1843200 each. [ 41.826567] imx-ipuv3-camera imx-ipuv3-camera.2: get 3 buffer(s) of size 1843200 each. [ 41.853863] imx-ipuv3-camera imx-ipuv3-camera.2: get 3 buffer(s) of size 1843200 each. [ 41.853926] imx-ipuv3-camera imx-ipuv3-camera.2: get 3 buffer(s) of size 1843200 each. [ 41.853995] imx-ipuv3-camera imx-ipuv3-camera.2: get 3 buffer(s) of size 1843200 each. [ 41.854045] imx-ipuv3-camera imx-ipuv3-camera.2: get 3 buffer(s) of size 1843200 each. [ 41.854123] imx-ipuv3-camera imx-ipuv3-camera.2: get 3 buffer(s) of size 1843200 each. [ 41.854192] imx-ipuv3-camera imx-ipuv3-camera.2: get 3 buffer(s) of size 1843200 each. [ 41.882802] imx-ipuv3-camera imx-ipuv3-camera.2: get 3 buffer(s) of size 1843200 each. [ 41.882882] imx-ipuv3-camera imx-ipuv3-camera.2: get 1 buffer(s) of size 1843200 each. [ 41.882966] imx-ipuv3-camera imx-ipuv3-camera.2: get 3 buffer(s) of size 1843200 each. [ 41.883037] imx-ipuv3-camera imx-ipuv3-camera.2: get 3 buffer(s) of size 1843200 each. [ 41.883103] imx-ipuv3-camera imx-ipuv3-camera.2: get 3 buffer(s) of size 1843200 each. [ 41.883165] imx-ipuv3-camera imx-ipuv3-camera.2: get 1 buffer(s) of size 1843200 each. [ 41.883239] imx-ipuv3-camera imx-ipuv3-camera.2: get 3 buffer(s) of size 1843200 each. [ 41.883303] imx-ipuv3-camera imx-ipuv3-camera.2: get 3 buffer(s) of size 1843200 each. [ 41.883370] imx-ipuv3-camera imx-ipuv3-camera.2: get 3 buffer(s) of size 1843200 each. [ 41.883432] imx-ipuv3-camera imx-ipuv3-camera.2: get 1 buffer(s) of size 1843200 each. [ 41.885321] imx-ipuv3-camera imx-ipuv3-camera.2: get 3 buffer(s) of size 1843200 each. [ 41.915234] imx-ipuv3-camera imx-ipuv3-camera.2: get 3 buffer(s) of size 1843200 each. [ 41.939194] imx-ipuv3-camera imx-ipuv3-camera.2: get 3 buffer(s) of size 1843200 each. [ 41.960376] imx-ipuv3-camera imx-ipuv3-camera.2: get 1 buffer(s) of size 3686400 each. [ 41.971627] [ipucsi_videobuf_queue] [ 41.975131] [ipucsi_videobuf_queue] [ 41.978672] [ipucsi_videobuf_queue] [ 41.982173] [ipucsi_videobuf_queue] [ 41.985673] [ipu_entity] 14 entities to parse and find IPU0 SMFC0 [ 41.991789] [ipu_entity] Parsing /soc/ipu@02400000/port@0 [ 41.997211] [ipu_entity] Parsing /soc/ipu@02400000/port@1 [ 42.002615] [ipu_entity] Parsing IPU0 SMFC0 [ 42.006822] [ipu_entity] 14 entities to parse and find IPU0 SMFC0 [ 42.012921] [ipu_entity] Parsing /soc/ipu@02400000/port@0 [ 42.018340] [ipu_entity] Parsing /soc/ipu@02400000/port@1 [ 42.023744] [ipu_entity] Parsing IPU0 SMFC0 [ 42.027978] imx-ipuv3-camera imx-ipuv3-camera.2: Selected output entity 'IPU0 SMFC0':1, channel 0 [ 42.036882] imx-ipuv3 2400000.ipu: ipu_idmac_get 0 [ 42.039810] imx-ipuv3-camera imx-ipuv3-camera.2: Requested NFACK interrupt : 305 [ 42.039929] imx-ipuv3-camera imx-ipuv3-camera.2: Requested EOF interrupt : 306 [ 42.040040] imx-ipuv3-camera imx-ipuv3-camera.2: Requested NFB4EOF interrupt : 307 [ 42.040056] imx-ipuv3-camera imx-ipuv3-camera.2: width: 1280 height: 720, YUYV ([ 42.040075] ipu_cpmem_set_image: resolution: 1280x720 stride: 2560 [ 42.040086] ipu_ch_param_write_field 0 125 13 [ 42.040096] ipu_ch_param_write_field 0 138 12 [ 42.040107] ipu_ch_param_write_field 1 102 14 [ 42.040117] ipu_ch_param_write_field 0 107 3 [ 42.040128] ipu_ch_param_write_field 1 85 4 [ 42.040136] ipu_ch_param_write_field 1 78 7 [ 42.040148] ipu_ch_param_write_field 1 0 29 [ 42.040157] ipu_ch_param_write_field 1 29 29 [ 42.040167] [ipu_cpmem_set_burstsize] burstsize : 16 [ 42.045137] ipu_ch_param_write_field 1 78 7 [ 42.045149] [ipu_smfc_set_watermark] SMFC_WMC: 0x0000098A [ 42.050783] ipu_ch_param_write_field 1 93 2 [ 42.050804] imx-ipuv3-camera imx-ipuv3-camera.2: smfc burstsize : 3 [ 42.050816] [ipu_smfc_set_burstsize] SMFC_BS: 0x00000003 [ 42.056138] imx-ipuv3-camera imx-ipuv3-camera.2: smfc map channel 0 on 0 [ 42.056150] [ipu_smfc_map_channel] map channel 0 on 0 [ 42.061207] [ipu_smfc_map_channel] SMFC_MAP: 0x00000100 [ 42.066579] [fill_csi_bus_cfg] Format 0x00002011 [ 42.071203] [fill_csi_bus_cfg] bus BT.656 [ 42.075225] imx-ipuv3 2400000.ipu: CSI_SENS_CONF = 0x04000950 [ 42.075238] imx-ipuv3 2400000.ipu: CSI_ACT_FRM_SIZE = 0x02CF04FF [ 42.075258] ipu_ch_param_write_field 1 29 29 [ 42.075292] imx-ipuv3 2400000.ipu: IPU_CONF = 0x00000101 [ 42.075304] imx-ipuv3 2400000.ipu: IDMAC_CONF = 0x0000002F [ 42.075315] imx-ipuv3 2400000.ipu: IDMAC_CHA_EN1 = 0x00000001 [ 42.075325] imx-ipuv3 2400000.ipu: IDMAC_CHA_EN2 = 0x00000000 [ 42.075336] imx-ipuv3 2400000.ipu: IDMAC_CHA_PRI1 = 0x00000001 [ 42.075346] imx-ipuv3 2400000.ipu: IDMAC_CHA_PRI2 = 0x00000000 [ 42.075357] imx-ipuv3 2400000.ipu: IDMAC_BAND_EN1 = 0x00000000 [ 42.075368] imx-ipuv3 2400000.ipu: IDMAC_BAND_EN2 = 0x00000000 [ 42.075378] imx-ipuv3 2400000.ipu: IPU_CHA_DB_MODE_SEL0 = 0x00000000 [ 42.075388] imx-ipuv3 2400000.ipu: IPU_CHA_DB_MODE_SEL1 = 0x00000000 [ 42.075398] imx-ipuv3 2400000.ipu: IPU_FS_PROC_FLOW1 = 0x00000000 [ 42.075408] imx-ipuv3 2400000.ipu: IPU_FS_PROC_FLOW2 = 0x00000000 [ 42.075419] imx-ipuv3 2400000.ipu: IPU_FS_PROC_FLOW3 = 0x00000000 [ 42.075430] imx-ipuv3 2400000.ipu: IPU_FS_DISP_FLOW1 = 0x00000000 [ 42.075442] imx-ipuv3 2400000.ipu: IPU_INT_CTRL(0) = 10800001 [ 42.075453] imx-ipuv3 2400000.ipu: IPU_INT_CTRL(1) = 00000000 [ 42.075465] imx-ipuv3 2400000.ipu: IPU_INT_CTRL(2) = 00000001 [ 42.075477] imx-ipuv3 2400000.ipu: IPU_INT_CTRL(3) = 00000000 [ 42.075488] imx-ipuv3 2400000.ipu: IPU_INT_CTRL(4) = 00000001 [ 42.075500] imx-ipuv3 2400000.ipu: IPU_INT_CTRL(5) = 00000000 [ 42.075511] imx-ipuv3 2400000.ipu: IPU_INT_CTRL(6) = 00000000 [ 42.075522] imx-ipuv3 2400000.ipu: IPU_INT_CTRL(7) = 00000000 [ 42.075534] imx-ipuv3 2400000.ipu: IPU_INT_CTRL(8) = 00000000 [ 42.075545] imx-ipuv3 2400000.ipu: IPU_INT_CTRL(9) = 00000000 [ 42.075556] imx-ipuv3 2400000.ipu: IPU_INT_CTRL(10) = 00000000 [ 42.075567] imx-ipuv3 2400000.ipu: IPU_INT_CTRL(11) = 00000000 [ 42.075579] imx-ipuv3 2400000.ipu: IPU_INT_CTRL(12) = 00000000 [ 42.075590] imx-ipuv3 2400000.ipu: IPU_INT_CTRL(13) = 00000000 [ 42.075602] imx-ipuv3 2400000.ipu: IPU_INT_CTRL(14) = 00000208 [ 42.075617] imx-ipuv3 2400000.ipu: ch 0 word 0 - 00000000 00000000 00000000 E0001800 000B3C9F [ 42.075632] imx-ipuv3 2400000.ipu: ch 0 word 1 - 00000000 0120C000 0103C000 00027FC0 00000000 [ 42.075642] ipu_ch_param_read_field 1 85 4 [ 42.075653] imx-ipuv3 2400000.ipu: PFS 0x8, [ 42.075663] ipu_ch_param_read_field 0 107 3 [ 42.075674] imx-ipuv3 2400000.ipu: BPP 0x3, [ 42.075683] ipu_ch_param_read_field 1 78 7 [ 42.075694] imx-ipuv3 2400000.ipu: NPB 0xf [ 42.075704] ipu_ch_param_read_field 0 125 13 [ 42.075715] imx-ipuv3 2400000.ipu: FW 1279, [ 42.075723] ipu_ch_param_read_field 0 138 12 [ 42.075734] imx-ipuv3 2400000.ipu: FH 719, [ 42.075743] ipu_ch_param_read_field 1 0 29 [ 42.075753] imx-ipuv3 2400000.ipu: EBA0 0x48300000 [ 42.075762] ipu_ch_param_read_field 1 29 29 [ 42.075773] imx-ipuv3 2400000.ipu: EBA1 0x0 [ 42.075782] ipu_ch_param_read_field 1 102 14 [ 42.075793] imx-ipuv3 2400000.ipu: Stride 2559 [ 42.075802] ipu_ch_param_read_field 0 113 1 [ 42.075813] imx-ipuv3 2400000.ipu: scan_order 0 [ 42.075822] ipu_ch_param_read_field 1 128 14 [ 42.075832] imx-ipuv3 2400000.ipu: uv_stride 0 [ 42.075840] ipu_ch_param_read_field 0 46 22 [ 42.075852] imx-ipuv3 2400000.ipu: u_offset 0x0 [ 42.075862] ipu_ch_param_read_field 0 68 22 [ 42.075872] imx-ipuv3 2400000.ipu: v_offset 0x0 [ 42.075881] ipu_ch_param_read_field 1 116 3 [ 42.075891] imx-ipuv3 2400000.ipu: Width0 0+1, [ 42.075901] ipu_ch_param_read_field 1 119 3 [ 42.075911] imx-ipuv3 2400000.ipu: Width1 0+1, [ 42.075920] ipu_ch_param_read_field 1 122 3 [ 42.075931] imx-ipuv3 2400000.ipu: Width2 0+1, [ 42.075939] ipu_ch_param_read_field 1 125 3 [ 42.075949] imx-ipuv3 2400000.ipu: Width3 0+1, [ 42.075958] ipu_ch_param_read_field 1 128 5 [ 42.075968] imx-ipuv3 2400000.ipu: Offset0 0, [ 42.075977] ipu_ch_param_read_field 1 133 5 [ 42.075988] imx-ipuv3 2400000.ipu: Offset1 0, [ 42.075996] ipu_ch_param_read_field 1 138 5 [ 42.076007] imx-ipuv3 2400000.ipu: Offset2 0, [ 42.076015] ipu_ch_param_read_field 1 143 5 [ 42.076026] imx-ipuv3 2400000.ipu: Offset3 0 [ 42.076039] imx-ipuv3 2400000.ipu: CSI_SENS_CONF: 04000950 [ 42.076050] imx-ipuv3 2400000.ipu: CSI_SENS_FRM_SIZE: 02cf04ff [ 42.076061] imx-ipuv3 2400000.ipu: CSI_ACT_FRM_SIZE: 02cf04ff [ 42.076071] imx-ipuv3 2400000.ipu: CSI_OUT_FRM_CTRL: 00000000 [ 42.076081] imx-ipuv3 2400000.ipu: CSI_TST_CTRL: 00000000 [ 42.076091] imx-ipuv3 2400000.ipu: CSI_CCIR_CODE_1: 01040030 [ 42.076101] imx-ipuv3 2400000.ipu: CSI_CCIR_CODE_2: 00000000 [ 42.076111] imx-ipuv3 2400000.ipu: CSI_CCIR_CODE_3: 00ff0000 [ 42.076121] imx-ipuv3 2400000.ipu: CSI_MIPI_DI: ffffffff [ 42.076132] imx-ipuv3 2400000.ipu: CSI_SKIP: 00000000 The only thing I can see in the registers dump, is that the base adress for double buffering is set only for the first one. But I don't know if it explains why there is not the first interrupt, as there is an address for the first buffer... Thanks for any advice, JM -- To unsubscribe from this list: send the line "unsubscribe linux-media" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html