| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297 |
- # 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'
- - 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 = <4 1 0>;
- 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;
- };
- };
- };
- };
|