^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1) Video Multiplexer
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2) =================
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4) Video multiplexers allow to select between multiple input ports. Video received
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5) on the active input port is passed through to the output port. Muxes described
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 6) by this binding are controlled by a multiplexer controller that is described by
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 7) the bindings in Documentation/devicetree/bindings/mux/mux-controller.txt
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 8)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 9) Required properties:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 10) - compatible : should be "video-mux"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 11) - mux-controls : mux controller node to use for operating the mux
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 12) - #address-cells: should be <1>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 13) - #size-cells: should be <0>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 14) - port@*: at least three port nodes containing endpoints connecting to the
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 15) source and sink devices according to of_graph bindings. The last port is
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 16) the output port, all others are inputs.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 17)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 18) Optionally, #address-cells, #size-cells, and port nodes can be grouped under a
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 19) ports node as described in Documentation/devicetree/bindings/graph.txt.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 20)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 21) Example:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 22)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 23) mux: mux-controller {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 24) compatible = "gpio-mux";
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 25) #mux-control-cells = <0>;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 26)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 27) mux-gpios = <&gpio1 15 GPIO_ACTIVE_HIGH>;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 28) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 29)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 30) video-mux {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 31) compatible = "video-mux";
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 32) mux-controls = <&mux>;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 33) #address-cells = <1>;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 34) #size-cells = <0>;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 35)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 36) port@0 {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 37) reg = <0>;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 38)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 39) mux_in0: endpoint {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 40) remote-endpoint = <&video_source0_out>;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 41) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 42) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 43)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 44) port@1 {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 45) reg = <1>;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 46)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 47) mux_in1: endpoint {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 48) remote-endpoint = <&video_source1_out>;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 49) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 50) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 51)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 52) port@2 {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 53) reg = <2>;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 54)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 55) mux_out: endpoint {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 56) remote-endpoint = <&capture_interface_in>;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 57) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 58) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 59) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 60) };