| |
| - The Frame Interval Monitor could be exported to v4l2-core for |
| general use. |
| |
| - The CSI subdevice parses its nearest upstream neighbor's device-tree |
| bus config in order to setup the CSI. Laurent Pinchart argues that |
| instead the CSI subdev should call its neighbor's g_mbus_config op |
| (which should be propagated if necessary) to get this info. However |
| Hans Verkuil is planning to remove the g_mbus_config op. For now this |
| driver uses the parsed DT bus config method until this issue is |
| resolved. |
| |
| - This media driver supports inheriting V4L2 controls to the |
| video capture devices, from the subdevices in the capture device's |
| pipeline. The controls for each capture device are updated in the |
| link_notify callback when the pipeline is modified. It should be |
| decided whether this feature is useful enough to make it generally |
| available by exporting to v4l2-core. |
| |
| - The OF graph is walked at probe time to form the list of fwnodes to |
| be passed to v4l2_async_notifier_register(), starting from the IPU |
| CSI ports. And after all async subdevices have been bound, |
| v4l2_fwnode_parse_link() is used to form the media links between |
| the entities discovered by walking the OF graph. |
| |
| While this approach allows support for arbitrary OF graphs, there |
| are some assumptions for this to work: |
| |
| 1. All port parent nodes reachable in the graph from the IPU CSI |
| ports bind to V4L2 async subdevice drivers. |
| |
| If a device has mixed-use ports such as video plus audio, the |
| endpoints from the audio ports are followed to devices that must |
| bind to V4L2 subdevice drivers, and not for example, to an ALSA |
| driver or a non-V4L2 media driver. If the device were bound to |
| such a driver, imx-media would never get an async completion |
| notification because the device fwnode was added to the async |
| list, but the driver does not interface with the V4L2 async |
| framework. |
| |
| 2. Every port reachable in the graph is treated as a media pad, |
| owned by the V4L2 subdevice that is bound to the port's parent. |
| |
| This presents problems for devices that don't make this port = pad |
| assumption. Examples are SMIAPP compatible cameras which define only |
| a single output port node, but which define multiple pads owned |
| by multiple subdevices (pixel-array, binner, scaler). Or video |
| decoders (entity function MEDIA_ENT_F_ATV_DECODER), which also define |
| only a single output port node, but define multiple pads for video, |
| VBI, and audio out. |
| |
| A workaround at present is to set the port reg properties to |
| correspond to the media pad index that the port represents. A |
| possible long-term solution is to implement a subdev API that |
| maps a port id to a media pad index. |
| |
| 3. Every endpoint of a port reachable in the graph is treated as |
| a media link, between V4L2 subdevices that are bound to the |
| port parents of the local and remote endpoints. |
| |
| Which means a port must not contain mixed-use endpoints, they |
| must all refer to media links between V4L2 subdevices. |