Hi, this series adds very basic IPUv3 capture support for i.MX5/6 SoCs via a SoC global media controller device that collects all IPUv3 CSIs and their direct sources from the device tree via of_graph bindings. The device is probed from device tree using a capture-subsystem node similarly to the already existing display-subsystem node for imx-drm. Each subdevice is then allowed to add further still missing subdevices to the asynchronous subdevice notifier waitlist until the graph is complete. Each CSI subdevice gets assigned an ipu-capture video_device that corresponds to one direct CSI -> SMFC -> IDMAC channel path. This series does not contain IC support yet. I'd like to add the IC as another subdevice with one sink pad (PRP) that can be connected to either CSI, and two source pads (PRP VF and PRP ENC) that each would get their own video_device. Also included are drivers for the video bus multiplexers in front of the CSIs and for the DesignWare MIPI CSI-2 Host Controller and an example device tree configuration for TC358743 on Nitrogen6X. This is the output of media-ctl --print-dot: digraph board { rankdir=TB n00000001 [label="{{<port0> 0} | IPU0 CSI0\n/dev/v4l-subdev0 | {<port1> 1}}", shape=Mrecord, style=filled, fillcolor=green] n00000001:port1 -> n00000004 n00000004 [label="imx-ipuv3-capture.0\n/dev/video0", shape=box, style=filled, fillcolor=yellow] n0000000a [label="{{<port0> 0} | IPU0 CSI1\n/dev/v4l-subdev1 | {<port1> 1}}", shape=Mrecord, style=filled, fillcolor=green] n0000000a:port1 -> n0000000d n0000000d [label="imx-ipuv3-capture.1\n/dev/video1", shape=box, style=filled, fillcolor=yellow] n00000013 [label="{{<port0> 0} | IPU1 CSI0\n/dev/v4l-subdev2 | {<port1> 1}}", shape=Mrecord, style=filled, fillcolor=green] n00000013:port1 -> n00000016 n00000016 [label="imx-ipuv3-capture.0\n/dev/video2", shape=box, style=filled, fillcolor=yellow] n0000001c [label="{{<port0> 0} | IPU1 CSI1\n/dev/v4l-subdev3 | {<port1> 1}}", shape=Mrecord, style=filled, fillcolor=green] n0000001c:port1 -> n0000001f n0000001f [label="imx-ipuv3-capture.1\n/dev/video3", shape=box, style=filled, fillcolor=yellow] n00000025 [label="{{<port0> 0 | <port1> 1} | mipi_ipu1_mux\n/dev/v4l-subdev4 | {<port2> 2}}", shape=Mrecord, style=filled, fillcolor=green] n00000025:port2 -> n00000001:port0 n00000029 [label="{{<port0> 0 | <port1> 1} | mipi_ipu2_mux\n/dev/v4l-subdev5 | {<port2> 2}}", shape=Mrecord, style=filled, fillcolor=green] n00000029:port2 -> n0000001c:port0 [style=dashed] n0000002d [label="{{<port0> 0} | mipi-csi2\n/dev/v4l-subdev6 | {<port1> 1 | <port2> 2 | <port3> 3 | <port4> 4}}", shape=Mrecord, style=filled, fillcolor=green] n0000002d:port1 -> n00000025:port0 n0000002d:port4 -> n00000029:port0 [style=dashed] n0000002d:port3 -> n00000013:port0 [style=dashed] n0000002d:port2 -> n0000000a:port0 [style=dashed] n00000033 [label="{{} | tc358743 1-000f\n/dev/v4l-subdev7 | {<port0> 0}}", shape=Mrecord, style=filled, fillcolor=green] n00000033:port0 -> n0000002d:port0 } regards Philipp Philipp Zabel (21): [media] v4l2-async: move code out of v4l2_async_notifier_register into v4l2_async_test_nofity_all [media] v4l2-async: allow subdevices to add further subdevices to the notifier waiting list [media] v4l: of: add v4l2_of_subdev_registered [media] v4l2-subdev.h: add prepare_stream op [media] v4l2-async: add new subdevices to the tail of subdev_list [media] imx: Add i.MX SoC wide media device driver [media] imx-ipu: Add i.MX IPUv3 CSI subdevice driver [media] imx: Add i.MX IPUv3 capture driver [media] platform: add video-multiplexer subdevice driver [media] imx: Add i.MX MIPI CSI-2 subdevice driver [media] tc358743: put lanes in STOP state before starting streaming ARM: dts: imx6qdl: Add capture-subsystem node ARM: dts: imx6qdl: Add mipi_ipu1/2 multiplexers, mipi_csi, and their connections ARM: dts: imx6qdl: Add MIPI CSI-2 D-PHY compatible and clocks ARM: dts: nitrogen6x: Add dtsi for BD_HDMI_MIPI HDMI to MIPI CSI-2 receiver board gpu: ipuv3: add ipu_csi_set_downsize [media] imx-ipuv3-csi: support downsizing [media] add mux and video interface bridge entity functions [media] video-multiplexer: set entity function to mux [media] imx: Set i.MX MIPI CSI-2 entity function to bridge [media] tc358743: set entity function to video interface bridge Sascha Hauer (1): [media] imx: Add IPUv3 media common code .../devicetree/bindings/media/fsl-imx-capture.txt | 92 ++ .../bindings/media/video-multiplexer.txt | 59 ++ Documentation/media/uapi/mediactl/media-types.rst | 22 + arch/arm/boot/dts/imx6dl.dtsi | 187 ++++ arch/arm/boot/dts/imx6q.dtsi | 123 +++ .../boot/dts/imx6qdl-nitrogen6x-bd-hdmi-mipi.dtsi | 73 ++ arch/arm/boot/dts/imx6qdl.dtsi | 17 +- drivers/gpu/ipu-v3/ipu-csi.c | 16 + drivers/media/i2c/tc358743.c | 10 + drivers/media/platform/Kconfig | 10 + drivers/media/platform/Makefile | 3 + drivers/media/platform/imx/Kconfig | 33 + drivers/media/platform/imx/Makefile | 5 + drivers/media/platform/imx/imx-ipu-capture.c | 1085 ++++++++++++++++++++ drivers/media/platform/imx/imx-ipu.c | 321 ++++++ drivers/media/platform/imx/imx-ipu.h | 43 + drivers/media/platform/imx/imx-ipuv3-csi.c | 555 ++++++++++ drivers/media/platform/imx/imx-media.c | 249 +++++ drivers/media/platform/imx/imx-mipi-csi2.c | 677 ++++++++++++ drivers/media/platform/video-multiplexer.c | 445 ++++++++ drivers/media/v4l2-core/v4l2-async.c | 96 +- drivers/media/v4l2-core/v4l2-of.c | 68 ++ include/media/v4l2-async.h | 12 + include/media/v4l2-of.h | 12 + include/media/v4l2-subdev.h | 1 + include/uapi/linux/media.h | 6 + include/video/imx-ipu-v3.h | 1 + 27 files changed, 4210 insertions(+), 11 deletions(-) create mode 100644 Documentation/devicetree/bindings/media/fsl-imx-capture.txt create mode 100644 Documentation/devicetree/bindings/media/video-multiplexer.txt create mode 100644 arch/arm/boot/dts/imx6qdl-nitrogen6x-bd-hdmi-mipi.dtsi create mode 100644 drivers/media/platform/imx/Kconfig create mode 100644 drivers/media/platform/imx/Makefile create mode 100644 drivers/media/platform/imx/imx-ipu-capture.c create mode 100644 drivers/media/platform/imx/imx-ipu.c create mode 100644 drivers/media/platform/imx/imx-ipu.h create mode 100644 drivers/media/platform/imx/imx-ipuv3-csi.c create mode 100644 drivers/media/platform/imx/imx-media.c create mode 100644 drivers/media/platform/imx/imx-mipi-csi2.c create mode 100644 drivers/media/platform/video-multiplexer.c -- 2.9.3 -- To unsubscribe from this list: send the line "unsubscribe linux-media" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html