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 what happens when you don't have compliance tests, nobody bothers to fill stuff like that in. Anyway, that explains the v4l2-compliance error you got (although I should improve the error to also mentioned the entity in question). In other words, it's not you, it's them :-) Regards, Hans > interface intf_devnode#21: video /dev/video0 > interface intf_devnode#30: video /dev/video1 > interface intf_devnode#43: video /dev/video2 > interface intf_devnode#52: video /dev/video3 > interface intf_devnode#62: video /dev/video4 > interface intf_devnode#72: video /dev/video5 > interface intf_devnode#82: video /dev/video6 > interface intf_devnode#92: video /dev/video7 > interface intf_devnode#141: v4l2-subdev /dev/v4l-subdev0 > interface intf_devnode#143: v4l2-subdev /dev/v4l-subdev1 > interface intf_devnode#145: v4l2-subdev /dev/v4l-subdev2 > interface intf_devnode#147: v4l2-subdev /dev/v4l-subdev3 > interface intf_devnode#149: v4l2-subdev /dev/v4l-subdev4 > interface intf_devnode#151: v4l2-subdev /dev/v4l-subdev5 > interface intf_devnode#153: v4l2-subdev /dev/v4l-subdev6 > interface intf_devnode#155: v4l2-subdev /dev/v4l-subdev7 > interface intf_devnode#157: v4l2-subdev /dev/v4l-subdev8 > interface intf_devnode#159: v4l2-subdev /dev/v4l-subdev9 > interface intf_devnode#161: v4l2-subdev /dev/v4l-subdev10 > interface intf_devnode#163: v4l2-subdev /dev/v4l-subdev11 > interface intf_devnode#165: v4l2-subdev /dev/v4l-subdev12 > interface intf_devnode#167: v4l2-subdev /dev/v4l-subdev13 > interface intf_devnode#169: v4l2-subdev /dev/v4l-subdev14 > interface intf_devnode#171: v4l2-subdev /dev/v4l-subdev15 > > I updated v4l2-compliance and ran again: > root@ventana:~# v4l2-compliance -m0 -M > v4l2-compliance SHA : b2f8f9049056eb6f9e028927dacb2c715a062df8 > Media Driver Info: > Driver name : imx-media > Model : imx-media > Serial : > Bus info : > Media version : 4.15.0 > Hardware revision: 0x00000000 (0) > Driver version : 4.15.0 > > Compliance test for device /dev/media0: > > Required ioctls: > test MEDIA_IOC_DEVICE_INFO: OK > > Allow for multiple opens: > test second /dev/media0 open: OK > test MEDIA_IOC_DEVICE_INFO: OK > test for unlimited opens: OK > > Media Controller ioctls: > fail: v4l2-test-media.cpp(94): function == > MEDIA_ENT_F_V4L2_SUBDEV_UNKNOWN > fail: v4l2-test-media.cpp(156): > checkFunction(ent.function, true) > test MEDIA_IOC_G_TOPOLOGY: FAIL > fail: v4l2-test-media.cpp(275): num_data_links != num_links > test MEDIA_IOC_ENUM_ENTITIES/LINKS: FAIL > test MEDIA_IOC_SETUP_LINK: OK > > Total: 7, Succeeded: 5, Failed: 2, Warnings: 0 > > Regards, > > Tim >