On 06/28/2018 09:29 PM, Ezequiel Garcia wrote: > Hi Hans, > > On Thu, 2018-06-28 at 11:19 +0200, Hans Verkuil wrote: >> On 06/27/18 22:35, Ezequiel Garcia wrote: >>> As discussed on IRC, memory-to-memory need to be modeled >>> properly in order to be supported by the media controller >>> framework, and thus to support the Request API. >>> >>> First commit introduces a register/unregister API, >>> that creates/destroys all the entities and pads needed, >>> and links them. >>> >>> The second commit uses this API to support the vim2m driver. >>> >>> The series applies cleanly on v4.18-rc1. >>> >>> Topology (media-ctl -p output) >>> ============================== >>> >>> media-ctl -p >>> Media controller API version 4.17.0 >>> >>> Media device information >>> ------------------------ >>> driver vim2m >>> model vim2m >>> serial >>> bus info >>> hw revision 0x0 >>> driver version 4.17.0 >>> >>> Device topology >>> - entity 1: source (1 pad, 1 link) >>> type Node subtype V4L flags 0 >>> pad0: Source >>> -> "proc":1 [ENABLED,IMMUTABLE] >>> >>> - entity 3: proc (2 pads, 2 links) >>> type Node subtype Unknown flags 0 >>> pad0: Sink >>> -> "sink":0 [ENABLED,IMMUTABLE] >>> pad1: Source >>> <- "source":0 [ENABLED,IMMUTABLE] >>> >>> - entity 6: sink (1 pad, 1 link) >>> type Node subtype V4L flags 0 >>> pad0: Sink >>> <- "proc":0 [ENABLED,IMMUTABLE] >>> >>> Compliance output >>> ================= >>> >>> v4l2-compliance -m /dev/media0 -v >>> v4l2-compliance SHA: e2038ec6451293787b929338c2a671c732b8693d, 64 >>> bits >> >> This is an old version of v4l2-compliance. Can you update it to the >> latest >> version and run this again? >> > > With the two v4l-utils patches that I just sent: > > https://patchwork.linuxtv.org/patch/50654/ > https://patchwork.linuxtv.org/patch/50655/ > > The compliance output looks OK, I think: > > root@(none):/# v4l2-compliance -m 0 -v > v4l2-compliance SHA: 248491682a2919a1bd421f87b33c14125b9fc1f5, 64 bits > > Compliance test for device /dev/media0: > > Media Driver Info: > Driver name : vim2m > Model : vim2m > Serial : > Bus info : > Media version : 4.18.0 > Hardware revision: 0x00000000 (0) > Driver version : 4.18.0 > > 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: > Entity: 0x00000001 (Name: 'source', Function: V4L2 I/O) > Entity: 0x00000003 (Name: 'proc', Function: Video > Scaler) > Entity: 0x00000006 (Name: 'sink', Function: V4L2 I/O) > Interface: 0x0300000c (Type: V4L Video, DevPath: > /dev/video2) > Pad: 0x01000002 (source, Source) > Pad: 0x01000004 (proc, Sink) > Pad: 0x01000005 (proc, Source) > Pad: 0x01000007 (sink, Sink) > Link: 0x02000008 (source -> proc) > Link: 0x0200000a (proc -> sink) > Link: 0x0200000d (source to interface /dev/video2) > Link: 0x0200000e (sink to interface /dev/video2) > test MEDIA_IOC_G_TOPOLOGY: OK > Entities: 3 Interfaces: 1 Pads: 4 Links: 4 > Entity: 0x00000001 (Name: 'source', Type: V4L2 I/O) > Entity: 0x00000003 (Name: 'proc', Type: Unknown legacy > device node type (0001ffff)) > Entity: 0x00000006 (Name: 'sink', Type: V4L2 I/O) > Entity Links: 0x00000001 (Name: 'source') > Entity Links: 0x00000003 (Name: 'proc') > Entity Links: 0x00000006 (Name: 'sink') > test MEDIA_IOC_ENUM_ENTITIES/LINKS: OK > test MEDIA_IOC_SETUP_LINK: OK > > --------------------------------------------------------------------- > ----------- > Compliance test for device /dev/video2: > > Driver Info: > Driver name : vim2m > Card type : vim2m > Bus info : platform:vim2m > Driver version : 4.18.0 > Capabilities : 0x84208000 > Video Memory-to-Memory > Streaming > Extended Pix Format > Device Capabilities > Device Caps : 0x04208000 > Video Memory-to-Memory > Streaming > Extended Pix Format > Media Driver Info: > Driver name : vim2m > Model : vim2m > Serial : > Bus info : > Media version : 4.18.0 > Hardware revision: 0x00000000 (0) > Driver version : 4.18.0 > Interface Info: > ID : 0x0300000c > Type : V4L Video > Entity Info: > ID : 0x00000001 (1) > Name : source > Function : V4L2 I/O > Pad 0x01000002 : Source > Link 0x02000008: to remote pad 0x1000005 of entity 'proc': > Data, Enabled, Immutable Hmm, this doesn't show the sink entity associated with this interface. It's a v4l2-compliance bug, but I need to think a bit more on how to fix this. Regards, Hans