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/sound/qcom,wcd934x.yaml#
562306a36Sopenharmony_ci$schema: http://devicetree.org/meta-schemas/core.yaml#
662306a36Sopenharmony_ci
762306a36Sopenharmony_cititle: Qualcomm WCD9340/WCD9341 Audio Codec
862306a36Sopenharmony_ci
962306a36Sopenharmony_cimaintainers:
1062306a36Sopenharmony_ci  - Srinivas Kandagatla <srinivas.kandagatla@linaro.org>
1162306a36Sopenharmony_ci
1262306a36Sopenharmony_cidescription: |
1362306a36Sopenharmony_ci  Qualcomm WCD9340/WCD9341 Codec is a standalone Hi-Fi audio codec IC.
1462306a36Sopenharmony_ci  It has in-built Soundwire controller, pin controller, interrupt mux and
1562306a36Sopenharmony_ci  supports both I2S/I2C and SLIMbus audio interfaces.
1662306a36Sopenharmony_ci
1762306a36Sopenharmony_ciproperties:
1862306a36Sopenharmony_ci  compatible:
1962306a36Sopenharmony_ci    const: slim217,250
2062306a36Sopenharmony_ci
2162306a36Sopenharmony_ci  reg:
2262306a36Sopenharmony_ci    maxItems: 1
2362306a36Sopenharmony_ci
2462306a36Sopenharmony_ci  interrupts:
2562306a36Sopenharmony_ci    maxItems: 1
2662306a36Sopenharmony_ci
2762306a36Sopenharmony_ci  reset-gpios:
2862306a36Sopenharmony_ci    description: GPIO spec for reset line to use
2962306a36Sopenharmony_ci    maxItems: 1
3062306a36Sopenharmony_ci
3162306a36Sopenharmony_ci  slim-ifc-dev:
3262306a36Sopenharmony_ci    description: IFC device interface
3362306a36Sopenharmony_ci    $ref: /schemas/types.yaml#/definitions/phandle
3462306a36Sopenharmony_ci
3562306a36Sopenharmony_ci  clocks:
3662306a36Sopenharmony_ci    maxItems: 1
3762306a36Sopenharmony_ci
3862306a36Sopenharmony_ci  clock-names:
3962306a36Sopenharmony_ci    const: extclk
4062306a36Sopenharmony_ci
4162306a36Sopenharmony_ci  vdd-buck-supply:
4262306a36Sopenharmony_ci    description: A reference to the 1.8V buck supply
4362306a36Sopenharmony_ci
4462306a36Sopenharmony_ci  vdd-buck-sido-supply:
4562306a36Sopenharmony_ci    description: A reference to the 1.8V SIDO buck supply
4662306a36Sopenharmony_ci
4762306a36Sopenharmony_ci  vdd-rx-supply:
4862306a36Sopenharmony_ci    description: A reference to the 1.8V rx supply
4962306a36Sopenharmony_ci
5062306a36Sopenharmony_ci  vdd-tx-supply:
5162306a36Sopenharmony_ci    description: A reference to the 1.8V tx supply
5262306a36Sopenharmony_ci
5362306a36Sopenharmony_ci  vdd-vbat-supply:
5462306a36Sopenharmony_ci    description: A reference to the vbat supply
5562306a36Sopenharmony_ci
5662306a36Sopenharmony_ci  vdd-io-supply:
5762306a36Sopenharmony_ci    description: A reference to the 1.8V I/O supply
5862306a36Sopenharmony_ci
5962306a36Sopenharmony_ci  vdd-micbias-supply:
6062306a36Sopenharmony_ci    description: A reference to the micbias supply
6162306a36Sopenharmony_ci
6262306a36Sopenharmony_ci  qcom,micbias1-microvolt:
6362306a36Sopenharmony_ci    description: micbias1 voltage
6462306a36Sopenharmony_ci    minimum: 1800000
6562306a36Sopenharmony_ci    maximum: 2850000
6662306a36Sopenharmony_ci
6762306a36Sopenharmony_ci  qcom,micbias2-microvolt:
6862306a36Sopenharmony_ci    description: micbias2 voltage
6962306a36Sopenharmony_ci    minimum: 1800000
7062306a36Sopenharmony_ci    maximum: 2850000
7162306a36Sopenharmony_ci
7262306a36Sopenharmony_ci  qcom,micbias3-microvolt:
7362306a36Sopenharmony_ci    description: micbias3 voltage
7462306a36Sopenharmony_ci    minimum: 1800000
7562306a36Sopenharmony_ci    maximum: 2850000
7662306a36Sopenharmony_ci
7762306a36Sopenharmony_ci  qcom,micbias4-microvolt:
7862306a36Sopenharmony_ci    description: micbias4 voltage
7962306a36Sopenharmony_ci    minimum: 1800000
8062306a36Sopenharmony_ci    maximum: 2850000
8162306a36Sopenharmony_ci
8262306a36Sopenharmony_ci  qcom,hphl-jack-type-normally-closed:
8362306a36Sopenharmony_ci    description: Indicates that HPHL jack switch type is normally closed
8462306a36Sopenharmony_ci    type: boolean
8562306a36Sopenharmony_ci
8662306a36Sopenharmony_ci  qcom,ground-jack-type-normally-closed:
8762306a36Sopenharmony_ci    description: Indicates that Headset Ground switch type is normally closed
8862306a36Sopenharmony_ci    type: boolean
8962306a36Sopenharmony_ci
9062306a36Sopenharmony_ci  qcom,mbhc-headset-vthreshold-microvolt:
9162306a36Sopenharmony_ci    description: Voltage threshold value for headset detection
9262306a36Sopenharmony_ci    minimum: 0
9362306a36Sopenharmony_ci    maximum: 2850000
9462306a36Sopenharmony_ci
9562306a36Sopenharmony_ci  qcom,mbhc-headphone-vthreshold-microvolt:
9662306a36Sopenharmony_ci    description: Voltage threshold value for headphone detection
9762306a36Sopenharmony_ci    minimum: 0
9862306a36Sopenharmony_ci    maximum: 2850000
9962306a36Sopenharmony_ci
10062306a36Sopenharmony_ci  qcom,mbhc-buttons-vthreshold-microvolt:
10162306a36Sopenharmony_ci    description:
10262306a36Sopenharmony_ci      Array of 8 Voltage threshold values corresponding to headset
10362306a36Sopenharmony_ci      button0 - button7
10462306a36Sopenharmony_ci    minItems: 8
10562306a36Sopenharmony_ci    maxItems: 8
10662306a36Sopenharmony_ci
10762306a36Sopenharmony_ci  clock-output-names:
10862306a36Sopenharmony_ci    const: mclk
10962306a36Sopenharmony_ci
11062306a36Sopenharmony_ci  clock-frequency:
11162306a36Sopenharmony_ci    description: Clock frequency of output clk in Hz
11262306a36Sopenharmony_ci
11362306a36Sopenharmony_ci  interrupt-controller: true
11462306a36Sopenharmony_ci
11562306a36Sopenharmony_ci  '#interrupt-cells':
11662306a36Sopenharmony_ci    const: 1
11762306a36Sopenharmony_ci
11862306a36Sopenharmony_ci  '#clock-cells':
11962306a36Sopenharmony_ci    const: 0
12062306a36Sopenharmony_ci
12162306a36Sopenharmony_ci  '#sound-dai-cells':
12262306a36Sopenharmony_ci    const: 1
12362306a36Sopenharmony_ci
12462306a36Sopenharmony_ci  "#address-cells":
12562306a36Sopenharmony_ci    const: 1
12662306a36Sopenharmony_ci
12762306a36Sopenharmony_ci  "#size-cells":
12862306a36Sopenharmony_ci    const: 1
12962306a36Sopenharmony_ci
13062306a36Sopenharmony_ci  gpio@42:
13162306a36Sopenharmony_ci    type: object
13262306a36Sopenharmony_ci    $ref: /schemas/gpio/qcom,wcd934x-gpio.yaml#
13362306a36Sopenharmony_ci
13462306a36Sopenharmony_cipatternProperties:
13562306a36Sopenharmony_ci  "^.*@[0-9a-f]+$":
13662306a36Sopenharmony_ci    type: object
13762306a36Sopenharmony_ci    additionalProperties: true
13862306a36Sopenharmony_ci    description: |
13962306a36Sopenharmony_ci      WCD934x subnode for each slave devices. Bindings of each subnodes
14062306a36Sopenharmony_ci      depends on the specific driver providing the functionality and
14162306a36Sopenharmony_ci      documented in their respective bindings.
14262306a36Sopenharmony_ci
14362306a36Sopenharmony_ci    properties:
14462306a36Sopenharmony_ci      reg:
14562306a36Sopenharmony_ci        maxItems: 1
14662306a36Sopenharmony_ci
14762306a36Sopenharmony_ci    required:
14862306a36Sopenharmony_ci      - reg
14962306a36Sopenharmony_ci
15062306a36Sopenharmony_cirequired:
15162306a36Sopenharmony_ci  - compatible
15262306a36Sopenharmony_ci  - reg
15362306a36Sopenharmony_ci
15462306a36Sopenharmony_ciallOf:
15562306a36Sopenharmony_ci  - $ref: dai-common.yaml#
15662306a36Sopenharmony_ci  - if:
15762306a36Sopenharmony_ci      required:
15862306a36Sopenharmony_ci        - slim-ifc-dev
15962306a36Sopenharmony_ci    then:
16062306a36Sopenharmony_ci      required:
16162306a36Sopenharmony_ci        - reset-gpios
16262306a36Sopenharmony_ci        - slim-ifc-dev
16362306a36Sopenharmony_ci        - interrupt-controller
16462306a36Sopenharmony_ci        - clock-frequency
16562306a36Sopenharmony_ci        - clock-output-names
16662306a36Sopenharmony_ci        - qcom,micbias1-microvolt
16762306a36Sopenharmony_ci        - qcom,micbias2-microvolt
16862306a36Sopenharmony_ci        - qcom,micbias3-microvolt
16962306a36Sopenharmony_ci        - qcom,micbias4-microvolt
17062306a36Sopenharmony_ci        - "#interrupt-cells"
17162306a36Sopenharmony_ci        - "#clock-cells"
17262306a36Sopenharmony_ci        - "#sound-dai-cells"
17362306a36Sopenharmony_ci        - "#address-cells"
17462306a36Sopenharmony_ci        - "#size-cells"
17562306a36Sopenharmony_ci      oneOf:
17662306a36Sopenharmony_ci        - required:
17762306a36Sopenharmony_ci            - interrupts-extended
17862306a36Sopenharmony_ci        - required:
17962306a36Sopenharmony_ci            - interrupts
18062306a36Sopenharmony_ci    else:
18162306a36Sopenharmony_ci      properties:
18262306a36Sopenharmony_ci        reset-gpios: false
18362306a36Sopenharmony_ci        slim-ifc-dev: false
18462306a36Sopenharmony_ci        interrupts: false
18562306a36Sopenharmony_ci        interrupt-controller: false
18662306a36Sopenharmony_ci        clock-frequency: false
18762306a36Sopenharmony_ci        clock-output-names: false
18862306a36Sopenharmony_ci        qcom,micbias1-microvolt: false
18962306a36Sopenharmony_ci        qcom,micbias2-microvolt: false
19062306a36Sopenharmony_ci        qcom,micbias3-microvolt: false
19162306a36Sopenharmony_ci        qcom,micbias4-microvolt: false
19262306a36Sopenharmony_ci        "#interrupt-cells": false
19362306a36Sopenharmony_ci        "#clock-cells": false
19462306a36Sopenharmony_ci        "#sound-dai-cells": false
19562306a36Sopenharmony_ci        "#address-cells": false
19662306a36Sopenharmony_ci        "#size-cells": false
19762306a36Sopenharmony_ci
19862306a36Sopenharmony_ciadditionalProperties: false
19962306a36Sopenharmony_ci
20062306a36Sopenharmony_ciexamples:
20162306a36Sopenharmony_ci  - |
20262306a36Sopenharmony_ci    codec@1,0{
20362306a36Sopenharmony_ci        compatible = "slim217,250";
20462306a36Sopenharmony_ci        reg  = <1 0>;
20562306a36Sopenharmony_ci        reset-gpios = <&tlmm 64 0>;
20662306a36Sopenharmony_ci        slim-ifc-dev  = <&wcd9340_ifd>;
20762306a36Sopenharmony_ci        #sound-dai-cells = <1>;
20862306a36Sopenharmony_ci        interrupt-parent = <&tlmm>;
20962306a36Sopenharmony_ci        interrupts = <54 4>;
21062306a36Sopenharmony_ci        interrupt-controller;
21162306a36Sopenharmony_ci        #interrupt-cells = <1>;
21262306a36Sopenharmony_ci        #clock-cells = <0>;
21362306a36Sopenharmony_ci        clock-frequency = <9600000>;
21462306a36Sopenharmony_ci        clock-output-names = "mclk";
21562306a36Sopenharmony_ci        qcom,micbias1-microvolt = <1800000>;
21662306a36Sopenharmony_ci        qcom,micbias2-microvolt = <1800000>;
21762306a36Sopenharmony_ci        qcom,micbias3-microvolt = <1800000>;
21862306a36Sopenharmony_ci        qcom,micbias4-microvolt = <1800000>;
21962306a36Sopenharmony_ci        qcom,hphl-jack-type-normally-closed;
22062306a36Sopenharmony_ci        qcom,ground-jack-type-normally-closed;
22162306a36Sopenharmony_ci        qcom,mbhc-buttons-vthreshold-microvolt = <75000 150000 237000 500000 500000 500000 500000 500000>;
22262306a36Sopenharmony_ci        qcom,mbhc-headset-vthreshold-microvolt = <1700000>;
22362306a36Sopenharmony_ci        qcom,mbhc-headphone-vthreshold-microvolt = <50000>;
22462306a36Sopenharmony_ci        clock-names = "extclk";
22562306a36Sopenharmony_ci        clocks = <&rpmhcc 2>;
22662306a36Sopenharmony_ci
22762306a36Sopenharmony_ci        #address-cells = <1>;
22862306a36Sopenharmony_ci        #size-cells = <1>;
22962306a36Sopenharmony_ci
23062306a36Sopenharmony_ci        gpio@42 {
23162306a36Sopenharmony_ci            compatible = "qcom,wcd9340-gpio";
23262306a36Sopenharmony_ci            reg = <0x42 0x2>;
23362306a36Sopenharmony_ci            gpio-controller;
23462306a36Sopenharmony_ci            #gpio-cells = <2>;
23562306a36Sopenharmony_ci        };
23662306a36Sopenharmony_ci    };
23762306a36Sopenharmony_ci
23862306a36Sopenharmony_ci...
239