WIP FPC-III support
[linux/fpc-iii.git] / Documentation / devicetree / bindings / mfd / cirrus,madera.yaml
blob499c62c04daab1dbfafd034b0bf0108121ffd5b4
1 # SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause
2 %YAML 1.2
3 ---
4 $id: http://devicetree.org/schemas/mfd/cirrus,madera.yaml#
5 $schema: http://devicetree.org/meta-schemas/core.yaml#
7 title: Cirrus Logic Madera class audio CODECs Multi-Functional Device
9 maintainers:
10   - patches@opensource.cirrus.com
12 description: |
13   These devices are audio SoCs with extensive digital capabilities and a range
14   of analogue I/O.
16   See also the child driver bindings in:
18     bindings/pinctrl/cirrus,madera.yaml
19     bindings/regulator/wlf,arizona.yaml
20     bindings/sound/cirrus,madera.yaml
22 allOf:
23   - $ref: /schemas/pinctrl/cirrus,madera.yaml#
24   - $ref: /schemas/regulator/wlf,arizona.yaml#
25   - $ref: /schemas/sound/cirrus,madera.yaml#
26   - if:
27       properties:
28         compatible:
29           contains:
30             enum:
31               - cirrus,cs47l85
32               - wlf,wm1840
33     then:
34       properties:
35         SPKVDDL-supply:
36           description:
37             Left speaker driver power supply.
39         SPKVDDR-supply:
40           description:
41             Right speaker driver power supply.
43       required:
44         - SPKVDDL-supply
45         - SPKVDDR-supply
46     else:
47       required:
48         - DCVDD-supply
49   - if:
50       properties:
51         compatible:
52           contains:
53             enum:
54               - cirrus,cs47l15
55               - cirrus,cs47l35
56     then:
57       properties:
58         SPKVDD-supply:
59           description:
60             Mono speaker driver power supply.
62       required:
63         - SPKVDD-supply
64   - if:
65       properties:
66         compatible:
67           contains:
68             enum:
69               - cirrus,cs47l35
70               - cirrus,cs47l85
71               - cirrus,cs47l90
72               - cirrus,cs47l91
73               - wlf,wm1840
74     then:
75       properties:
76         DBVDD2-supply:
77           description:
78             Databus power supply.
80       required:
81         - DBVDD2-supply
82   - if:
83       properties:
84         compatible:
85           contains:
86             enum:
87               - cirrus,cs47l85
88               - cirrus,cs47l90
89               - cirrus,cs47l91
90               - wlf,wm1840
91     then:
92       properties:
93         DBVDD3-supply:
94           description:
95             Databus power supply.
97         DBVDD4-supply:
98           description:
99             Databus power supply.
100   - if:
101       properties:
102         compatible:
103           contains:
104             enum:
105               - cirrus,cs47l15
106     then:
107       required:
108         - MICVDD-supply
109     else:
110       properties:
111         CPVDD2-supply:
112           description:
113             Secondary charge pump power supply.
115       required:
116         - CPVDD2-supply
118 properties:
119   compatible:
120     enum:
121       - cirrus,cs47l15
122       - cirrus,cs47l35
123       - cirrus,cs47l85
124       - cirrus,cs47l90
125       - cirrus,cs47l91
126       - cirrus,cs42l92
127       - cirrus,cs47l92
128       - cirrus,cs47l93
129       - cirrus,wm1840
131   reg:
132     maxItems: 1
134   gpio-controller: true
136   '#gpio-cells':
137     description:
138       The first cell is the pin number. The second cell is reserved for
139       future use and must be zero
140     const: 2
142   interrupt-controller: true
144   '#interrupt-cells':
145     description:
146       The first cell is the IRQ number.
147       The second cell is the flags, encoded as the trigger masks from
148       bindings/interrupt-controller/interrupts.txt
149     const: 2
151   interrupts:
152     maxItems: 1
154   reset-gpios:
155     description:
156       One entry specifying the GPIO controlling /RESET.  As defined in
157       bindings/gpio.txt.  Although optional, it is strongly recommended
158       to use a hardware reset.
159     maxItems: 1
161   clocks:
162     description:
163       Should reference the clocks supplied on MCLK1, MCLK2 and MCLK3.
164     minItems: 1
165     maxItems: 3
167   clock-names:
168     description: |
169       May contain up to three strings:
170         "mclk1" For the clock supplied on MCLK1, recommended to be a
171                 high quality audio reference clock.
172         "mclk2" For the clock supplied on MCLK2, required to be an
173                 always on 32k clock.
174         "mclk3" For the clock supplied on MCLK3.
175     oneOf:
176       - items:
177           - const: mclk1
178       - items:
179           - const: mclk2
180       - items:
181           - const: mclk3
182       - items:
183           - const: mclk1
184           - const: mclk2
185       - items:
186           - const: mclk1
187           - const: mclk3
188       - items:
189           - const: mclk2
190           - const: mclk3
191       - items:
192           - const: mclk1
193           - const: mclk2
194           - const: mclk3
196   AVDD-supply:
197     description:
198       Analogue power supply.
200   DBVDD1-supply:
201     description:
202       Databus power supply.
204   CPVDD1-supply:
205     description:
206       Charge pump power supply.
208   DCVDD-supply:
209     description:
210       Digital power supply, optional on CS47L85, WM1840 where it can
211       be supplied internally.
213   MICVDD-supply:
214     description:
215       Microphone power supply, normally supplied internally except on
216       cs47l24, wm1831 where it is mandatory.
218 required:
219   - compatible
220   - gpio-controller
221   - '#gpio-cells'
222   - interrupt-controller
223   - '#interrupt-cells'
224   - interrupt-parent
225   - interrupts
226   - AVDD-supply
227   - DBVDD1-supply
228   - CPVDD1-supply
230 unevaluatedProperties: false
232 examples:
233   - |
234     #include <dt-bindings/sound/madera.h>
235     i2c@e0004000 {
236         #address-cells = <1>;
237         #size-cells = <0>;
238         reg = <0xe0004000 0x1000>;
240         cs47l85: codec@1a {
241             compatible = "cirrus,cs47l85";
242             reg = <0x1a>;
244             reset-gpios = <&gpio 0>;
245             wlf,ldoena = <&gpio 1>;
247             interrupt-controller;
248             #interrupt-cells = <2>;
249             interrupts = <&host_irq1>;
250             interrupt-parent = <&gic>;
252             gpio-controller;
253             #gpio-cells = <2>;
255             AVDD-supply = <&vdd1v8>;
256             DBVDD1-supply = <&vdd1v8>;
257             DBVDD2-supply = <&vdd1v8>;
258             DBVDD3-supply = <&vdd1v8>;
259             DBVDD4-supply = <&vdd1v8>;
260             CPVDD1-supply = <&vdd1v8>;
261             CPVDD2-supply = <&vdd1v2>;
262             SPKVDDL-supply = <&vdd5v>;
263             SPKVDDR-supply = <&vdd5v>;
265             clocks = <&clks 0>, <&clks 1>, <&clks 2>;
266             clock-names = "mclk1", "mclk2", "mclk3";
268             cirrus,dmic-ref = <0 0 MADERA_DMIC_REF_MICBIAS1>;
269             cirrus,inmode = <
270                 MADERA_INMODE_SE   MADERA_INMODE_SE
271                 MADERA_INMODE_SE   MADERA_INMODE_SE
272                 MADERA_INMODE_DIFF MADERA_INMODE_DIFF
273             >;
274             cirrus,max-channels-clocked = <2 0 0>;
276             pinctrl-names = "default";
277             pinctrl-0 = <&pinsettings>;
279             pinsettings: pin-settings {
280                 aif1-pins {
281                     groups = "aif1";
282                     function = "aif1";
283                     bias-bus-hold;
284                 };
286                 aif2-pins {
287                     groups = "aif2";
288                     function = "aif2";
289                     bias-bus-hold;
290                 };
292                 aif3-pins {
293                     groups = "aif3";
294                     function = "aif3";
295                     bias-bus-hold;
296                 };
297             };
298         };
299     };