Supporting DVB device in MC Sakari Ailus 2015-03-04 Mauro, Hans, Laurent and Sakari present What has been agreed -------------------- - The current Media Controller API exposes device topologies as a data stream-oriented graph of entities. Links connect those entities through pads that represent data stream endpoints. - Entities representing software blocks need to be supported as well in cases where they are expected by existing user space APIs. DVB demuxers are an example, as they are often absent in cheap devices and are then implemented in software inside the kernel. - Entities are not device nodes. Entities correspond to hardware devices or part thereof, or logical abstractions of those. Entities can be controlled through device nodes, and their drivers can expose device nodes to userspace, but the nature of an entity in the existing MC model is not intrinsiquely a device node. - Tuner, demod and DMA engine are hardware devices. These are or should be described by entities in a Media Controller graph. - When a tuner is modeled by its driver as a V4L2 sub-device, the driver can implement a V4L2 subdev device node. In that case the tuner entity in an MC graph must report the V4L2 subdev device node associated with the tuner. - The tuners have traditionally been controlled as part of a video, radio, vbi or dvb device. In that case the control of the tuner is performed through video, radio, vbi or dvb devices, and is indirect. - User space need to find out how to control entities, both in the direct and indirect controls cases. In the direct control case an entity should report which device node(s) it can be controlled through. In the indirect control case, the control device node(s) should be reported by the entities that are directly controlled by them. User space will use the MC data stream graph to locate those other entities, and from there find the indirect control device nodes. Open questions -------------- - How does the user space discover how to control the tuner, if it is controlled through by a video node exposed by the bridge driver? - Simple examples of bt878 tuner hardware pipeline: video: tuner -> bt878 core -> bt878 video dma vbi: tuner -> bt878 core -> bt878 vbi dma radio: tuner -> bt878 core Radio has no DMA, otherwise the pipeline is the same, but the control is different: it goes through radio device node. There is no DMA associated with radio. - The entities in the previous example report following interfaces (device nodes) in entity enumeration: tuner: /dev/v4l-subdev (optional) bt878 core: /dev/radio, /dev/vbi and /dev/video bt878 video dma: /dev/video bt878 vbi dma: /dev/vbi