Staging
v0.5.1
https://github.com/torvalds/linux
Raw File
Tip revision: 7d2a07b769330c34b4deabeed939325c77a7ec2f authored by Linus Torvalds on 29 August 2021, 22:04:50 UTC
Linux 5.14
Tip revision: 7d2a07b
video-mux.yaml
# SPDX-License-Identifier: GPL-2.0
%YAML 1.2
---
$id: http://devicetree.org/schemas/media/video-mux.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#

title: Video Multiplexer

maintainers:
  - Sakari Ailus <sakari.ailus@linux.intel.com>
  - Laurent Pinchart <laurent.pinchart@ideasonboard.com>

description:
  Video multiplexers allow to select between multiple input ports. Video
  received on the active input port is passed through to the output port. Muxes
  described by this binding are controlled by a multiplexer controller.

properties:
  compatible:
    const: video-mux

  mux-controls:
    maxItems: 1

  '#address-cells':
    const: 1

  '#size-cells':
    const: 0

  ports:
    $ref: /schemas/graph.yaml#/properties/ports

    patternProperties:
      '^port@':
        $ref: /schemas/graph.yaml#/properties/port

    required:
      - port@0
      - port@1
      - port@2

patternProperties:
  '^port@':
    $ref: /schemas/graph.yaml#/properties/port
    description:
      At least three port nodes containing endpoints connecting to the source
      and sink devices according to of_graph bindings. The last port is the
      output port, all others are inputs.

required:
  - compatible
  - mux-controls

oneOf:
  - required:
      - ports
  - required:
      - port@0
      - port@1
      - port@2

additionalProperties: false

examples:
  - |
    #include <dt-bindings/gpio/gpio.h>

    mux: mux-controller {
        compatible = "gpio-mux";
        #mux-control-cells = <0>;

        mux-gpios = <&gpio1 15 GPIO_ACTIVE_HIGH>;
    };

    video-mux {
        compatible = "video-mux";
        mux-controls = <&mux>;
        #address-cells = <1>;
        #size-cells = <0>;

        port@0 {
            reg = <0>;

            mux_in0: endpoint {
                remote-endpoint = <&video_source0_out>;
            };
        };

        port@1 {
            reg = <1>;

            mux_in1: endpoint {
                remote-endpoint = <&video_source1_out>;
            };
        };

        port@2 {
            reg = <2>;

            mux_out: endpoint {
                remote-endpoint = <&capture_interface_in>;
            };
        };
    };
...
back to top