blob: a46e4fe4962714b454fd6e30186afe091080fccc [file] [log] [blame]
Nirmal Abraham5b96cb52018-04-02 12:52:48 +05301/*
2 * Copyright (c) 2018, The Linux Foundation. All rights reserved.
3 *
4 * This program is free software; you can redistribute it and/or modify
5 * it under the terms of the GNU General Public License version 2 and
6 * only version 2 as published by the Free Software Foundation.
7 *
8 * This program is distributed in the hope that it will be useful,
9 * but WITHOUT ANY WARRANTY; without even the implied warranty of
10 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 * GNU General Public License for more details.
12 */
13
14#include "msm-audio-lpass.dtsi"
15#include "msm8953-wsa881x.dtsi"
16
17&msm_audio_ion {
18 iommus = <&apps_iommu 0x2001 0x0>;
19 qcom,smmu-sid-mask = /bits/ 64 <0xf>;
20};
21
22&soc {
23 qcom,msm-audio-apr {
24 compatible = "qcom,msm-audio-apr";
25 msm_audio_apr_dummy {
26 compatible = "qcom,msm-audio-apr-dummy";
27 };
28 };
29
30 qcom,avtimer@c0a300c {
31 compatible = "qcom,avtimer";
32 reg = <0x0c0a300c 0x4>,
33 <0x0c0a3010 0x4>;
34 reg-names = "avtimer_lsb_addr", "avtimer_msb_addr";
35 qcom,clk-div = <27>;
36 };
37
38 int_codec: sound {
39 status = "okay";
40 compatible = "qcom,msm8952-audio-codec";
41 qcom,model = "msm8952-snd-card-mtp";
42 reg = <0xc051000 0x4>,
43 <0xc051004 0x4>,
44 <0xc055000 0x4>,
45 <0xc052000 0x4>;
46 reg-names = "csr_gp_io_mux_mic_ctl",
47 "csr_gp_io_mux_spkr_ctl",
48 "csr_gp_io_lpaif_pri_pcm_pri_mode_muxsel",
49 "csr_gp_io_mux_quin_ctl";
50
51 qcom,msm-ext-pa = "primary";
52 qcom,msm-mclk-freq = <9600000>;
53 qcom,msm-mbhc-hphl-swh = <0>;
54 qcom,msm-mbhc-gnd-swh = <0>;
55 qcom,msm-hs-micbias-type = "external";
56 qcom,msm-micbias1-ext-cap;
57
58 qcom,audio-routing =
59 "RX_BIAS", "MCLK",
60 "SPK_RX_BIAS", "MCLK",
61 "INT_LDO_H", "MCLK",
62 "RX_I2S_CLK", "MCLK",
63 "TX_I2S_CLK", "MCLK",
64 "MIC BIAS External", "Handset Mic",
65 "MIC BIAS External2", "Headset Mic",
66 "MIC BIAS External", "Secondary Mic",
67 "AMIC1", "MIC BIAS External",
68 "AMIC2", "MIC BIAS External2",
69 "AMIC3", "MIC BIAS External",
70 "ADC1_IN", "ADC1_OUT",
71 "ADC2_IN", "ADC2_OUT",
72 "ADC3_IN", "ADC3_OUT",
73 "PDM_IN_RX1", "PDM_OUT_RX1",
74 "PDM_IN_RX2", "PDM_OUT_RX2",
75 "PDM_IN_RX3", "PDM_OUT_RX3",
76 "WSA_SPK OUT", "VDD_WSA_SWITCH",
77 "SpkrMono WSA_IN", "WSA_SPK OUT";
78
79 qcom,cdc-us-euro-gpios = <&tlmm 63 0>;
80 qcom,cdc-us-eu-gpios = <&cdc_us_euro_sw>;
81 qcom,pri-mi2s-gpios = <&cdc_pri_mi2s_gpios>;
82 qcom,quin-mi2s-gpios = <&cdc_quin_mi2s_gpios>;
83
84 asoc-platform = <&pcm0>, <&pcm1>, <&pcm2>, <&voip>, <&voice>,
85 <&loopback>, <&compress>, <&hostless>,
86 <&afe>, <&lsm>, <&routing>, <&pcm_noirq>;
87 asoc-platform-names = "msm-pcm-dsp.0", "msm-pcm-dsp.1",
88 "msm-pcm-dsp.2", "msm-voip-dsp",
89 "msm-pcm-voice", "msm-pcm-loopback",
90 "msm-compress-dsp", "msm-pcm-hostless",
91 "msm-pcm-afe", "msm-lsm-client",
92 "msm-pcm-routing", "msm-pcm-dsp-noirq";
93 asoc-cpu = <&dai_pri_auxpcm>,
94 <&dai_mi2s0>, <&dai_mi2s1>,
95 <&dai_mi2s2>, <&dai_mi2s3>,
96 <&dai_mi2s4>, <&dai_mi2s5>,
97 <&sb_0_rx>, <&sb_0_tx>, <&sb_1_rx>, <&sb_1_tx>,
98 <&sb_3_rx>, <&sb_3_tx>, <&sb_4_rx>, <&sb_4_tx>,
99 <&bt_sco_rx>, <&bt_sco_tx>,
100 <&int_fm_rx>, <&int_fm_tx>,
101 <&afe_pcm_rx>, <&afe_pcm_tx>,
102 <&afe_proxy_rx>, <&afe_proxy_tx>,
103 <&incall_record_rx>, <&incall_record_tx>,
104 <&incall_music_rx>, <&incall_music_2_rx>;
105
106 asoc-cpu-names = "msm-dai-q6-auxpcm.1",
107 "msm-dai-q6-mi2s.0", "msm-dai-q6-mi2s.1",
108 "msm-dai-q6-mi2s.2", "msm-dai-q6-mi2s.3",
109 "msm-dai-q6-mi2s.4", "msm-dai-q6-mi2s.6",
110 "msm-dai-q6-dev.16384", "msmdai-q6-dev.16385",
111 "msm-dai-q6-dev.16386", "msm-dai-q6-dev.16387",
112 "msm-dai-q6-dev.16390", "msm-dai-q6-dev.16391",
113 "msm-dai-q6-dev.16392", "msm-dai-q6-dev.16393",
114 "msm-dai-q6-dev.12288", "msm-dai-q6-dev.12289",
115 "msm-dai-q6-dev.12292", "msm-dai-q6-dev.12293",
116 "msm-dai-q6-dev.224", "msm-dai-q6-dev.225",
117 "msm-dai-q6-dev.241", "msm-dai-q6-dev.240",
118 "msm-dai-q6-dev.32771", "msm-dai-q6-dev.32772",
119 "msm-dai-q6-dev.32773", "msm-dai-q6-dev.32770";
120
121 asoc-codec = <&stub_codec>, <&msm_digital_codec>,
122 <&pmic_analog_codec>;
123 asoc-codec-names = "msm-stub-codec.1", "msm-dig-codec",
124 "analog-codec";
125 asoc-wsa-codec-names = "wsa881x-i2c-codec.2-000f";
126 asoc-wsa-codec-prefixes = "SpkrMono";
127 msm-vdd-wsa-switch-supply = <&pm8937_l5>;
128 qcom,msm-vdd-wsa-switch-voltage = <1800000>;
129 qcom,msm-vdd-wsa-switch-current = <10000>;
130 };
131
132 cdc_us_euro_sw: msm_cdc_pinctrl_us_euro_sw {
133 compatible = "qcom,msm-cdc-pinctrl";
134 pinctrl-names = "aud_active", "aud_sleep";
135 pinctrl-0 = <&cross_conn_det_act>;
136 pinctrl-1 = <&cross_conn_det_sus>;
137 };
138
139 cdc_pri_mi2s_gpios: msm_cdc_pinctrl_pri {
140 compatible = "qcom,msm-cdc-pinctrl";
141 pinctrl-names = "aud_active", "aud_sleep";
142 pinctrl-0 = <&cdc_pdm_lines_act &cdc_pdm_lines_2_act>;
143 pinctrl-1 = <&cdc_pdm_lines_sus &cdc_pdm_lines_2_sus>;
144 };
145
146 cdc_quin_mi2s_gpios: msm_cdc_pinctrl_quin {
147 compatible = "qcom,msm-cdc-pinctrl";
148 pinctrl-names = "aud_active", "aud_sleep";
149 pinctrl-0 = <&pri_tlmm_lines_act &pri_tlmm_ws_act>;
150 pinctrl-1 = <&pri_tlmm_lines_sus &pri_tlmm_ws_sus>;
151 };
152
153
154 i2c@78b6000 {
155 status = "okay";
156 #address-cells = <1>;
157 #size-cells = <0>;
158 wsa881x_i2c_f: wsa881x-i2c-codec@f {
159 status = "okay";
160 compatible = "qcom,wsa881x-i2c-codec";
161 reg = <0x0f>;
162 qcom,wsa-analog-vi-gpio = <&wsa881x_analog_vi_gpio>;
163 qcom,wsa-analog-clk-gpio = <&wsa881x_analog_clk_gpio>;
164 qcom,wsa-analog-reset-gpio =
165 <&wsa881x_analog_reset_gpio>;
166 };
167 wsa881x_i2c_45: wsa881x-i2c-codec@45 {
168 status = "okay";
169 compatible = "qcom,wsa881x-i2c-codec";
170 reg = <0x45>;
171 };
172 };
173
174 wsa881x_analog_vi_gpio: wsa881x_analog_vi_pctrl {
175 compatible = "qcom,msm-cdc-pinctrl";
176 pinctrl-names = "aud_active", "aud_sleep";
177 pinctrl-0 = <&wsa_vi_on>;
178 pinctrl-1 = <&wsa_vi_off>;
179 };
180 wsa881x_analog_clk_gpio: wsa881x_analog_clk_pctrl {
181 compatible = "qcom,msm-cdc-pinctrl";
182 pinctrl-names = "aud_active", "aud_sleep";
183 pinctrl-0 = <&wsa_clk_on>;
184 pinctrl-1 = <&wsa_clk_off>;
185 };
186 wsa881x_analog_reset_gpio: wsa881x_analog_reset_pctrl {
187 compatible = "qcom,msm-cdc-pinctrl";
188 pinctrl-names = "aud_active", "aud_sleep";
189 pinctrl-0 = <&wsa_reset_on>;
190 pinctrl-1 = <&wsa_reset_off>;
191 };
192
193 ext_codec: sound-9335 {
194 status = "disabled";
195 compatible = "qcom,msm8952-audio-slim-codec";
196 qcom,model = "msm8952-tasha-snd-card";
197
198 reg = <0xc051000 0x4>,
199 <0xc051004 0x4>,
200 <0xc055000 0x4>,
201 <0xc052000 0x4>;
202 reg-names = "csr_gp_io_mux_mic_ctl",
203 "csr_gp_io_mux_spkr_ctl",
204 "csr_gp_io_lpaif_pri_pcm_pri_mode_muxsel",
205 "csr_gp_io_mux_quin_ctl";
206
207 qcom,audio-routing =
208 "AIF4 VI", "MCLK",
209 "AIF4 VI", "MICBIAS_REGULATOR",
210 "RX_BIAS", "MCLK",
211 "MADINPUT", "MCLK",
212 "AIF4 MAD", "MICBIAS_REGULATOR",
213 "AMIC2", "MIC BIAS2",
214 "MIC BIAS2", "Headset Mic",
215 "AMIC3", "MIC BIAS2",
216 "MIC BIAS2", "ANCRight Headset Mic",
217 "AMIC4", "MIC BIAS2",
218 "MIC BIAS2", "ANCLeft Headset Mic",
219 "AMIC5", "MIC BIAS3",
220 "MIC BIAS3", "Handset Mic",
221 "AMIC6", "MIC BIAS4",
222 "MIC BIAS4", "Analog Mic6",
223 "DMIC0", "MIC BIAS1",
224 "MIC BIAS1", "Digital Mic0",
225 "DMIC1", "MIC BIAS1",
226 "MIC BIAS1", "Digital Mic1",
227 "DMIC2", "MIC BIAS3",
228 "MIC BIAS3", "Digital Mic2",
229 "DMIC3", "MIC BIAS3",
230 "MIC BIAS3", "Digital Mic3",
231 "DMIC4", "MIC BIAS4",
232 "MIC BIAS4", "Digital Mic4",
233 "DMIC5", "MIC BIAS4",
234 "MIC BIAS4", "Digital Mic5",
235 "MIC BIAS1", "MICBIAS_REGULATOR",
236 "MIC BIAS2", "MICBIAS_REGULATOR",
237 "MIC BIAS3", "MICBIAS_REGULATOR",
238 "MIC BIAS4", "MICBIAS_REGULATOR",
239 "SpkrLeft IN", "SPK1 OUT",
240 "SpkrRight IN", "SPK2 OUT";
241
242 qcom,tasha-mclk-clk-freq = <9600000>;
243
244 asoc-platform = <&pcm0>, <&pcm1>, <&pcm2>, <&voip>, <&voice>,
245 <&loopback>, <&compress>, <&hostless>,
246 <&afe>, <&lsm>, <&routing>;
247 asoc-platform-names = "msm-pcm-dsp.0", "msm-pcm-dsp.1",
248 "msm-pcm-dsp.2", "msm-voip-dsp",
249 "msm-pcm-voice", "msm-pcm-loopback",
250 "msm-compress-dsp", "msm-pcm-hostless",
251 "msm-pcm-afe", "msm-lsm-client",
252 "msm-pcm-routing";
253
254 asoc-cpu = <&dai_pri_auxpcm>,
255 <&dai_mi2s2>, <&dai_mi2s3>, <&dai_mi2s5>,
256 <&sb_0_rx>, <&sb_0_tx>, <&sb_1_rx>, <&sb_1_tx>,
257 <&sb_2_rx>, <&sb_2_tx>, <&sb_3_rx>, <&sb_3_tx>,
258 <&sb_4_rx>, <&sb_4_tx>, <&sb_5_tx>,
259 <&afe_pcm_rx>, <&afe_pcm_tx>,
260 <&afe_proxy_rx>, <&afe_proxy_tx>,
261 <&incall_record_rx>, <&incall_record_tx>,
262 <&incall_music_rx>, <&incall_music_2_rx>,
263 <&sb_5_rx>, <&bt_sco_rx>, <&bt_sco_tx>,
264 <&int_fm_rx>, <&int_fm_tx>, <&sb_6_rx>;
265
266 asoc-cpu-names = "msm-dai-q6-auxpcm.1",
267 "msm-dai-q6-mi2s.2", "msm-dai-q6-mi2s.3",
268 "msm-dai-q6-mi2s.5", "msm-dai-q6-dev.16384",
269 "msm-dai-q6-dev.16385", "msm-dai-q6-dev.16386",
270 "msm-dai-q6-dev.16387", "msm-dai-q6-dev.16388",
271 "msm-dai-q6-dev.16389", "msm-dai-q6-dev.16390",
272 "msm-dai-q6-dev.16391", "msm-dai-q6-dev.16392",
273 "msm-dai-q6-dev.16393", "msm-dai-q6-dev.16395",
274 "msm-dai-q6-dev.224", "msm-dai-q6-dev.225",
275 "msm-dai-q6-dev.241", "msm-dai-q6-dev.240",
276 "msm-dai-q6-dev.32771", "msm-dai-q6-dev.32772",
277 "msm-dai-q6-dev.32773", "msm-dai-q6-dev.32770",
278 "msm-dai-q6-dev.16394", "msm-dai-q6-dev.12288",
279 "msm-dai-q6-dev.12289", "msm-dai-q6-dev.12292",
280 "msm-dai-q6-dev.12293", "msm-dai-q6-dev.16396";
281
282 qcom,cdc-us-euro-gpios = <&tlmm 63 0>;
283 qcom,msm-mbhc-hphl-swh = <0>;
284 qcom,msm-mbhc-gnd-swh = <0>;
285
286 qcom,wsa-max-devs = <2>;
287 qcom,wsa-devs = <&wsa881x_211>, <&wsa881x_212>,
288 <&wsa881x_213>, <&wsa881x_214>;
289 qcom,wsa-aux-dev-prefix = "SpkrLeft", "SpkrRight",
290 "SpkrLeft", "SpkrRight";
291 };
292
293 wcd9xxx_intc: wcd9xxx-irq {
294 status = "disabled";
295 interrupt-parent = <&tlmm>;
296 interrupts = <73 0>;
297 qcom,gpio-connect = <&tlmm 73 0>;
298 };
299
300 clock_audio: audio_ext_clk {
301 status = "disabled";
302 compatible = "qcom,audio-ref-clk";
303 clock-names = "osr_clk";
304 qcom,node_has_rpm_clock;
305 #clock-cells = <1>;
306 qcom,audio-ref-clk-gpio = <&pm8937_gpios 1 0>;
307 qcom,lpass-mclk-id = "pri_mclk";
308 clocks = <&clock_gcc clk_div_clk2>;
309 pinctrl-0 = <&cdc_mclk2_sleep>;
310 pinctrl-1 = <&cdc_mclk2_active>;
311 };
312
313 wcd_rst_gpio: wcd_gpio_ctrl {
314 status = "disabled";
315 qcom,cdc-rst-n-gpio = <&tlmm 68 0>;
316 };
317};
318
319&slim_msm {
320 status = "disabled";
321 wcd9335: tasha_codec {
322 status = "disabled";
323 compatible = "qcom,tasha-slim-pgd";
324 clock-names = "wcd_clk", "wcd_native_clk";
325 clocks = <&clock_audio clk_audio_pmi_clk>,
326 <&clock_audio clk_audio_ap_clk2>;
327
328 qcom,cdc-reset-gpio = <&tlmm 68 0>;
329
330 cdc-vdd-buck-supply = <&eldo2_pm8937>;
331 qcom,cdc-vdd-buck-voltage = <1800000 1800000>;
332 qcom,cdc-vdd-buck-current = <650000>;
333
334 cdc-buck-sido-supply = <&eldo2_pm8937>;
335 qcom,cdc-buck-sido-voltage = <1800000 1800000>;
336 qcom,cdc-buck-sido-current = <250000>;
337
338 cdc-vdd-tx-h-supply = <&pm8937_l5>;
339 qcom,cdc-vdd-tx-h-voltage = <1800000 1800000>;
340 qcom,cdc-vdd-tx-h-current = <25000>;
341
342 cdc-vdd-rx-h-supply = <&pm8937_l5>;
343 qcom,cdc-vdd-rx-h-voltage = <1800000 1800000>;
344 qcom,cdc-vdd-rx-h-current = <25000>;
345
346 cdc-vdd-px-supply = <&pm8937_l5>;
347 qcom,cdc-vdd-px-voltage = <1800000 1800000>;
348 qcom,cdc-vdd-px-current = <10000>;
349
350 cdc-vdd-mic-bias-supply = <&pm8937_l13>;
351 qcom,cdc-vdd-mic-bias-voltage = <3075000 3075000>;
352 qcom,cdc-vdd-mic-bias-current = <15000>;
353 };
354};
355
356&pm8937_gpios {
357 gpio@c000 {
358 status = "ok";
359 qcom,mode = <1>;
360 qcom,pull = <5>;
361 qcom,vin-sel = <0>;
362 qcom,src-sel = <2>;
363 qcom,master-en = <1>;
364 qcom,out-strength = <2>;
365 };
366};
367
368&pm8937_1 {
369 pmic_analog_codec: analog-codec@f000 {
370 status = "okay";
371 compatible = "qcom,pmic-analog-codec";
372 reg = <0xf000 0x200>;
373 #address-cells = <2>;
374 #size-cells = <0>;
375 interrupt-parent = <&spmi_bus>;
376 interrupts = <0x1 0xf0 0x0 IRQ_TYPE_NONE>,
377 <0x1 0xf0 0x1 IRQ_TYPE_NONE>,
378 <0x1 0xf0 0x2 IRQ_TYPE_NONE>,
379 <0x1 0xf0 0x3 IRQ_TYPE_NONE>,
380 <0x1 0xf0 0x4 IRQ_TYPE_NONE>,
381 <0x1 0xf0 0x5 IRQ_TYPE_NONE>,
382 <0x1 0xf0 0x6 IRQ_TYPE_NONE>,
383 <0x1 0xf0 0x7 IRQ_TYPE_NONE>,
384 <0x1 0xf1 0x0 IRQ_TYPE_NONE>,
385 <0x1 0xf1 0x1 IRQ_TYPE_NONE>,
386 <0x1 0xf1 0x2 IRQ_TYPE_NONE>,
387 <0x1 0xf1 0x3 IRQ_TYPE_NONE>,
388 <0x1 0xf1 0x4 IRQ_TYPE_NONE>,
389 <0x1 0xf1 0x5 IRQ_TYPE_NONE>;
390 interrupt-names = "spk_cnp_int",
391 "spk_clip_int",
392 "spk_ocp_int",
393 "ins_rem_det1",
394 "but_rel_det",
395 "but_press_det",
396 "ins_rem_det",
397 "mbhc_int",
398 "ear_ocp_int",
399 "hphr_ocp_int",
400 "hphl_ocp_det",
401 "ear_cnp_int",
402 "hphr_cnp_int",
403 "hphl_cnp_int";
404
405 cdc-vdda-cp-supply = <&pm8937_s4>;
406 qcom,cdc-vdda-cp-voltage = <2050000 2050000>;
407 qcom,cdc-vdda-cp-current = <210000>;
408
409 cdc-vdd-io-supply = <&pm8937_l5>;
410 qcom,cdc-vdd-io-voltage = <1800000 1800000>;
411 qcom,cdc-vdd-io-current = <5000>;
412
413 cdc-vdd-pa-supply = <&pm8937_s4>;
414 qcom,cdc-vdd-pa-voltage = <1900000 2050000>;
415 qcom,cdc-vdd-pa-current = <260000>;
416
417 cdc-vdd-mic-bias-supply = <&pm8937_l13>;
418 qcom,cdc-vdd-mic-bias-voltage = <3075000 3075000>;
419 qcom,cdc-vdd-mic-bias-current = <5000>;
420
421 qcom,cdc-mclk-clk-rate = <9600000>;
422
423 qcom,cdc-static-supplies = "cdc-vdd-io",
424 "cdc-vdd-pa",
425 "cdc-vdda-cp";
426
427 qcom,cdc-on-demand-supplies = "cdc-vdd-mic-bias";
428
429 msm_digital_codec: msm-dig-codec {
430 compatible = "qcom,msm-digital-codec";
431 reg = <0xc0f0000 0x0>;
432 };
433 };
434};