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