1a6b74871SSrinivas Kandagatla# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
2a6b74871SSrinivas Kandagatla%YAML 1.2
3a6b74871SSrinivas Kandagatla---
4a6b74871SSrinivas Kandagatla$id: http://devicetree.org/schemas/sound/qcom,wcd934x.yaml#
5a6b74871SSrinivas Kandagatla$schema: http://devicetree.org/meta-schemas/core.yaml#
6a6b74871SSrinivas Kandagatla
79d69d47fSKrzysztof Kozlowskititle: Qualcomm WCD9340/WCD9341 Audio Codec
8a6b74871SSrinivas Kandagatla
9a6b74871SSrinivas Kandagatlamaintainers:
10a6b74871SSrinivas Kandagatla  - Srinivas Kandagatla <srinivas.kandagatla@linaro.org>
11a6b74871SSrinivas Kandagatla
12a6b74871SSrinivas Kandagatladescription: |
13a6b74871SSrinivas Kandagatla  Qualcomm WCD9340/WCD9341 Codec is a standalone Hi-Fi audio codec IC.
14a6b74871SSrinivas Kandagatla  It has in-built Soundwire controller, pin controller, interrupt mux and
15a6b74871SSrinivas Kandagatla  supports both I2S/I2C and SLIMbus audio interfaces.
16a6b74871SSrinivas Kandagatla
17a6b74871SSrinivas Kandagatlaproperties:
18a6b74871SSrinivas Kandagatla  compatible:
19a6b74871SSrinivas Kandagatla    const: slim217,250
20a6b74871SSrinivas Kandagatla
21a6b74871SSrinivas Kandagatla  reg:
22a6b74871SSrinivas Kandagatla    maxItems: 1
23a6b74871SSrinivas Kandagatla
24a6b74871SSrinivas Kandagatla  interrupts:
25a6b74871SSrinivas Kandagatla    maxItems: 1
26a6b74871SSrinivas Kandagatla
27a6b74871SSrinivas Kandagatla  reset-gpios:
28a6b74871SSrinivas Kandagatla    description: GPIO spec for reset line to use
29a6b74871SSrinivas Kandagatla    maxItems: 1
30a6b74871SSrinivas Kandagatla
31636caca3SKrzysztof Kozlowski  slim-ifc-dev:
32636caca3SKrzysztof Kozlowski    description: IFC device interface
33636caca3SKrzysztof Kozlowski    $ref: /schemas/types.yaml#/definitions/phandle
34a6b74871SSrinivas Kandagatla
35a6b74871SSrinivas Kandagatla  clocks:
36a6b74871SSrinivas Kandagatla    maxItems: 1
37a6b74871SSrinivas Kandagatla
38a6b74871SSrinivas Kandagatla  clock-names:
39a6b74871SSrinivas Kandagatla    const: extclk
40a6b74871SSrinivas Kandagatla
41a6b74871SSrinivas Kandagatla  vdd-buck-supply:
42a6b74871SSrinivas Kandagatla    description: A reference to the 1.8V buck supply
43a6b74871SSrinivas Kandagatla
44a6b74871SSrinivas Kandagatla  vdd-buck-sido-supply:
45a6b74871SSrinivas Kandagatla    description: A reference to the 1.8V SIDO buck supply
46a6b74871SSrinivas Kandagatla
47a6b74871SSrinivas Kandagatla  vdd-rx-supply:
48a6b74871SSrinivas Kandagatla    description: A reference to the 1.8V rx supply
49a6b74871SSrinivas Kandagatla
50a6b74871SSrinivas Kandagatla  vdd-tx-supply:
51a6b74871SSrinivas Kandagatla    description: A reference to the 1.8V tx supply
52a6b74871SSrinivas Kandagatla
53a6b74871SSrinivas Kandagatla  vdd-vbat-supply:
54a6b74871SSrinivas Kandagatla    description: A reference to the vbat supply
55a6b74871SSrinivas Kandagatla
56a6b74871SSrinivas Kandagatla  vdd-io-supply:
57a6b74871SSrinivas Kandagatla    description: A reference to the 1.8V I/O supply
58a6b74871SSrinivas Kandagatla
59a6b74871SSrinivas Kandagatla  vdd-micbias-supply:
60a6b74871SSrinivas Kandagatla    description: A reference to the micbias supply
61a6b74871SSrinivas Kandagatla
62a6b74871SSrinivas Kandagatla  qcom,micbias1-microvolt:
63a6b74871SSrinivas Kandagatla    description: micbias1 voltage
64a6b74871SSrinivas Kandagatla    minimum: 1800000
65a6b74871SSrinivas Kandagatla    maximum: 2850000
66a6b74871SSrinivas Kandagatla
67a6b74871SSrinivas Kandagatla  qcom,micbias2-microvolt:
68a6b74871SSrinivas Kandagatla    description: micbias2 voltage
69a6b74871SSrinivas Kandagatla    minimum: 1800000
70a6b74871SSrinivas Kandagatla    maximum: 2850000
71a6b74871SSrinivas Kandagatla
72a6b74871SSrinivas Kandagatla  qcom,micbias3-microvolt:
73a6b74871SSrinivas Kandagatla    description: micbias3 voltage
74a6b74871SSrinivas Kandagatla    minimum: 1800000
75a6b74871SSrinivas Kandagatla    maximum: 2850000
76a6b74871SSrinivas Kandagatla
77a6b74871SSrinivas Kandagatla  qcom,micbias4-microvolt:
78a6b74871SSrinivas Kandagatla    description: micbias4 voltage
79a6b74871SSrinivas Kandagatla    minimum: 1800000
80a6b74871SSrinivas Kandagatla    maximum: 2850000
81a6b74871SSrinivas Kandagatla
82c6d25d57SSrinivas Kandagatla  qcom,hphl-jack-type-normally-closed:
83c6d25d57SSrinivas Kandagatla    description: Indicates that HPHL jack switch type is normally closed
84c6d25d57SSrinivas Kandagatla    type: boolean
85c6d25d57SSrinivas Kandagatla
86c6d25d57SSrinivas Kandagatla  qcom,ground-jack-type-normally-closed:
87c6d25d57SSrinivas Kandagatla    description: Indicates that Headset Ground switch type is normally closed
88c6d25d57SSrinivas Kandagatla    type: boolean
89c6d25d57SSrinivas Kandagatla
90c6d25d57SSrinivas Kandagatla  qcom,mbhc-headset-vthreshold-microvolt:
91c6d25d57SSrinivas Kandagatla    description: Voltage threshold value for headset detection
92c6d25d57SSrinivas Kandagatla    minimum: 0
93c6d25d57SSrinivas Kandagatla    maximum: 2850000
94c6d25d57SSrinivas Kandagatla
95c6d25d57SSrinivas Kandagatla  qcom,mbhc-headphone-vthreshold-microvolt:
96c6d25d57SSrinivas Kandagatla    description: Voltage threshold value for headphone detection
97c6d25d57SSrinivas Kandagatla    minimum: 0
98c6d25d57SSrinivas Kandagatla    maximum: 2850000
99c6d25d57SSrinivas Kandagatla
100c6d25d57SSrinivas Kandagatla  qcom,mbhc-buttons-vthreshold-microvolt:
101c6d25d57SSrinivas Kandagatla    description:
102c6d25d57SSrinivas Kandagatla      Array of 8 Voltage threshold values corresponding to headset
103c6d25d57SSrinivas Kandagatla      button0 - button7
104c6d25d57SSrinivas Kandagatla    minItems: 8
105c6d25d57SSrinivas Kandagatla    maxItems: 8
106c6d25d57SSrinivas Kandagatla
107a6b74871SSrinivas Kandagatla  clock-output-names:
108a6b74871SSrinivas Kandagatla    const: mclk
109a6b74871SSrinivas Kandagatla
110a6b74871SSrinivas Kandagatla  clock-frequency:
111a6b74871SSrinivas Kandagatla    description: Clock frequency of output clk in Hz
112a6b74871SSrinivas Kandagatla
113a6b74871SSrinivas Kandagatla  interrupt-controller: true
114a6b74871SSrinivas Kandagatla
115a6b74871SSrinivas Kandagatla  '#interrupt-cells':
116a6b74871SSrinivas Kandagatla    const: 1
117a6b74871SSrinivas Kandagatla
118a6b74871SSrinivas Kandagatla  '#clock-cells':
119a6b74871SSrinivas Kandagatla    const: 0
120a6b74871SSrinivas Kandagatla
121a6b74871SSrinivas Kandagatla  '#sound-dai-cells':
122a6b74871SSrinivas Kandagatla    const: 1
123a6b74871SSrinivas Kandagatla
124a6b74871SSrinivas Kandagatla  "#address-cells":
125a6b74871SSrinivas Kandagatla    const: 1
126a6b74871SSrinivas Kandagatla
127a6b74871SSrinivas Kandagatla  "#size-cells":
128a6b74871SSrinivas Kandagatla    const: 1
129a6b74871SSrinivas Kandagatla
130a6b74871SSrinivas Kandagatla  gpio@42:
131a6b74871SSrinivas Kandagatla    type: object
132ffe71829SKrzysztof Kozlowski    $ref: /schemas/gpio/qcom,wcd934x-gpio.yaml#
133a6b74871SSrinivas Kandagatla
134a6b74871SSrinivas KandagatlapatternProperties:
135a6b74871SSrinivas Kandagatla  "^.*@[0-9a-f]+$":
136a6b74871SSrinivas Kandagatla    type: object
137*e62fc182SRob Herring    additionalProperties: true
138a6b74871SSrinivas Kandagatla    description: |
139a6b74871SSrinivas Kandagatla      WCD934x subnode for each slave devices. Bindings of each subnodes
140a6b74871SSrinivas Kandagatla      depends on the specific driver providing the functionality and
141a6b74871SSrinivas Kandagatla      documented in their respective bindings.
142a6b74871SSrinivas Kandagatla
143a6b74871SSrinivas Kandagatla    properties:
144a6b74871SSrinivas Kandagatla      reg:
145a6b74871SSrinivas Kandagatla        maxItems: 1
146a6b74871SSrinivas Kandagatla
147a6b74871SSrinivas Kandagatla    required:
148a6b74871SSrinivas Kandagatla      - reg
149a6b74871SSrinivas Kandagatla
150a6b74871SSrinivas Kandagatlarequired:
151a6b74871SSrinivas Kandagatla  - compatible
152a6b74871SSrinivas Kandagatla  - reg
1537ee35b6bSKrzysztof Kozlowski
1547ee35b6bSKrzysztof KozlowskiallOf:
1557ee35b6bSKrzysztof Kozlowski  - $ref: dai-common.yaml#
1567ee35b6bSKrzysztof Kozlowski  - if:
1577ee35b6bSKrzysztof Kozlowski      required:
1587ee35b6bSKrzysztof Kozlowski        - slim-ifc-dev
1597ee35b6bSKrzysztof Kozlowski    then:
160a6b74871SSrinivas Kandagatla      required:
161a6b74871SSrinivas Kandagatla        - reset-gpios
162a6b74871SSrinivas Kandagatla        - slim-ifc-dev
163a6b74871SSrinivas Kandagatla        - interrupt-controller
164a6b74871SSrinivas Kandagatla        - clock-frequency
165a6b74871SSrinivas Kandagatla        - clock-output-names
166a6b74871SSrinivas Kandagatla        - qcom,micbias1-microvolt
167a6b74871SSrinivas Kandagatla        - qcom,micbias2-microvolt
168a6b74871SSrinivas Kandagatla        - qcom,micbias3-microvolt
169a6b74871SSrinivas Kandagatla        - qcom,micbias4-microvolt
170a6b74871SSrinivas Kandagatla        - "#interrupt-cells"
171a6b74871SSrinivas Kandagatla        - "#clock-cells"
172a6b74871SSrinivas Kandagatla        - "#sound-dai-cells"
173a6b74871SSrinivas Kandagatla        - "#address-cells"
1747ee35b6bSKrzysztof Kozlowski        - "#size-cells"
1757ee35b6bSKrzysztof Kozlowski      oneOf:
1767ee35b6bSKrzysztof Kozlowski        - required:
1777ee35b6bSKrzysztof Kozlowski            - interrupts-extended
1787ee35b6bSKrzysztof Kozlowski        - required:
1797ee35b6bSKrzysztof Kozlowski            - interrupts
1807ee35b6bSKrzysztof Kozlowski    else:
1817ee35b6bSKrzysztof Kozlowski      properties:
1827ee35b6bSKrzysztof Kozlowski        reset-gpios: false
1837ee35b6bSKrzysztof Kozlowski        slim-ifc-dev: false
1847ee35b6bSKrzysztof Kozlowski        interrupts: false
1857ee35b6bSKrzysztof Kozlowski        interrupt-controller: false
1867ee35b6bSKrzysztof Kozlowski        clock-frequency: false
1877ee35b6bSKrzysztof Kozlowski        clock-output-names: false
1887ee35b6bSKrzysztof Kozlowski        qcom,micbias1-microvolt: false
1897ee35b6bSKrzysztof Kozlowski        qcom,micbias2-microvolt: false
1907ee35b6bSKrzysztof Kozlowski        qcom,micbias3-microvolt: false
1917ee35b6bSKrzysztof Kozlowski        qcom,micbias4-microvolt: false
1927ee35b6bSKrzysztof Kozlowski        "#interrupt-cells": false
1937ee35b6bSKrzysztof Kozlowski        "#clock-cells": false
1947ee35b6bSKrzysztof Kozlowski        "#sound-dai-cells": false
1957ee35b6bSKrzysztof Kozlowski        "#address-cells": false
196a6b74871SSrinivas Kandagatla        "#size-cells": false
1977f464532SRob Herring
1987f464532SRob HerringadditionalProperties: false
199a6b74871SSrinivas Kandagatla
200a6b74871SSrinivas Kandagatlaexamples:
201a6b74871SSrinivas Kandagatla  - |
202a6b74871SSrinivas Kandagatla    codec@1,0{
203a6b74871SSrinivas Kandagatla        compatible = "slim217,250";
204a6b74871SSrinivas Kandagatla        reg  = <1 0>;
205a6b74871SSrinivas Kandagatla        reset-gpios = <&tlmm 64 0>;
206a6b74871SSrinivas Kandagatla        slim-ifc-dev  = <&wcd9340_ifd>;
207a6b74871SSrinivas Kandagatla        #sound-dai-cells = <1>;
208a6b74871SSrinivas Kandagatla        interrupt-parent = <&tlmm>;
209a6b74871SSrinivas Kandagatla        interrupts = <54 4>;
210a6b74871SSrinivas Kandagatla        interrupt-controller;
211a6b74871SSrinivas Kandagatla        #interrupt-cells = <1>;
212a6b74871SSrinivas Kandagatla        #clock-cells = <0>;
213a6b74871SSrinivas Kandagatla        clock-frequency = <9600000>;
214a6b74871SSrinivas Kandagatla        clock-output-names = "mclk";
215a6b74871SSrinivas Kandagatla        qcom,micbias1-microvolt = <1800000>;
216a6b74871SSrinivas Kandagatla        qcom,micbias2-microvolt = <1800000>;
217a6b74871SSrinivas Kandagatla        qcom,micbias3-microvolt = <1800000>;
218c6d25d57SSrinivas Kandagatla        qcom,micbias4-microvolt = <1800000>;
219c6d25d57SSrinivas Kandagatla        qcom,hphl-jack-type-normally-closed;
220c6d25d57SSrinivas Kandagatla        qcom,ground-jack-type-normally-closed;
221c6d25d57SSrinivas Kandagatla        qcom,mbhc-buttons-vthreshold-microvolt = <75000 150000 237000 500000 500000 500000 500000 500000>;
222c6d25d57SSrinivas Kandagatla        qcom,mbhc-headset-vthreshold-microvolt = <1700000>;
223a6b74871SSrinivas Kandagatla        qcom,mbhc-headphone-vthreshold-microvolt = <50000>;
224a6b74871SSrinivas Kandagatla        clock-names = "extclk";
225a6b74871SSrinivas Kandagatla        clocks = <&rpmhcc 2>;
226a6b74871SSrinivas Kandagatla
227a6b74871SSrinivas Kandagatla        #address-cells = <1>;
228a6b74871SSrinivas Kandagatla        #size-cells = <1>;
229a6b74871SSrinivas Kandagatla
230a6b74871SSrinivas Kandagatla        gpio@42 {
231a6b74871SSrinivas Kandagatla            compatible = "qcom,wcd9340-gpio";
232a6b74871SSrinivas Kandagatla            reg = <0x42 0x2>;
233a6b74871SSrinivas Kandagatla            gpio-controller;
234a6b74871SSrinivas Kandagatla            #gpio-cells = <2>;
235a6b74871SSrinivas Kandagatla        };
236a6b74871SSrinivas Kandagatla    };
237a6b74871SSrinivas Kandagatla
238...
239