Re: HDMI input on i.MX6 using IPU

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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



[Index of Archives]     [Linux Input]     [Video for Linux]     [Gstreamer Embedded]     [Mplayer Users]     [Linux USB Devel]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [Yosemite Backpacking]
  Powered by Linux