1# SPDX-License-Identifier: GPL-2.0
2%YAML 1.2
3---
4$id: http://devicetree.org/schemas/media/video-mux.yaml#
5$schema: http://devicetree.org/meta-schemas/core.yaml#
6
7title: Video Multiplexer
8
9maintainers:
10  - Sakari Ailus <sakari.ailus@linux.intel.com>
11  - Laurent Pinchart <laurent.pinchart@ideasonboard.com>
12
13description:
14  Video multiplexers allow to select between multiple input ports. Video
15  received on the active input port is passed through to the output port. Muxes
16  described by this binding are controlled by a multiplexer controller.
17
18properties:
19  compatible:
20    const: video-mux
21
22  mux-controls:
23    maxItems: 1
24
25  '#address-cells':
26    const: 1
27
28  '#size-cells':
29    const: 0
30
31  ports:
32    $ref: /schemas/graph.yaml#/properties/ports
33
34    patternProperties:
35      '^port@':
36        $ref: /schemas/graph.yaml#/properties/port
37
38    required:
39      - port@0
40      - port@1
41      - port@2
42
43patternProperties:
44  '^port@':
45    $ref: /schemas/graph.yaml#/properties/port
46    description:
47      At least three port nodes containing endpoints connecting to the source
48      and sink devices according to of_graph bindings. The last port is the
49      output port, all others are inputs.
50
51required:
52  - compatible
53  - mux-controls
54
55oneOf:
56  - required:
57      - ports
58  - required:
59      - port@0
60      - port@1
61      - port@2
62
63additionalProperties: false
64
65examples:
66  - |
67    #include <dt-bindings/gpio/gpio.h>
68
69    mux: mux-controller {
70        compatible = "gpio-mux";
71        #mux-control-cells = <0>;
72
73        mux-gpios = <&gpio1 15 GPIO_ACTIVE_HIGH>;
74    };
75
76    video-mux {
77        compatible = "video-mux";
78        mux-controls = <&mux>;
79        #address-cells = <1>;
80        #size-cells = <0>;
81
82        port@0 {
83            reg = <0>;
84
85            mux_in0: endpoint {
86                remote-endpoint = <&video_source0_out>;
87            };
88        };
89
90        port@1 {
91            reg = <1>;
92
93            mux_in1: endpoint {
94                remote-endpoint = <&video_source1_out>;
95            };
96        };
97
98        port@2 {
99            reg = <2>;
100
101            mux_out: endpoint {
102                remote-endpoint = <&capture_interface_in>;
103            };
104        };
105    };
106...
107