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