On 02/08/18 12:56, Hans Verkuil wrote: > On 02/08/18 11:46, Philipp Zabel wrote: >> On Wed, 2018-02-07 at 23:19 +0100, Hans Verkuil wrote: >>> On 02/07/2018 11:05 PM, Tim Harvey wrote: >>>> On Wed, Feb 7, 2018 at 1:09 AM, Hans Verkuil <hverkuil@xxxxxxxxx> wrote: >>>>> On 02/07/18 09:22, Hans Verkuil wrote: >>>>>> On 02/07/2018 12:29 AM, Tim Harvey wrote: >>>>>>> Media Controller ioctls: >>>>>>> fail: v4l2-test-media.cpp(141): ent.function == >>>>>>> MEDIA_ENT_F_V4L2_SUBDEV_UNKNOWN >>>>>> >>>>>> Weird, this shouldn't happen. I'll look into this a bit more. >>>>> >>>>> Can you run 'mc_nextgen_test -e -i' and post the output? >>>>> >>>>> It's found in contrib/test. >>>>> >>>> >>>> root@ventana:~# ./v4l-utils/contrib/test/mc_nextgen_test -e -i >>>> Device: imx-media (driver imx-media) >>>> Bus: >>>> version: 0 >>>> number of entities: 24 >>>> number of interfaces: 24 >>>> number of pads: 48 >>>> number of links: 50 >>>> entity entity#1: 'unknown entity type' adv7180 2-0020, 1 pad(s), 1 source(s) >>>> entity entity#3: 'unknown entity type' tda19971 2-0048, 1 pad(s), 1 source(s) >>>> entity entity#5: 'unknown entity type' ipu1_vdic, 3 pad(s), 2 sink(s), >>>> 1 source(s) >>>> entity entity#9: 'unknown entity type' ipu2_vdic, 3 pad(s), 2 sink(s), >>>> 1 source(s) >>>> entity entity#13: 'unknown entity type' ipu1_ic_prp, 3 pad(s), 1 >>>> sink(s), 2 source(s) >>>> entity entity#17: 'unknown entity type' ipu1_ic_prpenc, 2 pad(s), 1 >>>> sink(s), 1 source(s) >>>> entity entity#20: 'V4L I/O' ipu1_ic_prpenc capture, 1 pad(s), 1 sink(s) >>>> entity entity#26: 'unknown entity type' ipu1_ic_prpvf, 2 pad(s), 1 >>>> sink(s), 1 source(s) >>>> entity entity#29: 'V4L I/O' ipu1_ic_prpvf capture, 1 pad(s), 1 sink(s) >>>> entity entity#35: 'unknown entity type' ipu2_ic_prp, 3 pad(s), 1 >>>> sink(s), 2 source(s) >>>> entity entity#39: 'unknown entity type' ipu2_ic_prpenc, 2 pad(s), 1 >>>> sink(s), 1 source(s) >>>> entity entity#42: 'V4L I/O' ipu2_ic_prpenc capture, 1 pad(s), 1 sink(s) >>>> entity entity#48: 'unknown entity type' ipu2_ic_prpvf, 2 pad(s), 1 >>>> sink(s), 1 source(s) >>>> entity entity#51: 'V4L I/O' ipu2_ic_prpvf capture, 1 pad(s), 1 sink(s) >>>> entity entity#57: 'unknown entity type' ipu1_csi0, 3 pad(s), 1 >>>> sink(s), 2 source(s) >>>> entity entity#61: 'V4L I/O' ipu1_csi0 capture, 1 pad(s), 1 sink(s) >>>> entity entity#67: 'unknown entity type' ipu1_csi1, 3 pad(s), 1 >>>> sink(s), 2 source(s) >>>> entity entity#71: 'V4L I/O' ipu1_csi1 capture, 1 pad(s), 1 sink(s) >>>> entity entity#77: 'unknown entity type' ipu2_csi0, 3 pad(s), 1 >>>> sink(s), 2 source(s) >>>> entity entity#81: 'V4L I/O' ipu2_csi0 capture, 1 pad(s), 1 sink(s) >>>> entity entity#87: 'unknown entity type' ipu2_csi1, 3 pad(s), 1 >>>> sink(s), 2 source(s) >>>> entity entity#91: 'V4L I/O' ipu2_csi1 capture, 1 pad(s), 1 sink(s) >>>> entity entity#97: 'unknown entity type' ipu1_csi0_mux, 3 pad(s), 2 >>>> sink(s), 1 source(s) >>>> entity entity#101: 'unknown entity type' ipu2_csi1_mux, 3 pad(s), 2 >>>> sink(s), 1 source(s) >>> >>> Yuck. So nobody in imx (and adv7180!) is setting a valid function. >>> And I see the mc_nextgen_test.c doesn't know all the latest functions >>> anyway. >> >> That's probably because for most of the entities it's a bit unclear >> which function should be assigned. > > Well, that's one reason. The other is that there never was a utility > to test this :-) > >> ipu[12]_csi[01]_mux are video multiplexers, so MEDIA_ENT_F_VID_MUX. I >> thought those should already be set correctly in the video-mux driver. > > They are. The mc_nextgen_test, media-ctl and now v4l2-ctl/v4l2-compliance > all have their own list of functions that they know about and it's all > different. It's one of the things I want to fix. > >> ipu[12]_csi[01] are the interfaces to the outside parallel busses, but >> they can also 'downscale' by skipping, skip frames and pack or expand >> pixels from the bus into the internal FIFOs that lead to the next >> element. These are not MEDIA_ENT_F_VID_IF_BRIDGE, are they? > > Yes, they are. One limitation of the current API is that you cannot > represent correctly devices with multiple functions. This is planned for > a long time now, but nobody actually did the work. So for now just fill > in the primary function with a comment that in the future other functions > should be set as well. > >> ipu[12]_vdic are mainly deinterlacers, so a new function >> MEDIA_ENT_F_PROC_VIDEO_DEINTERLACER ? These entities could also be used >> as composers in a mem2mem scenario (MEDIA_ENT_F_PROC_VIDEO_COMPOSER ?), >> but this is currently not supported. > > Yes, we need a PROC_VIDEO_DEINTERLACER function. > >> >> ipu[12]_ic_prp is just a tee element that feeds both ipu[12]_ic_prpenc >> and ipu[12]_ic_prpvf. These are both scalers and colorspace converters. >> MEDIA_ENT_F_PROC_VIDEO_SCALER ? >> MEDIA_ENT_F_PROC_VIDEO_PIXEL_ENC_CONV ? > > The tee element would be a new PROC_VIDEO_SPLITTER function. > > The other two would be scalers, but should add the VIDEO_PIXEL_ENC_CONV > function once it is possible to do so. > >> >> "ipu[12]_csi[01] capture" are the DMA elements writing to memory, so >> MEDIA_ENT_F_PROC_VIDEO_PIXEL_FORMATTER ? > > These are likely to be filled correctly already. I've just added a commit > to v4l2-compliance to make it easier to see what function is used: > > v4l2-compliance -m0 -v Actually, can you run this using the latest v4l-utils version for the imx and post the output? Regards, Hans