media: imx.rst: Add example media graphs

Add the media graph topologies for the i.MX6Q SabreSD and SabreAuto.
This makes it easier to understand the topology and follow the
entity descriptions in the following sections.

Also clarify that the SabreSD and SabreLite media pipeline config examples
are for the i.MX6Q boards.

Signed-off-by: Steve Longerbeam <slongerbeam@gmail.com>
Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Signed-off-by: Hans Verkuil <hverkuil-cisco@xs4all.nl>
Signed-off-by: Mauro Carvalho Chehab <mchehab+huawei@kernel.org>
This commit is contained in:
Steve Longerbeam 2020-03-19 23:59:36 +01:00 committed by Mauro Carvalho Chehab
parent 7ca02435ff
commit cdb82f826e
3 changed files with 143 additions and 7 deletions

View File

@ -102,6 +102,35 @@ Some of the features of this driver include:
problems with the ADV718x video decoders.
Topology
--------
The following shows the media topologies for the i.MX6Q SabreSD and
i.MX6Q SabreAuto. Refer to these diagrams in the entity descriptions
in the next section.
The i.MX5/6 topologies can differ upstream from the IPUv3 CSI video
multiplexers, but the internal IPUv3 topology downstream from there
is common to all i.MX5/6 platforms. For example, the SabreSD, with the
MIPI CSI-2 OV5640 sensor, requires the i.MX6 MIPI CSI-2 receiver. But
the SabreAuto has only the ADV7180 decoder on a parallel bt.656 bus, and
therefore does not require the MIPI CSI-2 receiver, so it is missing in
its graph.
.. _imx6q_topology_graph:
.. kernel-figure:: imx6q-sabresd.dot
:alt: Diagram of the i.MX6Q SabreSD media pipeline topology
:align: center
Media pipeline graph on i.MX6Q SabreSD
.. kernel-figure:: imx6q-sabreauto.dot
:alt: Diagram of the i.MX6Q SabreAuto media pipeline topology
:align: center
Media pipeline graph on i.MX6Q SabreAuto
Entities
--------
@ -377,8 +406,8 @@ The following are specific usage notes for the Sabre* reference
boards:
SabreLite with OV5642 and OV5640
--------------------------------
i.MX6Q SabreLite with OV5642 and OV5640
---------------------------------------
This platform requires the OmniVision OV5642 module with a parallel
camera interface, and the OV5640 module with a MIPI CSI-2
@ -547,12 +576,12 @@ used to select any supported YUV pixelformat on /dev/video2.
This platform accepts Composite Video analog inputs to the ADV7180 on
Ain1 (connector J42).
SabreSD with MIPI CSI-2 OV5640
------------------------------
i.MX6Q SabreSD with MIPI CSI-2 OV5640
-------------------------------------
Similarly to SabreLite, the SabreSD supports a parallel interface
OV5642 module on IPU1 CSI0, and a MIPI CSI-2 OV5640 module. The OV5642
connects to i2c bus 1 and the OV5640 to i2c bus 2.
Similarly to i.MX6Q SabreLite, the i.MX6Q SabreSD supports a parallel
interface OV5642 module on IPU1 CSI0, and a MIPI CSI-2 OV5640
module. The OV5642 connects to i2c bus 1 and the OV5640 to i2c bus 2.
The device tree for SabreSD includes OF graphs for both the parallel
OV5642 and the MIPI CSI-2 OV5640, but as of this writing only the MIPI

View File

@ -0,0 +1,51 @@
digraph board {
rankdir=TB
n00000001 [label="{{<port0> 0} | ipu1_csi0\n/dev/v4l-subdev0 | {<port1> 1 | <port2> 2}}", shape=Mrecord, style=filled, fillcolor=green]
n00000001:port2 -> n00000005 [style=dashed]
n00000001:port1 -> n0000000f:port0 [style=dashed]
n00000001:port1 -> n0000000b:port0 [style=dashed]
n00000005 [label="ipu1_csi0 capture\n/dev/video0", shape=box, style=filled, fillcolor=yellow]
n0000000b [label="{{<port0> 0 | <port1> 1} | ipu1_vdic\n/dev/v4l-subdev1 | {<port2> 2}}", shape=Mrecord, style=filled, fillcolor=green]
n0000000b:port2 -> n0000000f:port0 [style=dashed]
n0000000f [label="{{<port0> 0} | ipu1_ic_prp\n/dev/v4l-subdev2 | {<port1> 1 | <port2> 2}}", shape=Mrecord, style=filled, fillcolor=green]
n0000000f:port1 -> n00000013:port0 [style=dashed]
n0000000f:port2 -> n0000001c:port0 [style=dashed]
n00000013 [label="{{<port0> 0} | ipu1_ic_prpenc\n/dev/v4l-subdev3 | {<port1> 1}}", shape=Mrecord, style=filled, fillcolor=green]
n00000013:port1 -> n00000016 [style=dashed]
n00000016 [label="ipu1_ic_prpenc capture\n/dev/video1", shape=box, style=filled, fillcolor=yellow]
n0000001c [label="{{<port0> 0} | ipu1_ic_prpvf\n/dev/v4l-subdev4 | {<port1> 1}}", shape=Mrecord, style=filled, fillcolor=green]
n0000001c:port1 -> n0000001f [style=dashed]
n0000001f [label="ipu1_ic_prpvf capture\n/dev/video2", shape=box, style=filled, fillcolor=yellow]
n0000002f [label="{{<port0> 0} | ipu1_csi1\n/dev/v4l-subdev5 | {<port1> 1 | <port2> 2}}", shape=Mrecord, style=filled, fillcolor=green]
n0000002f:port2 -> n00000033 [style=dashed]
n0000002f:port1 -> n0000000f:port0 [style=dashed]
n0000002f:port1 -> n0000000b:port0 [style=dashed]
n00000033 [label="ipu1_csi1 capture\n/dev/video3", shape=box, style=filled, fillcolor=yellow]
n0000003d [label="{{<port0> 0} | ipu2_csi0\n/dev/v4l-subdev6 | {<port1> 1 | <port2> 2}}", shape=Mrecord, style=filled, fillcolor=green]
n0000003d:port2 -> n00000041 [style=dashed]
n0000003d:port1 -> n0000004b:port0 [style=dashed]
n0000003d:port1 -> n00000047:port0 [style=dashed]
n00000041 [label="ipu2_csi0 capture\n/dev/video4", shape=box, style=filled, fillcolor=yellow]
n00000047 [label="{{<port0> 0 | <port1> 1} | ipu2_vdic\n/dev/v4l-subdev7 | {<port2> 2}}", shape=Mrecord, style=filled, fillcolor=green]
n00000047:port2 -> n0000004b:port0 [style=dashed]
n0000004b [label="{{<port0> 0} | ipu2_ic_prp\n/dev/v4l-subdev8 | {<port1> 1 | <port2> 2}}", shape=Mrecord, style=filled, fillcolor=green]
n0000004b:port1 -> n0000004f:port0 [style=dashed]
n0000004b:port2 -> n00000058:port0 [style=dashed]
n0000004f [label="{{<port0> 0} | ipu2_ic_prpenc\n/dev/v4l-subdev9 | {<port1> 1}}", shape=Mrecord, style=filled, fillcolor=green]
n0000004f:port1 -> n00000052 [style=dashed]
n00000052 [label="ipu2_ic_prpenc capture\n/dev/video5", shape=box, style=filled, fillcolor=yellow]
n00000058 [label="{{<port0> 0} | ipu2_ic_prpvf\n/dev/v4l-subdev10 | {<port1> 1}}", shape=Mrecord, style=filled, fillcolor=green]
n00000058:port1 -> n0000005b [style=dashed]
n0000005b [label="ipu2_ic_prpvf capture\n/dev/video6", shape=box, style=filled, fillcolor=yellow]
n0000006b [label="{{<port0> 0} | ipu2_csi1\n/dev/v4l-subdev11 | {<port1> 1 | <port2> 2}}", shape=Mrecord, style=filled, fillcolor=green]
n0000006b:port2 -> n0000006f [style=dashed]
n0000006b:port1 -> n0000004b:port0 [style=dashed]
n0000006b:port1 -> n00000047:port0 [style=dashed]
n0000006f [label="ipu2_csi1 capture\n/dev/video7", shape=box, style=filled, fillcolor=yellow]
n00000079 [label="{{<port0> 0 | <port1> 1} | ipu1_csi0_mux\n/dev/v4l-subdev12 | {<port2> 2}}", shape=Mrecord, style=filled, fillcolor=green]
n00000079:port2 -> n00000001:port0 [style=dashed]
n0000007d [label="{{<port0> 0 | <port1> 1} | ipu2_csi1_mux\n/dev/v4l-subdev13 | {<port2> 2}}", shape=Mrecord, style=filled, fillcolor=green]
n0000007d:port2 -> n0000006b:port0 [style=dashed]
n00000081 [label="{{} | adv7180 3-0021\n/dev/v4l-subdev14 | {<port0> 0}}", shape=Mrecord, style=filled, fillcolor=green]
n00000081:port0 -> n00000079:port1 [style=dashed]
}

View File

@ -0,0 +1,56 @@
digraph board {
rankdir=TB
n00000001 [label="{{<port0> 0} | ipu1_csi0\n/dev/v4l-subdev0 | {<port1> 1 | <port2> 2}}", shape=Mrecord, style=filled, fillcolor=green]
n00000001:port2 -> n00000005 [style=dashed]
n00000001:port1 -> n0000000f:port0 [style=dashed]
n00000001:port1 -> n0000000b:port0 [style=dashed]
n00000005 [label="ipu1_csi0 capture\n/dev/video0", shape=box, style=filled, fillcolor=yellow]
n0000000b [label="{{<port0> 0 | <port1> 1} | ipu1_vdic\n/dev/v4l-subdev1 | {<port2> 2}}", shape=Mrecord, style=filled, fillcolor=green]
n0000000b:port2 -> n0000000f:port0 [style=dashed]
n0000000f [label="{{<port0> 0} | ipu1_ic_prp\n/dev/v4l-subdev2 | {<port1> 1 | <port2> 2}}", shape=Mrecord, style=filled, fillcolor=green]
n0000000f:port1 -> n00000013:port0 [style=dashed]
n0000000f:port2 -> n0000001c:port0 [style=dashed]
n00000013 [label="{{<port0> 0} | ipu1_ic_prpenc\n/dev/v4l-subdev3 | {<port1> 1}}", shape=Mrecord, style=filled, fillcolor=green]
n00000013:port1 -> n00000016 [style=dashed]
n00000016 [label="ipu1_ic_prpenc capture\n/dev/video1", shape=box, style=filled, fillcolor=yellow]
n0000001c [label="{{<port0> 0} | ipu1_ic_prpvf\n/dev/v4l-subdev4 | {<port1> 1}}", shape=Mrecord, style=filled, fillcolor=green]
n0000001c:port1 -> n0000001f [style=dashed]
n0000001f [label="ipu1_ic_prpvf capture\n/dev/video2", shape=box, style=filled, fillcolor=yellow]
n0000002f [label="{{<port0> 0} | ipu1_csi1\n/dev/v4l-subdev5 | {<port1> 1 | <port2> 2}}", shape=Mrecord, style=filled, fillcolor=green]
n0000002f:port2 -> n00000033 [style=dashed]
n0000002f:port1 -> n0000000f:port0 [style=dashed]
n0000002f:port1 -> n0000000b:port0 [style=dashed]
n00000033 [label="ipu1_csi1 capture\n/dev/video3", shape=box, style=filled, fillcolor=yellow]
n0000003d [label="{{<port0> 0} | ipu2_csi0\n/dev/v4l-subdev6 | {<port1> 1 | <port2> 2}}", shape=Mrecord, style=filled, fillcolor=green]
n0000003d:port2 -> n00000041 [style=dashed]
n0000003d:port1 -> n0000004b:port0 [style=dashed]
n0000003d:port1 -> n00000047:port0 [style=dashed]
n00000041 [label="ipu2_csi0 capture\n/dev/video4", shape=box, style=filled, fillcolor=yellow]
n00000047 [label="{{<port0> 0 | <port1> 1} | ipu2_vdic\n/dev/v4l-subdev7 | {<port2> 2}}", shape=Mrecord, style=filled, fillcolor=green]
n00000047:port2 -> n0000004b:port0 [style=dashed]
n0000004b [label="{{<port0> 0} | ipu2_ic_prp\n/dev/v4l-subdev8 | {<port1> 1 | <port2> 2}}", shape=Mrecord, style=filled, fillcolor=green]
n0000004b:port1 -> n0000004f:port0 [style=dashed]
n0000004b:port2 -> n00000058:port0 [style=dashed]
n0000004f [label="{{<port0> 0} | ipu2_ic_prpenc\n/dev/v4l-subdev9 | {<port1> 1}}", shape=Mrecord, style=filled, fillcolor=green]
n0000004f:port1 -> n00000052 [style=dashed]
n00000052 [label="ipu2_ic_prpenc capture\n/dev/video5", shape=box, style=filled, fillcolor=yellow]
n00000058 [label="{{<port0> 0} | ipu2_ic_prpvf\n/dev/v4l-subdev10 | {<port1> 1}}", shape=Mrecord, style=filled, fillcolor=green]
n00000058:port1 -> n0000005b [style=dashed]
n0000005b [label="ipu2_ic_prpvf capture\n/dev/video6", shape=box, style=filled, fillcolor=yellow]
n0000006b [label="{{<port0> 0} | ipu2_csi1\n/dev/v4l-subdev11 | {<port1> 1 | <port2> 2}}", shape=Mrecord, style=filled, fillcolor=green]
n0000006b:port2 -> n0000006f [style=dashed]
n0000006b:port1 -> n0000004b:port0 [style=dashed]
n0000006b:port1 -> n00000047:port0 [style=dashed]
n0000006f [label="ipu2_csi1 capture\n/dev/video7", shape=box, style=filled, fillcolor=yellow]
n00000079 [label="{{<port0> 0} | imx6-mipi-csi2\n/dev/v4l-subdev12 | {<port1> 1 | <port2> 2 | <port3> 3 | <port4> 4}}", shape=Mrecord, style=filled, fillcolor=green]
n00000079:port2 -> n0000002f:port0 [style=dashed]
n00000079:port3 -> n0000003d:port0 [style=dashed]
n00000079:port1 -> n0000007f:port0 [style=dashed]
n00000079:port4 -> n00000083:port0 [style=dashed]
n0000007f [label="{{<port0> 0 | <port1> 1} | ipu1_csi0_mux\n/dev/v4l-subdev13 | {<port2> 2}}", shape=Mrecord, style=filled, fillcolor=green]
n0000007f:port2 -> n00000001:port0 [style=dashed]
n00000083 [label="{{<port0> 0 | <port1> 1} | ipu2_csi1_mux\n/dev/v4l-subdev14 | {<port2> 2}}", shape=Mrecord, style=filled, fillcolor=green]
n00000083:port2 -> n0000006b:port0 [style=dashed]
n00000087 [label="{{} | ov5640 1-003c\n/dev/v4l-subdev15 | {<port0> 0}}", shape=Mrecord, style=filled, fillcolor=green]
n00000087:port0 -> n00000079:port0 [style=dashed]
}