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