162306a36Sopenharmony_ci# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause
262306a36Sopenharmony_ci%YAML 1.2
362306a36Sopenharmony_ci---
462306a36Sopenharmony_ci$id: http://devicetree.org/schemas/mfd/wlf,arizona.yaml#
562306a36Sopenharmony_ci$schema: http://devicetree.org/meta-schemas/core.yaml#
662306a36Sopenharmony_ci
762306a36Sopenharmony_cititle: Cirrus Logic/Wolfson Microelectronics Arizona class audio SoCs
862306a36Sopenharmony_ci
962306a36Sopenharmony_cimaintainers:
1062306a36Sopenharmony_ci  - patches@opensource.cirrus.com
1162306a36Sopenharmony_ci
1262306a36Sopenharmony_cidescription: |
1362306a36Sopenharmony_ci  These devices are audio SoCs with extensive digital capabilities and a
1462306a36Sopenharmony_ci  range of analogue I/O.
1562306a36Sopenharmony_ci
1662306a36Sopenharmony_ciallOf:
1762306a36Sopenharmony_ci  - $ref: /schemas/spi/spi-peripheral-props.yaml
1862306a36Sopenharmony_ci  - $ref: /schemas/sound/wlf,arizona.yaml#
1962306a36Sopenharmony_ci  - $ref: /schemas/regulator/wlf,arizona.yaml#
2062306a36Sopenharmony_ci  - $ref: /schemas/extcon/wlf,arizona.yaml#
2162306a36Sopenharmony_ci  - if:
2262306a36Sopenharmony_ci      properties:
2362306a36Sopenharmony_ci        compatible:
2462306a36Sopenharmony_ci          contains:
2562306a36Sopenharmony_ci            enum:
2662306a36Sopenharmony_ci              - cirrus,cs47l24
2762306a36Sopenharmony_ci              - wlf,wm1831
2862306a36Sopenharmony_ci    then:
2962306a36Sopenharmony_ci      required:
3062306a36Sopenharmony_ci        - DCVDD-supply
3162306a36Sopenharmony_ci        - MICVDD-supply
3262306a36Sopenharmony_ci    else:
3362306a36Sopenharmony_ci      properties:
3462306a36Sopenharmony_ci        LDOVDD-supply:
3562306a36Sopenharmony_ci          description:
3662306a36Sopenharmony_ci            Digital power supply, used internally to generate DCVDD when
3762306a36Sopenharmony_ci            internally supplied.
3862306a36Sopenharmony_ci
3962306a36Sopenharmony_ci  - if:
4062306a36Sopenharmony_ci      properties:
4162306a36Sopenharmony_ci        compatible:
4262306a36Sopenharmony_ci          contains:
4362306a36Sopenharmony_ci            enum:
4462306a36Sopenharmony_ci              - wlf,wm1814
4562306a36Sopenharmony_ci              - wlf,wm5102
4662306a36Sopenharmony_ci              - wlf,wm5110
4762306a36Sopenharmony_ci              - wlf,wm8280
4862306a36Sopenharmony_ci              - wlf,wm8997
4962306a36Sopenharmony_ci              - wlf,wm8998
5062306a36Sopenharmony_ci    then:
5162306a36Sopenharmony_ci      properties:
5262306a36Sopenharmony_ci        DBVDD2-supply:
5362306a36Sopenharmony_ci          description:
5462306a36Sopenharmony_ci            Databus power supply.
5562306a36Sopenharmony_ci
5662306a36Sopenharmony_ci      required:
5762306a36Sopenharmony_ci        - DBVDD2-supply
5862306a36Sopenharmony_ci  - if:
5962306a36Sopenharmony_ci      properties:
6062306a36Sopenharmony_ci        compatible:
6162306a36Sopenharmony_ci          contains:
6262306a36Sopenharmony_ci            enum:
6362306a36Sopenharmony_ci              - wlf,wm1814
6462306a36Sopenharmony_ci              - wlf,wm5102
6562306a36Sopenharmony_ci              - wlf,wm5110
6662306a36Sopenharmony_ci              - wlf,wm8280
6762306a36Sopenharmony_ci              - wlf,wm8998
6862306a36Sopenharmony_ci    then:
6962306a36Sopenharmony_ci      properties:
7062306a36Sopenharmony_ci        DBVDD3-supply:
7162306a36Sopenharmony_ci          description:
7262306a36Sopenharmony_ci            Databus power supply.
7362306a36Sopenharmony_ci
7462306a36Sopenharmony_ci      required:
7562306a36Sopenharmony_ci        - DBVDD3-supply
7662306a36Sopenharmony_ci  - if:
7762306a36Sopenharmony_ci      properties:
7862306a36Sopenharmony_ci        compatible:
7962306a36Sopenharmony_ci          contains:
8062306a36Sopenharmony_ci            enum:
8162306a36Sopenharmony_ci              - cirrus,cs47l24
8262306a36Sopenharmony_ci              - wlf,wm1831
8362306a36Sopenharmony_ci              - wlf,wm8997
8462306a36Sopenharmony_ci    then:
8562306a36Sopenharmony_ci      properties:
8662306a36Sopenharmony_ci        SPKVDD-supply:
8762306a36Sopenharmony_ci          description:
8862306a36Sopenharmony_ci            Mono speaker driver power supply.
8962306a36Sopenharmony_ci
9062306a36Sopenharmony_ci      required:
9162306a36Sopenharmony_ci        - SPKVDD-supply
9262306a36Sopenharmony_ci    else:
9362306a36Sopenharmony_ci      properties:
9462306a36Sopenharmony_ci        SPKVDDL-supply:
9562306a36Sopenharmony_ci          description:
9662306a36Sopenharmony_ci            Left speaker driver power supply.
9762306a36Sopenharmony_ci
9862306a36Sopenharmony_ci        SPKVDDR-supply:
9962306a36Sopenharmony_ci          description:
10062306a36Sopenharmony_ci            Right speaker driver power supply.
10162306a36Sopenharmony_ci
10262306a36Sopenharmony_ci      required:
10362306a36Sopenharmony_ci        - SPKVDDL-supply
10462306a36Sopenharmony_ci        - SPKVDDR-supply
10562306a36Sopenharmony_ci
10662306a36Sopenharmony_ciproperties:
10762306a36Sopenharmony_ci  compatible:
10862306a36Sopenharmony_ci    enum:
10962306a36Sopenharmony_ci      - cirrus,cs47l24
11062306a36Sopenharmony_ci      - wlf,wm1814
11162306a36Sopenharmony_ci      - wlf,wm1831
11262306a36Sopenharmony_ci      - wlf,wm5102
11362306a36Sopenharmony_ci      - wlf,wm5110
11462306a36Sopenharmony_ci      - wlf,wm8280
11562306a36Sopenharmony_ci      - wlf,wm8997
11662306a36Sopenharmony_ci      - wlf,wm8998
11762306a36Sopenharmony_ci
11862306a36Sopenharmony_ci  reg:
11962306a36Sopenharmony_ci    maxItems: 1
12062306a36Sopenharmony_ci
12162306a36Sopenharmony_ci  AVDD-supply:
12262306a36Sopenharmony_ci    description:
12362306a36Sopenharmony_ci      Analogue power supply.
12462306a36Sopenharmony_ci
12562306a36Sopenharmony_ci  CPVDD-supply:
12662306a36Sopenharmony_ci    description:
12762306a36Sopenharmony_ci      Charge pump power supply.
12862306a36Sopenharmony_ci
12962306a36Sopenharmony_ci  DBVDD1-supply:
13062306a36Sopenharmony_ci    description:
13162306a36Sopenharmony_ci      Databus power supply.
13262306a36Sopenharmony_ci
13362306a36Sopenharmony_ci  DCVDD-supply:
13462306a36Sopenharmony_ci    description:
13562306a36Sopenharmony_ci      Digital power supply, normally supplied internally except on cs47l24,
13662306a36Sopenharmony_ci      wm1831 where it is mandatory.
13762306a36Sopenharmony_ci
13862306a36Sopenharmony_ci  MICVDD-supply:
13962306a36Sopenharmony_ci    description:
14062306a36Sopenharmony_ci      Microphone power supply, normally supplied internally except on
14162306a36Sopenharmony_ci      cs47l24, wm1831 where it is mandatory.
14262306a36Sopenharmony_ci
14362306a36Sopenharmony_ci  gpio-controller: true
14462306a36Sopenharmony_ci
14562306a36Sopenharmony_ci  '#gpio-cells':
14662306a36Sopenharmony_ci    description:
14762306a36Sopenharmony_ci      The first cell is the pin number and the second cell is used to
14862306a36Sopenharmony_ci      specify optional parameters.
14962306a36Sopenharmony_ci    const: 2
15062306a36Sopenharmony_ci
15162306a36Sopenharmony_ci  wlf,gpio-defaults:
15262306a36Sopenharmony_ci    description:
15362306a36Sopenharmony_ci      A list of GPIO configuration register values. Defines for the
15462306a36Sopenharmony_ci      appropriate values can found in dt-bindings/mfd/arizona.h. If
15562306a36Sopenharmony_ci      absent, no configuration of these registers is performed. If any
15662306a36Sopenharmony_ci      entry has a value that is out of range for a 16 bit register then the
15762306a36Sopenharmony_ci      chip default will be used. If present exactly five values must be
15862306a36Sopenharmony_ci      specified.
15962306a36Sopenharmony_ci    $ref: /schemas/types.yaml#/definitions/uint32-array
16062306a36Sopenharmony_ci    minItems: 1
16162306a36Sopenharmony_ci    maxItems: 5
16262306a36Sopenharmony_ci
16362306a36Sopenharmony_ci  interrupt-controller: true
16462306a36Sopenharmony_ci
16562306a36Sopenharmony_ci  '#interrupt-cells':
16662306a36Sopenharmony_ci    description:
16762306a36Sopenharmony_ci      The first cell is the IRQ number.  The second cell is the flags,
16862306a36Sopenharmony_ci      encoded as trigger masks.
16962306a36Sopenharmony_ci    const: 2
17062306a36Sopenharmony_ci
17162306a36Sopenharmony_ci  interrupts:
17262306a36Sopenharmony_ci    maxItems: 1
17362306a36Sopenharmony_ci
17462306a36Sopenharmony_ci  clocks:
17562306a36Sopenharmony_ci    description:
17662306a36Sopenharmony_ci      Should reference the clocks supplied on MCLK1 and MCLK2.
17762306a36Sopenharmony_ci    minItems: 1
17862306a36Sopenharmony_ci    maxItems: 2
17962306a36Sopenharmony_ci
18062306a36Sopenharmony_ci  clock-names:
18162306a36Sopenharmony_ci    description:
18262306a36Sopenharmony_ci      Should contains two strings mclk1 for the clock supplied on MCLK1,
18362306a36Sopenharmony_ci      recommended to be a high quality audio reference clock mclk2 for the
18462306a36Sopenharmony_ci      clock supplied on MCLK2, recommended to be an always on 32k clock.
18562306a36Sopenharmony_ci    oneOf:
18662306a36Sopenharmony_ci      - items:
18762306a36Sopenharmony_ci          - const: mclk1
18862306a36Sopenharmony_ci      - items:
18962306a36Sopenharmony_ci          - const: mclk2
19062306a36Sopenharmony_ci      - items:
19162306a36Sopenharmony_ci          - const: mclk1
19262306a36Sopenharmony_ci          - const: mclk2
19362306a36Sopenharmony_ci
19462306a36Sopenharmony_ci  reset-gpios:
19562306a36Sopenharmony_ci    maxItems: 1
19662306a36Sopenharmony_ci
19762306a36Sopenharmony_ci  wlf,reset:
19862306a36Sopenharmony_ci    description:
19962306a36Sopenharmony_ci      GPIO specifier for the GPIO controlling RESET
20062306a36Sopenharmony_ci    deprecated: true
20162306a36Sopenharmony_ci    $ref: /schemas/types.yaml#/definitions/phandle-array
20262306a36Sopenharmony_ci    maxItems: 1
20362306a36Sopenharmony_ci
20462306a36Sopenharmony_cirequired:
20562306a36Sopenharmony_ci  - compatible
20662306a36Sopenharmony_ci  - AVDD-supply
20762306a36Sopenharmony_ci  - CPVDD-supply
20862306a36Sopenharmony_ci  - DBVDD1-supply
20962306a36Sopenharmony_ci  - gpio-controller
21062306a36Sopenharmony_ci  - '#gpio-cells'
21162306a36Sopenharmony_ci  - interrupt-controller
21262306a36Sopenharmony_ci  - '#interrupt-cells'
21362306a36Sopenharmony_ci  - interrupts
21462306a36Sopenharmony_ci
21562306a36Sopenharmony_ciunevaluatedProperties: false
21662306a36Sopenharmony_ci
21762306a36Sopenharmony_ciexamples:
21862306a36Sopenharmony_ci  - |
21962306a36Sopenharmony_ci    #include <dt-bindings/mfd/arizona.h>
22062306a36Sopenharmony_ci    i2c@e0004000 {
22162306a36Sopenharmony_ci        #address-cells = <1>;
22262306a36Sopenharmony_ci        #size-cells = <0>;
22362306a36Sopenharmony_ci        reg = <0xe0004000 0x1000>;
22462306a36Sopenharmony_ci
22562306a36Sopenharmony_ci        wm5102: codec@1a {
22662306a36Sopenharmony_ci            compatible = "wlf,wm5102";
22762306a36Sopenharmony_ci            reg = <0x1a>;
22862306a36Sopenharmony_ci
22962306a36Sopenharmony_ci            reset-gpios = <&gpio 0>;
23062306a36Sopenharmony_ci            wlf,ldoena = <&gpio 1>;
23162306a36Sopenharmony_ci
23262306a36Sopenharmony_ci            AVDD-supply = <&vdd1v8>;
23362306a36Sopenharmony_ci            DBVDD1-supply = <&vdd1v8>;
23462306a36Sopenharmony_ci            DBVDD2-supply = <&vdd1v8>;
23562306a36Sopenharmony_ci            DBVDD3-supply = <&vdd1v8>;
23662306a36Sopenharmony_ci            CPVDD-supply = <&vdd1v8>;
23762306a36Sopenharmony_ci            LDOVDD-supply = <&vdd1v8>;
23862306a36Sopenharmony_ci            SPKVDDL-supply = <&vdd5v>;
23962306a36Sopenharmony_ci            SPKVDDR-supply = <&vdd5v>;
24062306a36Sopenharmony_ci
24162306a36Sopenharmony_ci            interrupts = <347>;
24262306a36Sopenharmony_ci            interrupt-controller;
24362306a36Sopenharmony_ci            #interrupt-cells = <2>;
24462306a36Sopenharmony_ci            interrupt-parent = <&gic>;
24562306a36Sopenharmony_ci
24662306a36Sopenharmony_ci            gpio-controller;
24762306a36Sopenharmony_ci            #gpio-cells = <2>;
24862306a36Sopenharmony_ci
24962306a36Sopenharmony_ci            #sound-dai-cells = <1>;
25062306a36Sopenharmony_ci
25162306a36Sopenharmony_ci            wlf,gpio-defaults = <
25262306a36Sopenharmony_ci                ARIZONA_GP_FN_TXLRCLK
25362306a36Sopenharmony_ci                ARIZONA_GP_DEFAULT
25462306a36Sopenharmony_ci                ARIZONA_GP_DEFAULT
25562306a36Sopenharmony_ci                ARIZONA_GP_DEFAULT
25662306a36Sopenharmony_ci                ARIZONA_GP_DEFAULT
25762306a36Sopenharmony_ci            >;
25862306a36Sopenharmony_ci
25962306a36Sopenharmony_ci            clocks = <&clks 0>, <&clks 1>;
26062306a36Sopenharmony_ci            clock-names = "mclk1", "mclk2";
26162306a36Sopenharmony_ci
26262306a36Sopenharmony_ci            wlf,inmode = <ARIZONA_INMODE_DIFF ARIZONA_INMODE_DMIC>;
26362306a36Sopenharmony_ci            wlf,dmic-ref = <ARIZONA_DMIC_MICBIAS1 ARIZONA_DMIC_MICBIAS3>;
26462306a36Sopenharmony_ci
26562306a36Sopenharmony_ci            wlf,use-jd2;
26662306a36Sopenharmony_ci            wlf,use-jd2-nopull;
26762306a36Sopenharmony_ci            wlf,jd-invert;
26862306a36Sopenharmony_ci
26962306a36Sopenharmony_ci            wlf,micd-software-compare;
27062306a36Sopenharmony_ci            wlf,micd-detect-debounce = <0>;
27162306a36Sopenharmony_ci            wlf,micd-pol-gpio = <&codec 2 0>;
27262306a36Sopenharmony_ci            wlf,micd-rate = <ARIZONA_MICD_TIME_8MS>;
27362306a36Sopenharmony_ci            wlf,micd-dbtime = <4>;
27462306a36Sopenharmony_ci            wlf,micd-timeout-ms = <100>;
27562306a36Sopenharmony_ci            wlf,micd-force-micbias;
27662306a36Sopenharmony_ci            wlf,micd-configs = <0 ARIZONA_DMIC_MICBIAS1 0>,
27762306a36Sopenharmony_ci                               <0x2000 ARIZONA_DMIC_MICBIAS2 1>;
27862306a36Sopenharmony_ci
27962306a36Sopenharmony_ci            wlf,gpsw = <ARIZONA_GPSW_OPEN>;
28062306a36Sopenharmony_ci        };
28162306a36Sopenharmony_ci    };
282