blob: dc4be092fc2fcf44f60fdd46134c9d3c67c620e2 [file] [log] [blame]
Tom Rini53633a82024-02-29 12:33:36 -05001# SPDX-License-Identifier: GPL-2.0
2%YAML 1.2
3---
4$id: http://devicetree.org/schemas/mux/reg-mux.yaml#
5$schema: http://devicetree.org/meta-schemas/core.yaml#
6
7title: Generic register bitfield-based multiplexer controller
8
9maintainers:
10 - Peter Rosin <peda@axentia.se>
11
12description: |+
13 Define register bitfields to be used to control multiplexers. The parent
14 device tree node must be a device node to provide register r/w access.
15
16properties:
17 compatible:
18 enum:
19 - reg-mux # parent device of mux controller is not syscon device
20 - mmio-mux # parent device of mux controller is syscon device
21
22 reg: true
23
24 '#mux-control-cells':
25 const: 1
26
27 mux-reg-masks:
28 $ref: /schemas/types.yaml#/definitions/uint32-matrix
29 items:
30 items:
31 - description: register offset
32 - description: pre-shifted bitfield mask
33 description: Each entry pair describes a single mux control.
34
35 idle-states: true
36
37required:
38 - compatible
39 - mux-reg-masks
40 - '#mux-control-cells'
41
42additionalProperties: false
43
44examples:
45 - |
46 /* The parent device of mux controller is not a syscon device. */
47
48 #include <dt-bindings/mux/mux.h>
49
50 mux-controller {
51 compatible = "reg-mux";
52 #mux-control-cells = <1>;
53 mux-reg-masks =
54 <0x54 0xf8>, /* 0: reg 0x54, bits 7:3 */
55 <0x54 0x07>; /* 1: reg 0x54, bits 2:0 */
56 };
57
58 mdio-mux-1 {
59 compatible = "mdio-mux-multiplexer";
60 mux-controls = <&mux1 0>;
61 mdio-parent-bus = <&emdio1>;
62 #address-cells = <1>;
63 #size-cells = <0>;
64
65 mdio@0 {
66 reg = <0x0>;
67 #address-cells = <1>;
68 #size-cells = <0>;
69 };
70
71 mdio@8 {
72 reg = <0x8>;
73 #address-cells = <1>;
74 #size-cells = <0>;
75 };
76 };
77
78 mdio-mux-2 {
79 compatible = "mdio-mux-multiplexer";
80 mux-controls = <&mux1 1>;
81 mdio-parent-bus = <&emdio2>;
82 #address-cells = <1>;
83 #size-cells = <0>;
84
85 mdio@0 {
86 reg = <0x0>;
87 #address-cells = <1>;
88 #size-cells = <0>;
89 };
90
91 mdio@1 {
92 reg = <0x1>;
93 #address-cells = <1>;
94 #size-cells = <0>;
95 };
96 };
97
98 - |
99 /* The parent device of mux controller is syscon device. */
100
101 #include <dt-bindings/mux/mux.h>
102 syscon@1000 {
103 reg = <0x1000 0x100>;
104
105 mux2: mux-controller {
106 compatible = "mmio-mux";
107 #mux-control-cells = <1>;
108
109 mux-reg-masks =
110 <0x3 0x30>, /* 0: reg 0x3, bits 5:4 */
111 <0x3 0x40>; /* 1: reg 0x3, bit 6 */
112 idle-states = <MUX_IDLE_AS_IS>, <0>;
113 };
114 };
115
116 video-mux {
117 compatible = "video-mux";
118 mux-controls = <&mux2 0>;
119 #address-cells = <1>;
120 #size-cells = <0>;
121
122 ports {
123 #address-cells = <1>;
124 #size-cells = <0>;
125
126 /* inputs 0..3 */
127 port@0 {
128 reg = <0>;
129 };
130 port@1 {
131 reg = <1>;
132 };
133 port@2 {
134 reg = <2>;
135 };
136 port@3 {
137 reg = <3>;
138 };
139
140 /* output */
141 port@4 {
142 reg = <4>;
143 };
144 };
145 };
146...