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