162306a36Sopenharmony_ci# SPDX-License-Identifier: GPL-2.0
262306a36Sopenharmony_ci%YAML 1.2
362306a36Sopenharmony_ci---
462306a36Sopenharmony_ci$id: http://devicetree.org/schemas/media/video-mux.yaml#
562306a36Sopenharmony_ci$schema: http://devicetree.org/meta-schemas/core.yaml#
662306a36Sopenharmony_ci
762306a36Sopenharmony_cititle: Video Multiplexer
862306a36Sopenharmony_ci
962306a36Sopenharmony_cimaintainers:
1062306a36Sopenharmony_ci  - Sakari Ailus <sakari.ailus@linux.intel.com>
1162306a36Sopenharmony_ci  - Laurent Pinchart <laurent.pinchart@ideasonboard.com>
1262306a36Sopenharmony_ci
1362306a36Sopenharmony_cidescription:
1462306a36Sopenharmony_ci  Video multiplexers allow to select between multiple input ports. Video
1562306a36Sopenharmony_ci  received on the active input port is passed through to the output port. Muxes
1662306a36Sopenharmony_ci  described by this binding are controlled by a multiplexer controller.
1762306a36Sopenharmony_ci
1862306a36Sopenharmony_ciproperties:
1962306a36Sopenharmony_ci  compatible:
2062306a36Sopenharmony_ci    const: video-mux
2162306a36Sopenharmony_ci
2262306a36Sopenharmony_ci  mux-controls:
2362306a36Sopenharmony_ci    maxItems: 1
2462306a36Sopenharmony_ci
2562306a36Sopenharmony_ci  '#address-cells':
2662306a36Sopenharmony_ci    const: 1
2762306a36Sopenharmony_ci
2862306a36Sopenharmony_ci  '#size-cells':
2962306a36Sopenharmony_ci    const: 0
3062306a36Sopenharmony_ci
3162306a36Sopenharmony_ci  ports:
3262306a36Sopenharmony_ci    $ref: /schemas/graph.yaml#/properties/ports
3362306a36Sopenharmony_ci
3462306a36Sopenharmony_ci    patternProperties:
3562306a36Sopenharmony_ci      '^port@':
3662306a36Sopenharmony_ci        $ref: /schemas/graph.yaml#/properties/port
3762306a36Sopenharmony_ci
3862306a36Sopenharmony_ci    required:
3962306a36Sopenharmony_ci      - port@0
4062306a36Sopenharmony_ci      - port@1
4162306a36Sopenharmony_ci      - port@2
4262306a36Sopenharmony_ci
4362306a36Sopenharmony_cipatternProperties:
4462306a36Sopenharmony_ci  '^port@':
4562306a36Sopenharmony_ci    $ref: /schemas/graph.yaml#/properties/port
4662306a36Sopenharmony_ci    description:
4762306a36Sopenharmony_ci      At least three port nodes containing endpoints connecting to the source
4862306a36Sopenharmony_ci      and sink devices according to of_graph bindings. The last port is the
4962306a36Sopenharmony_ci      output port, all others are inputs.
5062306a36Sopenharmony_ci
5162306a36Sopenharmony_cirequired:
5262306a36Sopenharmony_ci  - compatible
5362306a36Sopenharmony_ci  - mux-controls
5462306a36Sopenharmony_ci
5562306a36Sopenharmony_cioneOf:
5662306a36Sopenharmony_ci  - required:
5762306a36Sopenharmony_ci      - ports
5862306a36Sopenharmony_ci  - required:
5962306a36Sopenharmony_ci      - port@0
6062306a36Sopenharmony_ci      - port@1
6162306a36Sopenharmony_ci      - port@2
6262306a36Sopenharmony_ci
6362306a36Sopenharmony_ciadditionalProperties: false
6462306a36Sopenharmony_ci
6562306a36Sopenharmony_ciexamples:
6662306a36Sopenharmony_ci  - |
6762306a36Sopenharmony_ci    #include <dt-bindings/gpio/gpio.h>
6862306a36Sopenharmony_ci
6962306a36Sopenharmony_ci    mux: mux-controller {
7062306a36Sopenharmony_ci        compatible = "gpio-mux";
7162306a36Sopenharmony_ci        #mux-control-cells = <0>;
7262306a36Sopenharmony_ci
7362306a36Sopenharmony_ci        mux-gpios = <&gpio1 15 GPIO_ACTIVE_HIGH>;
7462306a36Sopenharmony_ci    };
7562306a36Sopenharmony_ci
7662306a36Sopenharmony_ci    video-mux {
7762306a36Sopenharmony_ci        compatible = "video-mux";
7862306a36Sopenharmony_ci        mux-controls = <&mux>;
7962306a36Sopenharmony_ci        #address-cells = <1>;
8062306a36Sopenharmony_ci        #size-cells = <0>;
8162306a36Sopenharmony_ci
8262306a36Sopenharmony_ci        port@0 {
8362306a36Sopenharmony_ci            reg = <0>;
8462306a36Sopenharmony_ci
8562306a36Sopenharmony_ci            mux_in0: endpoint {
8662306a36Sopenharmony_ci                remote-endpoint = <&video_source0_out>;
8762306a36Sopenharmony_ci            };
8862306a36Sopenharmony_ci        };
8962306a36Sopenharmony_ci
9062306a36Sopenharmony_ci        port@1 {
9162306a36Sopenharmony_ci            reg = <1>;
9262306a36Sopenharmony_ci
9362306a36Sopenharmony_ci            mux_in1: endpoint {
9462306a36Sopenharmony_ci                remote-endpoint = <&video_source1_out>;
9562306a36Sopenharmony_ci            };
9662306a36Sopenharmony_ci        };
9762306a36Sopenharmony_ci
9862306a36Sopenharmony_ci        port@2 {
9962306a36Sopenharmony_ci            reg = <2>;
10062306a36Sopenharmony_ci
10162306a36Sopenharmony_ci            mux_out: endpoint {
10262306a36Sopenharmony_ci                remote-endpoint = <&capture_interface_in>;
10362306a36Sopenharmony_ci            };
10462306a36Sopenharmony_ci        };
10562306a36Sopenharmony_ci    };
10662306a36Sopenharmony_ci...
107