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. This RFC is a first draft on the memory-to-memory media controller topology. The topology looks like this: Device topology - entity 1: input (1 pad, 1 link) type Node subtype Unknown flags 0 pad0: Source -> "proc":1 [ENABLED,IMMUTABLE] - entity 3: proc (2 pads, 2 links) type Node subtype Unknown flags 0 pad0: Source -> "output":0 [ENABLED,IMMUTABLE] pad1: Sink <- "input":0 [ENABLED,IMMUTABLE] - entity 6: output (1 pad, 1 link) type Node subtype Unknown flags 0 pad0: Sink <- "proc":0 [ENABLED,IMMUTABLE] The 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. Notes ----- * A new device node type is introduced VFL_TYPE_MEM2MEM, this is mostly done so the video4linux core doesn't try to register other media controller entities. * Also, a new media entity type is introduced. Memory-to-memory devices have a multi-entity description and so can't be simply embedded in other structs, or cast from other structs. Ezequiel Garcia (1): media: add helpers for memory-to-memory media controller Hans Verkuil (1): vim2m: add media device drivers/media/platform/vim2m.c | 41 ++++++- drivers/media/v4l2-core/v4l2-dev.c | 23 ++-- drivers/media/v4l2-core/v4l2-mem2mem.c | 157 +++++++++++++++++++++++++ include/media/media-entity.h | 4 + include/media/v4l2-dev.h | 2 + include/media/v4l2-mem2mem.h | 5 + include/uapi/linux/media.h | 2 + 7 files changed, 222 insertions(+), 12 deletions(-) -- 2.17.1