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/wlf,arizona.yaml#
58c2ecf20Sopenharmony_ci$schema: http://devicetree.org/meta-schemas/core.yaml#
68c2ecf20Sopenharmony_ci
78c2ecf20Sopenharmony_cititle: Cirrus Logic/Wolfson Microelectronics Arizona class audio SoCs
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
148c2ecf20Sopenharmony_ci  range of analogue I/O.
158c2ecf20Sopenharmony_ci
168c2ecf20Sopenharmony_ciallOf:
178c2ecf20Sopenharmony_ci  - $ref: /schemas/sound/wlf,arizona.yaml#
188c2ecf20Sopenharmony_ci  - $ref: /schemas/regulator/wlf,arizona.yaml#
198c2ecf20Sopenharmony_ci  - $ref: /schemas/extcon/wlf,arizona.yaml#
208c2ecf20Sopenharmony_ci  - if:
218c2ecf20Sopenharmony_ci      properties:
228c2ecf20Sopenharmony_ci        compatible:
238c2ecf20Sopenharmony_ci          contains:
248c2ecf20Sopenharmony_ci            enum:
258c2ecf20Sopenharmony_ci              - cirrus,cs47l24
268c2ecf20Sopenharmony_ci              - wlf,wm1831
278c2ecf20Sopenharmony_ci    then:
288c2ecf20Sopenharmony_ci      required:
298c2ecf20Sopenharmony_ci        - DCVDD-supply
308c2ecf20Sopenharmony_ci        - MICVDD-supply
318c2ecf20Sopenharmony_ci    else:
328c2ecf20Sopenharmony_ci      properties:
338c2ecf20Sopenharmony_ci        LDOVDD-supply:
348c2ecf20Sopenharmony_ci          description:
358c2ecf20Sopenharmony_ci            Digital power supply, used internally to generate DCVDD when
368c2ecf20Sopenharmony_ci            internally supplied.
378c2ecf20Sopenharmony_ci
388c2ecf20Sopenharmony_ci  - if:
398c2ecf20Sopenharmony_ci      properties:
408c2ecf20Sopenharmony_ci        compatible:
418c2ecf20Sopenharmony_ci          contains:
428c2ecf20Sopenharmony_ci            enum:
438c2ecf20Sopenharmony_ci              - wlf,wm1814
448c2ecf20Sopenharmony_ci              - wlf,wm5102
458c2ecf20Sopenharmony_ci              - wlf,wm5110
468c2ecf20Sopenharmony_ci              - wlf,wm8280
478c2ecf20Sopenharmony_ci              - wlf,wm8997
488c2ecf20Sopenharmony_ci              - wlf,wm8998
498c2ecf20Sopenharmony_ci    then:
508c2ecf20Sopenharmony_ci      properties:
518c2ecf20Sopenharmony_ci        DBVDD2-supply:
528c2ecf20Sopenharmony_ci          description:
538c2ecf20Sopenharmony_ci            Databus power supply.
548c2ecf20Sopenharmony_ci
558c2ecf20Sopenharmony_ci      required:
568c2ecf20Sopenharmony_ci        - DBVDD2-supply
578c2ecf20Sopenharmony_ci  - if:
588c2ecf20Sopenharmony_ci      properties:
598c2ecf20Sopenharmony_ci        compatible:
608c2ecf20Sopenharmony_ci          contains:
618c2ecf20Sopenharmony_ci            enum:
628c2ecf20Sopenharmony_ci              - wlf,wm1814
638c2ecf20Sopenharmony_ci              - wlf,wm5102
648c2ecf20Sopenharmony_ci              - wlf,wm5110
658c2ecf20Sopenharmony_ci              - wlf,wm8280
668c2ecf20Sopenharmony_ci              - wlf,wm8998
678c2ecf20Sopenharmony_ci    then:
688c2ecf20Sopenharmony_ci      properties:
698c2ecf20Sopenharmony_ci        DBVDD3-supply:
708c2ecf20Sopenharmony_ci          description:
718c2ecf20Sopenharmony_ci            Databus power supply.
728c2ecf20Sopenharmony_ci
738c2ecf20Sopenharmony_ci      required:
748c2ecf20Sopenharmony_ci        - DBVDD3-supply
758c2ecf20Sopenharmony_ci  - if:
768c2ecf20Sopenharmony_ci      properties:
778c2ecf20Sopenharmony_ci        compatible:
788c2ecf20Sopenharmony_ci          contains:
798c2ecf20Sopenharmony_ci            enum:
808c2ecf20Sopenharmony_ci              - cirrus,cs47l24
818c2ecf20Sopenharmony_ci              - wlf,wm1831
828c2ecf20Sopenharmony_ci              - wlf,wm8997
838c2ecf20Sopenharmony_ci    then:
848c2ecf20Sopenharmony_ci      properties:
858c2ecf20Sopenharmony_ci        SPKVDD-supply:
868c2ecf20Sopenharmony_ci          description:
878c2ecf20Sopenharmony_ci            Mono speaker driver power supply.
888c2ecf20Sopenharmony_ci
898c2ecf20Sopenharmony_ci      required:
908c2ecf20Sopenharmony_ci        - SPKVDD-supply
918c2ecf20Sopenharmony_ci    else:
928c2ecf20Sopenharmony_ci      properties:
938c2ecf20Sopenharmony_ci        SPKVDDL-supply:
948c2ecf20Sopenharmony_ci          description:
958c2ecf20Sopenharmony_ci            Left speaker driver power supply.
968c2ecf20Sopenharmony_ci
978c2ecf20Sopenharmony_ci        SPKVDDR-supply:
988c2ecf20Sopenharmony_ci          description:
998c2ecf20Sopenharmony_ci            Right speaker driver power supply.
1008c2ecf20Sopenharmony_ci
1018c2ecf20Sopenharmony_ci      required:
1028c2ecf20Sopenharmony_ci        - SPKVDDL-supply
1038c2ecf20Sopenharmony_ci        - SPKVDDR-supply
1048c2ecf20Sopenharmony_ci
1058c2ecf20Sopenharmony_ciproperties:
1068c2ecf20Sopenharmony_ci  compatible:
1078c2ecf20Sopenharmony_ci    enum:
1088c2ecf20Sopenharmony_ci      - cirrus,cs47l24
1098c2ecf20Sopenharmony_ci      - wlf,wm1814
1108c2ecf20Sopenharmony_ci      - wlf,wm1831
1118c2ecf20Sopenharmony_ci      - wlf,wm5102
1128c2ecf20Sopenharmony_ci      - wlf,wm5110
1138c2ecf20Sopenharmony_ci      - wlf,wm8280
1148c2ecf20Sopenharmony_ci      - wlf,wm8997
1158c2ecf20Sopenharmony_ci      - wlf,wm8998
1168c2ecf20Sopenharmony_ci
1178c2ecf20Sopenharmony_ci  reg:
1188c2ecf20Sopenharmony_ci    maxItems: 1
1198c2ecf20Sopenharmony_ci
1208c2ecf20Sopenharmony_ci  AVDD-supply:
1218c2ecf20Sopenharmony_ci    description:
1228c2ecf20Sopenharmony_ci      Analogue power supply.
1238c2ecf20Sopenharmony_ci
1248c2ecf20Sopenharmony_ci  CPVDD-supply:
1258c2ecf20Sopenharmony_ci    description:
1268c2ecf20Sopenharmony_ci      Charge pump power supply.
1278c2ecf20Sopenharmony_ci
1288c2ecf20Sopenharmony_ci  DBVDD1-supply:
1298c2ecf20Sopenharmony_ci    description:
1308c2ecf20Sopenharmony_ci      Databus power supply.
1318c2ecf20Sopenharmony_ci
1328c2ecf20Sopenharmony_ci  DCVDD-supply:
1338c2ecf20Sopenharmony_ci    description:
1348c2ecf20Sopenharmony_ci      Digital power supply, normally supplied internally except on cs47l24,
1358c2ecf20Sopenharmony_ci      wm1831 where it is mandatory.
1368c2ecf20Sopenharmony_ci
1378c2ecf20Sopenharmony_ci  MICVDD-supply:
1388c2ecf20Sopenharmony_ci    description:
1398c2ecf20Sopenharmony_ci      Microphone power supply, normally supplied internally except on
1408c2ecf20Sopenharmony_ci      cs47l24, wm1831 where it is mandatory.
1418c2ecf20Sopenharmony_ci
1428c2ecf20Sopenharmony_ci  gpio-controller: true
1438c2ecf20Sopenharmony_ci
1448c2ecf20Sopenharmony_ci  '#gpio-cells':
1458c2ecf20Sopenharmony_ci    description:
1468c2ecf20Sopenharmony_ci      The first cell is the pin number and the second cell is used to
1478c2ecf20Sopenharmony_ci      specify optional parameters.
1488c2ecf20Sopenharmony_ci    const: 2
1498c2ecf20Sopenharmony_ci
1508c2ecf20Sopenharmony_ci  wlf,gpio-defaults:
1518c2ecf20Sopenharmony_ci    description:
1528c2ecf20Sopenharmony_ci      A list of GPIO configuration register values. Defines for the
1538c2ecf20Sopenharmony_ci      appropriate values can found in dt-bindings/mfd/arizona.h. If
1548c2ecf20Sopenharmony_ci      absent, no configuration of these registers is performed. If any
1558c2ecf20Sopenharmony_ci      entry has a value that is out of range for a 16 bit register then the
1568c2ecf20Sopenharmony_ci      chip default will be used. If present exactly five values must be
1578c2ecf20Sopenharmony_ci      specified.
1588c2ecf20Sopenharmony_ci    $ref: "/schemas/types.yaml#/definitions/uint32-array"
1598c2ecf20Sopenharmony_ci    minItems: 1
1608c2ecf20Sopenharmony_ci    maxItems: 5
1618c2ecf20Sopenharmony_ci
1628c2ecf20Sopenharmony_ci  interrupt-controller: true
1638c2ecf20Sopenharmony_ci
1648c2ecf20Sopenharmony_ci  '#interrupt-cells':
1658c2ecf20Sopenharmony_ci    description:
1668c2ecf20Sopenharmony_ci      The first cell is the IRQ number.  The second cell is the flags,
1678c2ecf20Sopenharmony_ci      encoded as trigger masks.
1688c2ecf20Sopenharmony_ci    const: 2
1698c2ecf20Sopenharmony_ci
1708c2ecf20Sopenharmony_ci  interrupts:
1718c2ecf20Sopenharmony_ci    maxItems: 1
1728c2ecf20Sopenharmony_ci
1738c2ecf20Sopenharmony_ci  clocks:
1748c2ecf20Sopenharmony_ci    description:
1758c2ecf20Sopenharmony_ci      Should reference the clocks supplied on MCLK1 and MCLK2.
1768c2ecf20Sopenharmony_ci    minItems: 1
1778c2ecf20Sopenharmony_ci    maxItems: 2
1788c2ecf20Sopenharmony_ci
1798c2ecf20Sopenharmony_ci  clock-names:
1808c2ecf20Sopenharmony_ci    description:
1818c2ecf20Sopenharmony_ci      Should contains two strings mclk1 for the clock supplied on MCLK1,
1828c2ecf20Sopenharmony_ci      recommended to be a high quality audio reference clock mclk2 for the
1838c2ecf20Sopenharmony_ci      clock supplied on MCLK2, recommended to be an always on 32k clock.
1848c2ecf20Sopenharmony_ci    oneOf:
1858c2ecf20Sopenharmony_ci      - items:
1868c2ecf20Sopenharmony_ci          - const: mclk1
1878c2ecf20Sopenharmony_ci      - items:
1888c2ecf20Sopenharmony_ci          - const: mclk2
1898c2ecf20Sopenharmony_ci      - items:
1908c2ecf20Sopenharmony_ci          - const: mclk1
1918c2ecf20Sopenharmony_ci          - const: mclk2
1928c2ecf20Sopenharmony_ci
1938c2ecf20Sopenharmony_ci  reset-gpios:
1948c2ecf20Sopenharmony_ci    maxItems: 1
1958c2ecf20Sopenharmony_ci
1968c2ecf20Sopenharmony_ci  wlf,reset:
1978c2ecf20Sopenharmony_ci    description:
1988c2ecf20Sopenharmony_ci      GPIO specifier for the GPIO controlling RESET
1998c2ecf20Sopenharmony_ci    deprecated: true
2008c2ecf20Sopenharmony_ci    $ref: /schemas/types.yaml#/definitions/phandle-array
2018c2ecf20Sopenharmony_ci    maxItems: 1
2028c2ecf20Sopenharmony_ci
2038c2ecf20Sopenharmony_cirequired:
2048c2ecf20Sopenharmony_ci  - compatible
2058c2ecf20Sopenharmony_ci  - AVDD-supply
2068c2ecf20Sopenharmony_ci  - CPVDD-supply
2078c2ecf20Sopenharmony_ci  - DBVDD1-supply
2088c2ecf20Sopenharmony_ci  - gpio-controller
2098c2ecf20Sopenharmony_ci  - '#gpio-cells'
2108c2ecf20Sopenharmony_ci  - interrupt-controller
2118c2ecf20Sopenharmony_ci  - '#interrupt-cells'
2128c2ecf20Sopenharmony_ci  - interrupts
2138c2ecf20Sopenharmony_ci
2148c2ecf20Sopenharmony_ciunevaluatedProperties: false
2158c2ecf20Sopenharmony_ci
2168c2ecf20Sopenharmony_ciexamples:
2178c2ecf20Sopenharmony_ci  - |
2188c2ecf20Sopenharmony_ci    #include <dt-bindings/mfd/arizona.h>
2198c2ecf20Sopenharmony_ci    i2c@e0004000 {
2208c2ecf20Sopenharmony_ci        #address-cells = <1>;
2218c2ecf20Sopenharmony_ci        #size-cells = <0>;
2228c2ecf20Sopenharmony_ci        reg = <0xe0004000 0x1000>;
2238c2ecf20Sopenharmony_ci
2248c2ecf20Sopenharmony_ci        wm5102: codec@1a {
2258c2ecf20Sopenharmony_ci            compatible = "wlf,wm5102";
2268c2ecf20Sopenharmony_ci            reg = <0x1a>;
2278c2ecf20Sopenharmony_ci
2288c2ecf20Sopenharmony_ci            reset-gpios = <&gpio 0>;
2298c2ecf20Sopenharmony_ci            wlf,ldoena = <&gpio 1>;
2308c2ecf20Sopenharmony_ci
2318c2ecf20Sopenharmony_ci            AVDD-supply = <&vdd1v8>;
2328c2ecf20Sopenharmony_ci            DBVDD1-supply = <&vdd1v8>;
2338c2ecf20Sopenharmony_ci            DBVDD2-supply = <&vdd1v8>;
2348c2ecf20Sopenharmony_ci            DBVDD3-supply = <&vdd1v8>;
2358c2ecf20Sopenharmony_ci            CPVDD-supply = <&vdd1v8>;
2368c2ecf20Sopenharmony_ci            LDOVDD-supply = <&vdd1v8>;
2378c2ecf20Sopenharmony_ci            SPKVDDL-supply = <&vdd5v>;
2388c2ecf20Sopenharmony_ci            SPKVDDR-supply = <&vdd5v>;
2398c2ecf20Sopenharmony_ci
2408c2ecf20Sopenharmony_ci            interrupts = <347>;
2418c2ecf20Sopenharmony_ci            interrupt-controller;
2428c2ecf20Sopenharmony_ci            #interrupt-cells = <2>;
2438c2ecf20Sopenharmony_ci            interrupt-parent = <&gic>;
2448c2ecf20Sopenharmony_ci
2458c2ecf20Sopenharmony_ci            gpio-controller;
2468c2ecf20Sopenharmony_ci            #gpio-cells = <2>;
2478c2ecf20Sopenharmony_ci
2488c2ecf20Sopenharmony_ci            #sound-dai-cells = <1>;
2498c2ecf20Sopenharmony_ci
2508c2ecf20Sopenharmony_ci            wlf,gpio-defaults = <
2518c2ecf20Sopenharmony_ci                ARIZONA_GP_FN_TXLRCLK
2528c2ecf20Sopenharmony_ci                ARIZONA_GP_DEFAULT
2538c2ecf20Sopenharmony_ci                ARIZONA_GP_DEFAULT
2548c2ecf20Sopenharmony_ci                ARIZONA_GP_DEFAULT
2558c2ecf20Sopenharmony_ci                ARIZONA_GP_DEFAULT
2568c2ecf20Sopenharmony_ci            >;
2578c2ecf20Sopenharmony_ci
2588c2ecf20Sopenharmony_ci            clocks = <&clks 0>, <&clks 1>;
2598c2ecf20Sopenharmony_ci            clock-names = "mclk1", "mclk2";
2608c2ecf20Sopenharmony_ci
2618c2ecf20Sopenharmony_ci            wlf,inmode = <ARIZONA_INMODE_DIFF ARIZONA_INMODE_DMIC>;
2628c2ecf20Sopenharmony_ci            wlf,dmic-ref = <ARIZONA_DMIC_MICBIAS1 ARIZONA_DMIC_MICBIAS3>;
2638c2ecf20Sopenharmony_ci
2648c2ecf20Sopenharmony_ci            wlf,use-jd2;
2658c2ecf20Sopenharmony_ci            wlf,use-jd2-nopull;
2668c2ecf20Sopenharmony_ci            wlf,jd-invert;
2678c2ecf20Sopenharmony_ci
2688c2ecf20Sopenharmony_ci            wlf,micd-software-compare;
2698c2ecf20Sopenharmony_ci            wlf,micd-detect-debounce = <0>;
2708c2ecf20Sopenharmony_ci            wlf,micd-pol-gpio = <&codec 2 0>;
2718c2ecf20Sopenharmony_ci            wlf,micd-rate = <ARIZONA_MICD_TIME_8MS>;
2728c2ecf20Sopenharmony_ci            wlf,micd-dbtime = <4>;
2738c2ecf20Sopenharmony_ci            wlf,micd-timeout-ms = <100>;
2748c2ecf20Sopenharmony_ci            wlf,micd-force-micbias;
2758c2ecf20Sopenharmony_ci            wlf,micd-configs = <0 ARIZONA_DMIC_MICBIAS1 0>,
2768c2ecf20Sopenharmony_ci                               <0x2000 ARIZONA_DMIC_MICBIAS2 1>;
2778c2ecf20Sopenharmony_ci
2788c2ecf20Sopenharmony_ci            wlf,gpsw = <ARIZONA_GPSW_OPEN>;
2798c2ecf20Sopenharmony_ci        };
2808c2ecf20Sopenharmony_ci    };
281