18c2ecf20Sopenharmony_ci# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause
28c2ecf20Sopenharmony_ci%YAML 1.2
38c2ecf20Sopenharmony_ci---
48c2ecf20Sopenharmony_ci$id: http://devicetree.org/schemas/mfd/cirrus,madera.yaml#
58c2ecf20Sopenharmony_ci$schema: http://devicetree.org/meta-schemas/core.yaml#
68c2ecf20Sopenharmony_ci
78c2ecf20Sopenharmony_cititle: Cirrus Logic Madera class audio CODECs Multi-Functional Device
88c2ecf20Sopenharmony_ci
98c2ecf20Sopenharmony_cimaintainers:
108c2ecf20Sopenharmony_ci  - patches@opensource.cirrus.com
118c2ecf20Sopenharmony_ci
128c2ecf20Sopenharmony_cidescription: |
138c2ecf20Sopenharmony_ci  These devices are audio SoCs with extensive digital capabilities and a range
148c2ecf20Sopenharmony_ci  of analogue I/O.
158c2ecf20Sopenharmony_ci
168c2ecf20Sopenharmony_ci  See also the child driver bindings in:
178c2ecf20Sopenharmony_ci
188c2ecf20Sopenharmony_ci    bindings/pinctrl/cirrus,madera.yaml
198c2ecf20Sopenharmony_ci    bindings/regulator/wlf,arizona.yaml
208c2ecf20Sopenharmony_ci    bindings/sound/cirrus,madera.yaml
218c2ecf20Sopenharmony_ci
228c2ecf20Sopenharmony_ciallOf:
238c2ecf20Sopenharmony_ci  - $ref: /schemas/pinctrl/cirrus,madera.yaml#
248c2ecf20Sopenharmony_ci  - $ref: /schemas/regulator/wlf,arizona.yaml#
258c2ecf20Sopenharmony_ci  - $ref: /schemas/sound/cirrus,madera.yaml#
268c2ecf20Sopenharmony_ci  - if:
278c2ecf20Sopenharmony_ci      properties:
288c2ecf20Sopenharmony_ci        compatible:
298c2ecf20Sopenharmony_ci          contains:
308c2ecf20Sopenharmony_ci            enum:
318c2ecf20Sopenharmony_ci              - cirrus,cs47l85
328c2ecf20Sopenharmony_ci              - wlf,wm1840
338c2ecf20Sopenharmony_ci    then:
348c2ecf20Sopenharmony_ci      properties:
358c2ecf20Sopenharmony_ci        SPKVDDL-supply:
368c2ecf20Sopenharmony_ci          description:
378c2ecf20Sopenharmony_ci            Left speaker driver power supply.
388c2ecf20Sopenharmony_ci
398c2ecf20Sopenharmony_ci        SPKVDDR-supply:
408c2ecf20Sopenharmony_ci          description:
418c2ecf20Sopenharmony_ci            Right speaker driver power supply.
428c2ecf20Sopenharmony_ci
438c2ecf20Sopenharmony_ci      required:
448c2ecf20Sopenharmony_ci        - SPKVDDL-supply
458c2ecf20Sopenharmony_ci        - SPKVDDR-supply
468c2ecf20Sopenharmony_ci    else:
478c2ecf20Sopenharmony_ci      required:
488c2ecf20Sopenharmony_ci        - DCVDD-supply
498c2ecf20Sopenharmony_ci  - if:
508c2ecf20Sopenharmony_ci      properties:
518c2ecf20Sopenharmony_ci        compatible:
528c2ecf20Sopenharmony_ci          contains:
538c2ecf20Sopenharmony_ci            enum:
548c2ecf20Sopenharmony_ci              - cirrus,cs47l15
558c2ecf20Sopenharmony_ci              - cirrus,cs47l35
568c2ecf20Sopenharmony_ci    then:
578c2ecf20Sopenharmony_ci      properties:
588c2ecf20Sopenharmony_ci        SPKVDD-supply:
598c2ecf20Sopenharmony_ci          description:
608c2ecf20Sopenharmony_ci            Mono speaker driver power supply.
618c2ecf20Sopenharmony_ci
628c2ecf20Sopenharmony_ci      required:
638c2ecf20Sopenharmony_ci        - SPKVDD-supply
648c2ecf20Sopenharmony_ci  - if:
658c2ecf20Sopenharmony_ci      properties:
668c2ecf20Sopenharmony_ci        compatible:
678c2ecf20Sopenharmony_ci          contains:
688c2ecf20Sopenharmony_ci            enum:
698c2ecf20Sopenharmony_ci              - cirrus,cs47l35
708c2ecf20Sopenharmony_ci              - cirrus,cs47l85
718c2ecf20Sopenharmony_ci              - cirrus,cs47l90
728c2ecf20Sopenharmony_ci              - cirrus,cs47l91
738c2ecf20Sopenharmony_ci              - wlf,wm1840
748c2ecf20Sopenharmony_ci    then:
758c2ecf20Sopenharmony_ci      properties:
768c2ecf20Sopenharmony_ci        DBVDD2-supply:
778c2ecf20Sopenharmony_ci          description:
788c2ecf20Sopenharmony_ci            Databus power supply.
798c2ecf20Sopenharmony_ci
808c2ecf20Sopenharmony_ci      required:
818c2ecf20Sopenharmony_ci        - DBVDD2-supply
828c2ecf20Sopenharmony_ci  - if:
838c2ecf20Sopenharmony_ci      properties:
848c2ecf20Sopenharmony_ci        compatible:
858c2ecf20Sopenharmony_ci          contains:
868c2ecf20Sopenharmony_ci            enum:
878c2ecf20Sopenharmony_ci              - cirrus,cs47l85
888c2ecf20Sopenharmony_ci              - cirrus,cs47l90
898c2ecf20Sopenharmony_ci              - cirrus,cs47l91
908c2ecf20Sopenharmony_ci              - wlf,wm1840
918c2ecf20Sopenharmony_ci    then:
928c2ecf20Sopenharmony_ci      properties:
938c2ecf20Sopenharmony_ci        DBVDD3-supply:
948c2ecf20Sopenharmony_ci          description:
958c2ecf20Sopenharmony_ci            Databus power supply.
968c2ecf20Sopenharmony_ci
978c2ecf20Sopenharmony_ci        DBVDD4-supply:
988c2ecf20Sopenharmony_ci          description:
998c2ecf20Sopenharmony_ci            Databus power supply.
1008c2ecf20Sopenharmony_ci  - if:
1018c2ecf20Sopenharmony_ci      properties:
1028c2ecf20Sopenharmony_ci        compatible:
1038c2ecf20Sopenharmony_ci          contains:
1048c2ecf20Sopenharmony_ci            enum:
1058c2ecf20Sopenharmony_ci              - cirrus,cs47l15
1068c2ecf20Sopenharmony_ci    then:
1078c2ecf20Sopenharmony_ci      required:
1088c2ecf20Sopenharmony_ci        - MICVDD-supply
1098c2ecf20Sopenharmony_ci    else:
1108c2ecf20Sopenharmony_ci      properties:
1118c2ecf20Sopenharmony_ci        CPVDD2-supply:
1128c2ecf20Sopenharmony_ci          description:
1138c2ecf20Sopenharmony_ci            Secondary charge pump power supply.
1148c2ecf20Sopenharmony_ci
1158c2ecf20Sopenharmony_ci      required:
1168c2ecf20Sopenharmony_ci        - CPVDD2-supply
1178c2ecf20Sopenharmony_ci
1188c2ecf20Sopenharmony_ciproperties:
1198c2ecf20Sopenharmony_ci  compatible:
1208c2ecf20Sopenharmony_ci    enum:
1218c2ecf20Sopenharmony_ci      - cirrus,cs47l15
1228c2ecf20Sopenharmony_ci      - cirrus,cs47l35
1238c2ecf20Sopenharmony_ci      - cirrus,cs47l85
1248c2ecf20Sopenharmony_ci      - cirrus,cs47l90
1258c2ecf20Sopenharmony_ci      - cirrus,cs47l91
1268c2ecf20Sopenharmony_ci      - cirrus,cs42l92
1278c2ecf20Sopenharmony_ci      - cirrus,cs47l92
1288c2ecf20Sopenharmony_ci      - cirrus,cs47l93
1298c2ecf20Sopenharmony_ci      - cirrus,wm1840
1308c2ecf20Sopenharmony_ci
1318c2ecf20Sopenharmony_ci  reg:
1328c2ecf20Sopenharmony_ci    maxItems: 1
1338c2ecf20Sopenharmony_ci
1348c2ecf20Sopenharmony_ci  gpio-controller: true
1358c2ecf20Sopenharmony_ci
1368c2ecf20Sopenharmony_ci  '#gpio-cells':
1378c2ecf20Sopenharmony_ci    description:
1388c2ecf20Sopenharmony_ci      The first cell is the pin number. The second cell is reserved for
1398c2ecf20Sopenharmony_ci      future use and must be zero
1408c2ecf20Sopenharmony_ci    const: 2
1418c2ecf20Sopenharmony_ci
1428c2ecf20Sopenharmony_ci  interrupt-controller: true
1438c2ecf20Sopenharmony_ci
1448c2ecf20Sopenharmony_ci  '#interrupt-cells':
1458c2ecf20Sopenharmony_ci    description:
1468c2ecf20Sopenharmony_ci      The first cell is the IRQ number.
1478c2ecf20Sopenharmony_ci      The second cell is the flags, encoded as the trigger masks from
1488c2ecf20Sopenharmony_ci      bindings/interrupt-controller/interrupts.txt
1498c2ecf20Sopenharmony_ci    const: 2
1508c2ecf20Sopenharmony_ci
1518c2ecf20Sopenharmony_ci  interrupts:
1528c2ecf20Sopenharmony_ci    maxItems: 1
1538c2ecf20Sopenharmony_ci
1548c2ecf20Sopenharmony_ci  reset-gpios:
1558c2ecf20Sopenharmony_ci    description:
1568c2ecf20Sopenharmony_ci      One entry specifying the GPIO controlling /RESET.  As defined in
1578c2ecf20Sopenharmony_ci      bindings/gpio.txt.  Although optional, it is strongly recommended
1588c2ecf20Sopenharmony_ci      to use a hardware reset.
1598c2ecf20Sopenharmony_ci    maxItems: 1
1608c2ecf20Sopenharmony_ci
1618c2ecf20Sopenharmony_ci  clocks:
1628c2ecf20Sopenharmony_ci    description:
1638c2ecf20Sopenharmony_ci      Should reference the clocks supplied on MCLK1, MCLK2 and MCLK3.
1648c2ecf20Sopenharmony_ci    minItems: 1
1658c2ecf20Sopenharmony_ci    maxItems: 3
1668c2ecf20Sopenharmony_ci
1678c2ecf20Sopenharmony_ci  clock-names:
1688c2ecf20Sopenharmony_ci    description: |
1698c2ecf20Sopenharmony_ci      May contain up to three strings:
1708c2ecf20Sopenharmony_ci        "mclk1" For the clock supplied on MCLK1, recommended to be a
1718c2ecf20Sopenharmony_ci                high quality audio reference clock.
1728c2ecf20Sopenharmony_ci        "mclk2" For the clock supplied on MCLK2, required to be an
1738c2ecf20Sopenharmony_ci                always on 32k clock.
1748c2ecf20Sopenharmony_ci        "mclk3" For the clock supplied on MCLK3.
1758c2ecf20Sopenharmony_ci    oneOf:
1768c2ecf20Sopenharmony_ci      - items:
1778c2ecf20Sopenharmony_ci          - const: mclk1
1788c2ecf20Sopenharmony_ci      - items:
1798c2ecf20Sopenharmony_ci          - const: mclk2
1808c2ecf20Sopenharmony_ci      - items:
1818c2ecf20Sopenharmony_ci          - const: mclk3
1828c2ecf20Sopenharmony_ci      - items:
1838c2ecf20Sopenharmony_ci          - const: mclk1
1848c2ecf20Sopenharmony_ci          - const: mclk2
1858c2ecf20Sopenharmony_ci      - items:
1868c2ecf20Sopenharmony_ci          - const: mclk1
1878c2ecf20Sopenharmony_ci          - const: mclk3
1888c2ecf20Sopenharmony_ci      - items:
1898c2ecf20Sopenharmony_ci          - const: mclk2
1908c2ecf20Sopenharmony_ci          - const: mclk3
1918c2ecf20Sopenharmony_ci      - items:
1928c2ecf20Sopenharmony_ci          - const: mclk1
1938c2ecf20Sopenharmony_ci          - const: mclk2
1948c2ecf20Sopenharmony_ci          - const: mclk3
1958c2ecf20Sopenharmony_ci
1968c2ecf20Sopenharmony_ci  AVDD-supply:
1978c2ecf20Sopenharmony_ci    description:
1988c2ecf20Sopenharmony_ci      Analogue power supply.
1998c2ecf20Sopenharmony_ci
2008c2ecf20Sopenharmony_ci  DBVDD1-supply:
2018c2ecf20Sopenharmony_ci    description:
2028c2ecf20Sopenharmony_ci      Databus power supply.
2038c2ecf20Sopenharmony_ci
2048c2ecf20Sopenharmony_ci  CPVDD1-supply:
2058c2ecf20Sopenharmony_ci    description:
2068c2ecf20Sopenharmony_ci      Charge pump power supply.
2078c2ecf20Sopenharmony_ci
2088c2ecf20Sopenharmony_ci  DCVDD-supply:
2098c2ecf20Sopenharmony_ci    description:
2108c2ecf20Sopenharmony_ci      Digital power supply, optional on CS47L85, WM1840 where it can
2118c2ecf20Sopenharmony_ci      be supplied internally.
2128c2ecf20Sopenharmony_ci
2138c2ecf20Sopenharmony_ci  MICVDD-supply:
2148c2ecf20Sopenharmony_ci    description:
2158c2ecf20Sopenharmony_ci      Microphone power supply, normally supplied internally except on
2168c2ecf20Sopenharmony_ci      cs47l24, wm1831 where it is mandatory.
2178c2ecf20Sopenharmony_ci
2188c2ecf20Sopenharmony_cirequired:
2198c2ecf20Sopenharmony_ci  - compatible
2208c2ecf20Sopenharmony_ci  - gpio-controller
2218c2ecf20Sopenharmony_ci  - '#gpio-cells'
2228c2ecf20Sopenharmony_ci  - interrupt-controller
2238c2ecf20Sopenharmony_ci  - '#interrupt-cells'
2248c2ecf20Sopenharmony_ci  - interrupt-parent
2258c2ecf20Sopenharmony_ci  - interrupts
2268c2ecf20Sopenharmony_ci  - AVDD-supply
2278c2ecf20Sopenharmony_ci  - DBVDD1-supply
2288c2ecf20Sopenharmony_ci  - CPVDD1-supply
2298c2ecf20Sopenharmony_ci
2308c2ecf20Sopenharmony_ciunevaluatedProperties: false
2318c2ecf20Sopenharmony_ci
2328c2ecf20Sopenharmony_ciexamples:
2338c2ecf20Sopenharmony_ci  - |
2348c2ecf20Sopenharmony_ci    #include <dt-bindings/sound/madera.h>
2358c2ecf20Sopenharmony_ci    i2c@e0004000 {
2368c2ecf20Sopenharmony_ci        #address-cells = <1>;
2378c2ecf20Sopenharmony_ci        #size-cells = <0>;
2388c2ecf20Sopenharmony_ci        reg = <0xe0004000 0x1000>;
2398c2ecf20Sopenharmony_ci
2408c2ecf20Sopenharmony_ci        cs47l85: codec@1a {
2418c2ecf20Sopenharmony_ci            compatible = "cirrus,cs47l85";
2428c2ecf20Sopenharmony_ci            reg = <0x1a>;
2438c2ecf20Sopenharmony_ci
2448c2ecf20Sopenharmony_ci            reset-gpios = <&gpio 0>;
2458c2ecf20Sopenharmony_ci            wlf,ldoena = <&gpio 1>;
2468c2ecf20Sopenharmony_ci
2478c2ecf20Sopenharmony_ci            interrupt-controller;
2488c2ecf20Sopenharmony_ci            #interrupt-cells = <2>;
2498c2ecf20Sopenharmony_ci            interrupts = <&host_irq1>;
2508c2ecf20Sopenharmony_ci            interrupt-parent = <&gic>;
2518c2ecf20Sopenharmony_ci
2528c2ecf20Sopenharmony_ci            gpio-controller;
2538c2ecf20Sopenharmony_ci            #gpio-cells = <2>;
2548c2ecf20Sopenharmony_ci
2558c2ecf20Sopenharmony_ci            AVDD-supply = <&vdd1v8>;
2568c2ecf20Sopenharmony_ci            DBVDD1-supply = <&vdd1v8>;
2578c2ecf20Sopenharmony_ci            DBVDD2-supply = <&vdd1v8>;
2588c2ecf20Sopenharmony_ci            DBVDD3-supply = <&vdd1v8>;
2598c2ecf20Sopenharmony_ci            DBVDD4-supply = <&vdd1v8>;
2608c2ecf20Sopenharmony_ci            CPVDD1-supply = <&vdd1v8>;
2618c2ecf20Sopenharmony_ci            CPVDD2-supply = <&vdd1v2>;
2628c2ecf20Sopenharmony_ci            SPKVDDL-supply = <&vdd5v>;
2638c2ecf20Sopenharmony_ci            SPKVDDR-supply = <&vdd5v>;
2648c2ecf20Sopenharmony_ci
2658c2ecf20Sopenharmony_ci            clocks = <&clks 0>, <&clks 1>, <&clks 2>;
2668c2ecf20Sopenharmony_ci            clock-names = "mclk1", "mclk2", "mclk3";
2678c2ecf20Sopenharmony_ci
2688c2ecf20Sopenharmony_ci            cirrus,dmic-ref = <0 0 MADERA_DMIC_REF_MICBIAS1>;
2698c2ecf20Sopenharmony_ci            cirrus,inmode = <
2708c2ecf20Sopenharmony_ci                MADERA_INMODE_SE   MADERA_INMODE_SE
2718c2ecf20Sopenharmony_ci                MADERA_INMODE_SE   MADERA_INMODE_SE
2728c2ecf20Sopenharmony_ci                MADERA_INMODE_DIFF MADERA_INMODE_DIFF
2738c2ecf20Sopenharmony_ci            >;
2748c2ecf20Sopenharmony_ci            cirrus,max-channels-clocked = <2 0 0>;
2758c2ecf20Sopenharmony_ci
2768c2ecf20Sopenharmony_ci            pinctrl-names = "default";
2778c2ecf20Sopenharmony_ci            pinctrl-0 = <&pinsettings>;
2788c2ecf20Sopenharmony_ci
2798c2ecf20Sopenharmony_ci            pinsettings: pin-settings {
2808c2ecf20Sopenharmony_ci                aif1-pins {
2818c2ecf20Sopenharmony_ci                    groups = "aif1";
2828c2ecf20Sopenharmony_ci                    function = "aif1";
2838c2ecf20Sopenharmony_ci                    bias-bus-hold;
2848c2ecf20Sopenharmony_ci                };
2858c2ecf20Sopenharmony_ci
2868c2ecf20Sopenharmony_ci                aif2-pins {
2878c2ecf20Sopenharmony_ci                    groups = "aif2";
2888c2ecf20Sopenharmony_ci                    function = "aif2";
2898c2ecf20Sopenharmony_ci                    bias-bus-hold;
2908c2ecf20Sopenharmony_ci                };
2918c2ecf20Sopenharmony_ci
2928c2ecf20Sopenharmony_ci                aif3-pins {
2938c2ecf20Sopenharmony_ci                    groups = "aif3";
2948c2ecf20Sopenharmony_ci                    function = "aif3";
2958c2ecf20Sopenharmony_ci                    bias-bus-hold;
2968c2ecf20Sopenharmony_ci                };
2978c2ecf20Sopenharmony_ci            };
2988c2ecf20Sopenharmony_ci        };
2998c2ecf20Sopenharmony_ci    };
300