| # SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause |
| %YAML 1.2 |
| --- |
| $id: http://devicetree.org/schemas/mfd/cirrus,madera.yaml# |
| $schema: http://devicetree.org/meta-schemas/core.yaml# |
| |
| title: Cirrus Logic Madera class audio CODECs Multi-Functional Device |
| |
| maintainers: |
| - patches@opensource.cirrus.com |
| |
| description: | |
| These devices are audio SoCs with extensive digital capabilities and a range |
| of analogue I/O. |
| |
| See also the child driver bindings in: |
| |
| bindings/pinctrl/cirrus,madera.yaml |
| bindings/regulator/wlf,arizona.yaml |
| bindings/sound/cirrus,madera.yaml |
| |
| allOf: |
| - $ref: /schemas/pinctrl/cirrus,madera.yaml# |
| - $ref: /schemas/regulator/wlf,arizona.yaml# |
| - $ref: /schemas/sound/cirrus,madera.yaml# |
| - if: |
| properties: |
| compatible: |
| contains: |
| enum: |
| - cirrus,cs47l85 |
| - wlf,wm1840 |
| then: |
| properties: |
| SPKVDDL-supply: |
| description: |
| Left speaker driver power supply. |
| |
| SPKVDDR-supply: |
| description: |
| Right speaker driver power supply. |
| |
| required: |
| - SPKVDDL-supply |
| - SPKVDDR-supply |
| else: |
| required: |
| - DCVDD-supply |
| - if: |
| properties: |
| compatible: |
| contains: |
| enum: |
| - cirrus,cs47l15 |
| - cirrus,cs47l35 |
| then: |
| properties: |
| SPKVDD-supply: |
| description: |
| Mono speaker driver power supply. |
| |
| required: |
| - SPKVDD-supply |
| - if: |
| properties: |
| compatible: |
| contains: |
| enum: |
| - cirrus,cs47l35 |
| - cirrus,cs47l85 |
| - cirrus,cs47l90 |
| - cirrus,cs47l91 |
| - wlf,wm1840 |
| then: |
| properties: |
| DBVDD2-supply: |
| description: |
| Databus power supply. |
| |
| required: |
| - DBVDD2-supply |
| - if: |
| properties: |
| compatible: |
| contains: |
| enum: |
| - cirrus,cs47l85 |
| - cirrus,cs47l90 |
| - cirrus,cs47l91 |
| - wlf,wm1840 |
| then: |
| properties: |
| DBVDD3-supply: |
| description: |
| Databus power supply. |
| |
| DBVDD4-supply: |
| description: |
| Databus power supply. |
| - if: |
| properties: |
| compatible: |
| contains: |
| enum: |
| - cirrus,cs47l15 |
| then: |
| required: |
| - MICVDD-supply |
| else: |
| properties: |
| CPVDD2-supply: |
| description: |
| Secondary charge pump power supply. |
| |
| required: |
| - CPVDD2-supply |
| |
| properties: |
| compatible: |
| enum: |
| - cirrus,cs47l15 |
| - cirrus,cs47l35 |
| - cirrus,cs47l85 |
| - cirrus,cs47l90 |
| - cirrus,cs47l91 |
| - cirrus,cs42l92 |
| - cirrus,cs47l92 |
| - cirrus,cs47l93 |
| - cirrus,wm1840 |
| |
| reg: |
| maxItems: 1 |
| |
| gpio-controller: true |
| |
| '#gpio-cells': |
| description: |
| The first cell is the pin number. The second cell is reserved for |
| future use and must be zero |
| const: 2 |
| |
| interrupt-controller: true |
| |
| '#interrupt-cells': |
| description: |
| The first cell is the IRQ number. |
| The second cell is the flags, encoded as the trigger masks from |
| bindings/interrupt-controller/interrupts.txt |
| const: 2 |
| |
| interrupts: |
| maxItems: 1 |
| |
| reset-gpios: |
| description: |
| One entry specifying the GPIO controlling /RESET. As defined in |
| bindings/gpio.txt. Although optional, it is strongly recommended |
| to use a hardware reset. |
| maxItems: 1 |
| |
| clocks: |
| description: |
| Should reference the clocks supplied on MCLK1, MCLK2 and MCLK3. |
| minItems: 1 |
| maxItems: 3 |
| |
| clock-names: |
| description: | |
| May contain up to three strings: |
| "mclk1" For the clock supplied on MCLK1, recommended to be a |
| high quality audio reference clock. |
| "mclk2" For the clock supplied on MCLK2, required to be an |
| always on 32k clock. |
| "mclk3" For the clock supplied on MCLK3. |
| oneOf: |
| - items: |
| - const: mclk1 |
| - items: |
| - const: mclk2 |
| - items: |
| - const: mclk3 |
| - items: |
| - const: mclk1 |
| - const: mclk2 |
| - items: |
| - const: mclk1 |
| - const: mclk3 |
| - items: |
| - const: mclk2 |
| - const: mclk3 |
| - items: |
| - const: mclk1 |
| - const: mclk2 |
| - const: mclk3 |
| |
| AVDD-supply: |
| description: |
| Analogue power supply. |
| |
| DBVDD1-supply: |
| description: |
| Databus power supply. |
| |
| CPVDD1-supply: |
| description: |
| Charge pump power supply. |
| |
| DCVDD-supply: |
| description: |
| Digital power supply, optional on CS47L85, WM1840 where it can |
| be supplied internally. |
| |
| MICVDD-supply: |
| description: |
| Microphone power supply, normally supplied internally except on |
| cs47l24, wm1831 where it is mandatory. |
| |
| required: |
| - compatible |
| - gpio-controller |
| - '#gpio-cells' |
| - interrupt-controller |
| - '#interrupt-cells' |
| - interrupt-parent |
| - interrupts |
| - AVDD-supply |
| - DBVDD1-supply |
| - CPVDD1-supply |
| |
| unevaluatedProperties: false |
| |
| examples: |
| - | |
| #include <dt-bindings/sound/madera.h> |
| i2c@e0004000 { |
| #address-cells = <1>; |
| #size-cells = <0>; |
| reg = <0xe0004000 0x1000>; |
| |
| cs47l85: codec@1a { |
| compatible = "cirrus,cs47l85"; |
| reg = <0x1a>; |
| |
| reset-gpios = <&gpio 0>; |
| wlf,ldoena = <&gpio 1>; |
| |
| interrupt-controller; |
| #interrupt-cells = <2>; |
| interrupts = <&host_irq1>; |
| interrupt-parent = <&gic>; |
| |
| gpio-controller; |
| #gpio-cells = <2>; |
| |
| AVDD-supply = <&vdd1v8>; |
| DBVDD1-supply = <&vdd1v8>; |
| DBVDD2-supply = <&vdd1v8>; |
| DBVDD3-supply = <&vdd1v8>; |
| DBVDD4-supply = <&vdd1v8>; |
| CPVDD1-supply = <&vdd1v8>; |
| CPVDD2-supply = <&vdd1v2>; |
| SPKVDDL-supply = <&vdd5v>; |
| SPKVDDR-supply = <&vdd5v>; |
| |
| clocks = <&clks 0>, <&clks 1>, <&clks 2>; |
| clock-names = "mclk1", "mclk2", "mclk3"; |
| |
| cirrus,dmic-ref = <0 0 MADERA_DMIC_REF_MICBIAS1>; |
| cirrus,inmode = < |
| MADERA_INMODE_SE MADERA_INMODE_SE |
| MADERA_INMODE_SE MADERA_INMODE_SE |
| MADERA_INMODE_DIFF MADERA_INMODE_DIFF |
| >; |
| cirrus,max-channels-clocked = <2 0 0>; |
| |
| pinctrl-names = "default"; |
| pinctrl-0 = <&pinsettings>; |
| |
| pinsettings: pin-settings { |
| aif1-pins { |
| groups = "aif1"; |
| function = "aif1"; |
| bias-bus-hold; |
| }; |
| |
| aif2-pins { |
| groups = "aif2"; |
| function = "aif2"; |
| bias-bus-hold; |
| }; |
| |
| aif3-pins { |
| groups = "aif3"; |
| function = "aif3"; |
| bias-bus-hold; |
| }; |
| }; |
| }; |
| }; |