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