1# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause
2%YAML 1.2
3---
4$id: http://devicetree.org/schemas/mfd/wlf,arizona.yaml#
5$schema: http://devicetree.org/meta-schemas/core.yaml#
6
7title: Cirrus Logic/Wolfson Microelectronics Arizona class audio SoCs
8
9maintainers:
10  - patches@opensource.cirrus.com
11
12description: |
13  These devices are audio SoCs with extensive digital capabilities and a
14  range of analogue I/O.
15
16allOf:
17  - $ref: /schemas/spi/spi-peripheral-props.yaml
18  - $ref: /schemas/sound/wlf,arizona.yaml#
19  - $ref: /schemas/regulator/wlf,arizona.yaml#
20  - $ref: /schemas/extcon/wlf,arizona.yaml#
21  - if:
22      properties:
23        compatible:
24          contains:
25            enum:
26              - cirrus,cs47l24
27              - wlf,wm1831
28    then:
29      required:
30        - DCVDD-supply
31        - MICVDD-supply
32    else:
33      properties:
34        LDOVDD-supply:
35          description:
36            Digital power supply, used internally to generate DCVDD when
37            internally supplied.
38
39  - if:
40      properties:
41        compatible:
42          contains:
43            enum:
44              - wlf,wm1814
45              - wlf,wm5102
46              - wlf,wm5110
47              - wlf,wm8280
48              - wlf,wm8997
49              - wlf,wm8998
50    then:
51      properties:
52        DBVDD2-supply:
53          description:
54            Databus power supply.
55
56      required:
57        - DBVDD2-supply
58  - if:
59      properties:
60        compatible:
61          contains:
62            enum:
63              - wlf,wm1814
64              - wlf,wm5102
65              - wlf,wm5110
66              - wlf,wm8280
67              - wlf,wm8998
68    then:
69      properties:
70        DBVDD3-supply:
71          description:
72            Databus power supply.
73
74      required:
75        - DBVDD3-supply
76  - if:
77      properties:
78        compatible:
79          contains:
80            enum:
81              - cirrus,cs47l24
82              - wlf,wm1831
83              - wlf,wm8997
84    then:
85      properties:
86        SPKVDD-supply:
87          description:
88            Mono speaker driver power supply.
89
90      required:
91        - SPKVDD-supply
92    else:
93      properties:
94        SPKVDDL-supply:
95          description:
96            Left speaker driver power supply.
97
98        SPKVDDR-supply:
99          description:
100            Right speaker driver power supply.
101
102      required:
103        - SPKVDDL-supply
104        - SPKVDDR-supply
105
106properties:
107  compatible:
108    enum:
109      - cirrus,cs47l24
110      - wlf,wm1814
111      - wlf,wm1831
112      - wlf,wm5102
113      - wlf,wm5110
114      - wlf,wm8280
115      - wlf,wm8997
116      - wlf,wm8998
117
118  reg:
119    maxItems: 1
120
121  AVDD-supply:
122    description:
123      Analogue power supply.
124
125  CPVDD-supply:
126    description:
127      Charge pump power supply.
128
129  DBVDD1-supply:
130    description:
131      Databus power supply.
132
133  DCVDD-supply:
134    description:
135      Digital power supply, normally supplied internally except on cs47l24,
136      wm1831 where it is mandatory.
137
138  MICVDD-supply:
139    description:
140      Microphone power supply, normally supplied internally except on
141      cs47l24, wm1831 where it is mandatory.
142
143  gpio-controller: true
144
145  '#gpio-cells':
146    description:
147      The first cell is the pin number and the second cell is used to
148      specify optional parameters.
149    const: 2
150
151  wlf,gpio-defaults:
152    description:
153      A list of GPIO configuration register values. Defines for the
154      appropriate values can found in dt-bindings/mfd/arizona.h. If
155      absent, no configuration of these registers is performed. If any
156      entry has a value that is out of range for a 16 bit register then the
157      chip default will be used. If present exactly five values must be
158      specified.
159    $ref: "/schemas/types.yaml#/definitions/uint32-array"
160    minItems: 1
161    maxItems: 5
162
163  interrupt-controller: true
164
165  '#interrupt-cells':
166    description:
167      The first cell is the IRQ number.  The second cell is the flags,
168      encoded as trigger masks.
169    const: 2
170
171  interrupts:
172    maxItems: 1
173
174  clocks:
175    description:
176      Should reference the clocks supplied on MCLK1 and MCLK2.
177    minItems: 1
178    maxItems: 2
179
180  clock-names:
181    description:
182      Should contains two strings mclk1 for the clock supplied on MCLK1,
183      recommended to be a high quality audio reference clock mclk2 for the
184      clock supplied on MCLK2, recommended to be an always on 32k clock.
185    oneOf:
186      - items:
187          - const: mclk1
188      - items:
189          - const: mclk2
190      - items:
191          - const: mclk1
192          - const: mclk2
193
194  reset-gpios:
195    maxItems: 1
196
197  wlf,reset:
198    description:
199      GPIO specifier for the GPIO controlling RESET
200    deprecated: true
201    $ref: /schemas/types.yaml#/definitions/phandle-array
202    maxItems: 1
203
204required:
205  - compatible
206  - AVDD-supply
207  - CPVDD-supply
208  - DBVDD1-supply
209  - gpio-controller
210  - '#gpio-cells'
211  - interrupt-controller
212  - '#interrupt-cells'
213  - interrupts
214
215unevaluatedProperties: false
216
217examples:
218  - |
219    #include <dt-bindings/mfd/arizona.h>
220    i2c@e0004000 {
221        #address-cells = <1>;
222        #size-cells = <0>;
223        reg = <0xe0004000 0x1000>;
224
225        wm5102: codec@1a {
226            compatible = "wlf,wm5102";
227            reg = <0x1a>;
228
229            reset-gpios = <&gpio 0>;
230            wlf,ldoena = <&gpio 1>;
231
232            AVDD-supply = <&vdd1v8>;
233            DBVDD1-supply = <&vdd1v8>;
234            DBVDD2-supply = <&vdd1v8>;
235            DBVDD3-supply = <&vdd1v8>;
236            CPVDD-supply = <&vdd1v8>;
237            LDOVDD-supply = <&vdd1v8>;
238            SPKVDDL-supply = <&vdd5v>;
239            SPKVDDR-supply = <&vdd5v>;
240
241            interrupts = <347>;
242            interrupt-controller;
243            #interrupt-cells = <2>;
244            interrupt-parent = <&gic>;
245
246            gpio-controller;
247            #gpio-cells = <2>;
248
249            #sound-dai-cells = <1>;
250
251            wlf,gpio-defaults = <
252                ARIZONA_GP_FN_TXLRCLK
253                ARIZONA_GP_DEFAULT
254                ARIZONA_GP_DEFAULT
255                ARIZONA_GP_DEFAULT
256                ARIZONA_GP_DEFAULT
257            >;
258
259            clocks = <&clks 0>, <&clks 1>;
260            clock-names = "mclk1", "mclk2";
261
262            wlf,inmode = <ARIZONA_INMODE_DIFF ARIZONA_INMODE_DMIC>;
263            wlf,dmic-ref = <ARIZONA_DMIC_MICBIAS1 ARIZONA_DMIC_MICBIAS3>;
264
265            wlf,use-jd2;
266            wlf,use-jd2-nopull;
267            wlf,jd-invert;
268
269            wlf,micd-software-compare;
270            wlf,micd-detect-debounce = <0>;
271            wlf,micd-pol-gpio = <&codec 2 0>;
272            wlf,micd-rate = <ARIZONA_MICD_TIME_8MS>;
273            wlf,micd-dbtime = <4>;
274            wlf,micd-timeout-ms = <100>;
275            wlf,micd-force-micbias;
276            wlf,micd-configs = <0 ARIZONA_DMIC_MICBIAS1 0>,
277                               <0x2000 ARIZONA_DMIC_MICBIAS2 1>;
278
279            wlf,gpsw = <ARIZONA_GPSW_OPEN>;
280        };
281    };
282