blob: b812f890aa0484f09532ef3b89f61ab42067585f [file] [log] [blame]
/*
* Copyright (c) 2015-2016, 2018, 2020, The Linux Foundation. All rights reserved.
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 2 and
* only version 2 as published by the Free Software Foundation.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*/
#include "msm-audio-lpass.dtsi"
#include "msm8953-wsa881x.dtsi"
&msm_audio_ion {
iommus = <&apps_iommu 0x2401 0x0>;
qcom,smmu-sid-mask = /bits/ 64 <0xf>;
};
&soc {
qcom,msm-audio-apr {
compatible = "qcom,msm-audio-apr";
msm_audio_apr_dummy {
compatible = "qcom,msm-audio-apr-dummy";
};
};
qcom,avtimer@c0a300c {
compatible = "qcom,avtimer";
reg = <0x0c0a300c 0x4>,
<0x0c0a3010 0x4>;
reg-names = "avtimer_lsb_addr", "avtimer_msb_addr";
qcom,clk-div = <27>;
};
int_codec: sound {
status = "disabled";
compatible = "qcom,msm8952-audio-codec";
qcom,model = "msm8953-snd-card-mtp";
reg = <0xc051000 0x4>,
<0xc051004 0x4>,
<0xc055000 0x4>,
<0xc052000 0x4>;
reg-names = "csr_gp_io_mux_mic_ctl",
"csr_gp_io_mux_spkr_ctl",
"csr_gp_io_lpaif_pri_pcm_pri_mode_muxsel",
"csr_gp_io_mux_quin_ctl";
qcom,msm-ext-pa = "primary";
qcom,msm-mclk-freq = <9600000>;
qcom,msm-mbhc-hphl-swh = <0>;
qcom,msm-mbhc-gnd-swh = <0>;
qcom,msm-hs-micbias-type = "internal";
qcom,msm-micbias1-ext-cap;
qcom,audio-routing =
"RX_BIAS", "MCLK",
"SPK_RX_BIAS", "MCLK",
"INT_LDO_H", "MCLK",
"RX_I2S_CLK", "MCLK",
"TX_I2S_CLK", "MCLK",
"MIC BIAS External", "Handset Mic",
"MIC BIAS External2", "Headset Mic",
"MIC BIAS External", "Secondary Mic",
"AMIC1", "MIC BIAS External",
"AMIC2", "MIC BIAS External2",
"AMIC3", "MIC BIAS External",
"ADC1_IN", "ADC1_OUT",
"ADC2_IN", "ADC2_OUT",
"ADC3_IN", "ADC3_OUT",
"PDM_IN_RX1", "PDM_OUT_RX1",
"PDM_IN_RX2", "PDM_OUT_RX2",
"PDM_IN_RX3", "PDM_OUT_RX3",
"WSA_SPK OUT", "VDD_WSA_SWITCH",
"SpkrMono WSA_IN", "WSA_SPK OUT";
//qcom,cdc-us-euro-gpios = <&tlmm 63 0>;
//qcom,cdc-us-eu-gpios = <&cdc_us_euro_sw>;
//qcom,cdc-comp-gpios = <&cdc_comp_gpios>;
//qcom,pri-mi2s-gpios = <&cdc_pri_mi2s_gpios>;
qcom,quin-mi2s-gpios = <&cdc_quin_mi2s_gpios>;
qcom,afe-rxtx-lb;
asoc-platform = <&pcm0>, <&pcm1>, <&pcm2>, <&voip>, <&voice>,
<&loopback>, <&compress>, <&hostless>,
<&afe>, <&lsm>, <&routing>, <&pcm_noirq>;
asoc-platform-names = "msm-pcm-dsp.0", "msm-pcm-dsp.1",
"msm-pcm-dsp.2", "msm-voip-dsp",
"msm-pcm-voice", "msm-pcm-loopback",
"msm-compress-dsp", "msm-pcm-hostless",
"msm-pcm-afe", "msm-lsm-client",
"msm-pcm-routing", "msm-pcm-dsp-noirq";
asoc-cpu = <&dai_pri_auxpcm>,
<&dai_mi2s0>, <&dai_mi2s1>,
<&dai_mi2s2>, <&dai_mi2s3>,
<&dai_mi2s4>, <&dai_mi2s5>,
<&sb_0_rx>, <&sb_0_tx>, <&sb_1_rx>, <&sb_1_tx>,
<&sb_3_rx>, <&sb_3_tx>, <&sb_4_rx>, <&sb_4_tx>,
<&bt_sco_rx>, <&bt_sco_tx>,
<&int_fm_rx>, <&int_fm_tx>,
<&afe_pcm_rx>, <&afe_pcm_tx>,
<&afe_proxy_rx>, <&afe_proxy_tx>,
<&incall_record_rx>, <&incall_record_tx>,
<&incall_music_rx>, <&incall_music_2_rx>,
<&afe_loopback_tx>,
<&proxy_rx>, <&proxy_tx>;
asoc-cpu-names = "msm-dai-q6-auxpcm.1",
"msm-dai-q6-mi2s.0", "msm-dai-q6-mi2s.1",
"msm-dai-q6-mi2s.2", "msm-dai-q6-mi2s.3",
"msm-dai-q6-mi2s.4", "msm-dai-q6-mi2s.6",
"msm-dai-q6-dev.16384", "msmdai-q6-dev.16385",
"msm-dai-q6-dev.16386", "msm-dai-q6-dev.16387",
"msm-dai-q6-dev.16390", "msm-dai-q6-dev.16391",
"msm-dai-q6-dev.16392", "msm-dai-q6-dev.16393",
"msm-dai-q6-dev.12288", "msm-dai-q6-dev.12289",
"msm-dai-q6-dev.12292", "msm-dai-q6-dev.12293",
"msm-dai-q6-dev.224", "msm-dai-q6-dev.225",
"msm-dai-q6-dev.241", "msm-dai-q6-dev.240",
"msm-dai-q6-dev.32771", "msm-dai-q6-dev.32772",
"msm-dai-q6-dev.32773", "msm-dai-q6-dev.32770",
"msm-dai-q6-dev.24577",
"msm-dai-q6-dev.8194", "msm-dai-q6-dev.8195";
asoc-codec = <&stub_codec>, <&msm_digital_codec>,
<&pmic_analog_codec>;
asoc-codec-names = "msm-stub-codec.1", "msm-dig-codec",
"analog-codec";
asoc-wsa-codec-names = "wsa881x-i2c-codec.2-000f";
asoc-wsa-codec-prefixes = "SpkrMono";
msm-vdd-wsa-switch-supply = <&pm8953_l5>;
qcom,msm-vdd-wsa-switch-voltage = <1800000>;
qcom,msm-vdd-wsa-switch-current = <10000>;
};
cdc_comp_gpios: cdc_comp_pinctrl {
status = "disabled";
compatible = "qcom,msm-cdc-pinctrl";
pinctrl-names = "aud_active", "aud_sleep";
pinctrl-0 = <&cdc_pdm_comp_lines_act>;
pinctrl-1 = <&cdc_pdm_comp_lines_sus>;
};
cdc_pri_mi2s_gpios: msm_cdc_pinctrl_pri {
status = "disabled";
compatible = "qcom,msm-cdc-pinctrl";
pinctrl-names = "aud_active", "aud_sleep";
pinctrl-0 = <&cdc_pdm_lines_act &cdc_pdm_lines_2_act>;
pinctrl-1 = <&cdc_pdm_lines_sus &cdc_pdm_lines_2_sus>;
};
cdc_quin_mi2s_gpios: msm_cdc_pinctrl_quin {
compatible = "qcom,msm-cdc-pinctrl";
pinctrl-names = "aud_active", "aud_sleep";
pinctrl-0 = <&pri_tlmm_lines_act &pri_tlmm_ws_act>;
pinctrl-1 = <&pri_tlmm_lines_sus &pri_tlmm_ws_sus>;
};
i2c@78b6000 {
status = "okay";
#address-cells = <1>;
#size-cells = <0>;
wsa881x_i2c_f: wsa881x-i2c-codec@f {
status = "disabled";
compatible = "qcom,wsa881x-i2c-codec";
reg = <0x0f>;
qcom,wsa-analog-vi-gpio = <&wsa881x_analog_vi_gpio>;
qcom,wsa-analog-clk-gpio = <&wsa881x_analog_clk_gpio>;
qcom,wsa-analog-reset-gpio =
<&wsa881x_analog_reset_gpio>;
};
wsa881x_i2c_45: wsa881x-i2c-codec@45 {
status = "disabled";
compatible = "qcom,wsa881x-i2c-codec";
reg = <0x45>;
};
};
wsa881x_analog_vi_gpio: wsa881x_analog_vi_pctrl {
compatible = "qcom,msm-cdc-pinctrl";
pinctrl-names = "aud_active", "aud_sleep";
pinctrl-0 = <&wsa_vi_on>;
pinctrl-1 = <&wsa_vi_off>;
};
wsa881x_analog_clk_gpio: wsa881x_analog_clk_pctrl {
compatible = "qcom,msm-cdc-pinctrl";
pinctrl-names = "aud_active", "aud_sleep";
pinctrl-0 = <&wsa_clk_on>;
pinctrl-1 = <&wsa_clk_off>;
};
wsa881x_analog_reset_gpio: wsa881x_analog_reset_pctrl {
status = "disabled";
//compatible = "qcom,msm-cdc-pinctrl";
//pinctrl-names = "aud_active", "aud_sleep";
//pinctrl-0 = <&wsa_reset_on>;
//pinctrl-1 = <&wsa_reset_off>;
};
ext_codec: sound-9335 {
status = "okay";
compatible = "qcom,msm8952-audio-slim-codec";
qcom,model = "msm8953-tasha-snd-card";
reg = <0xc051000 0x4>,
<0xc051004 0x4>,
<0xc055000 0x4>,
<0xc052000 0x4>,
<0x0c056000 0x4>,
<0x0c054000 0x4>,
<0x0c053000 0x4>;
reg-names = "csr_gp_io_mux_mic_ctl",
"csr_gp_io_mux_spkr_ctl",
"csr_gp_io_lpaif_pri_pcm_pri_mode_muxsel",
"csr_gp_io_mux_quin_ctl",
"csr_gp_io_lpaif_qui_pcm_sec_mode_muxsel",
"csr_gp_io_mux_mic_ext_clk_ctl",
"csr_gp_io_mux_sec_tlmm_ctl";
qcom,msm-ext-pa = "quinary";
qcom,audio-routing =
"AIF4 VI", "MCLK",
"AIF4 VI", "MICBIAS_REGULATOR",
"RX_BIAS", "MCLK",
"MADINPUT", "MCLK",
"AIF4 MAD", "MICBIAS_REGULATOR",
"AMIC2", "MIC BIAS2",
"MIC BIAS2", "Headset Mic",
"AMIC3", "MIC BIAS2",
"MIC BIAS2", "ANCRight Headset Mic",
"AMIC4", "MIC BIAS2",
"MIC BIAS2", "ANCLeft Headset Mic",
"AMIC5", "MIC BIAS3",
"MIC BIAS3", "Handset Mic",
"AMIC6", "MIC BIAS4",
"MIC BIAS4", "Analog Mic6",
"DMIC0", "MIC BIAS1",
"MIC BIAS1", "Digital Mic0",
"DMIC1", "MIC BIAS1",
"MIC BIAS1", "Digital Mic1",
"DMIC2", "MIC BIAS3",
"MIC BIAS3", "Digital Mic2",
"DMIC3", "MIC BIAS3",
"MIC BIAS3", "Digital Mic3",
"DMIC4", "MIC BIAS4",
"MIC BIAS4", "Digital Mic4",
"DMIC5", "MIC BIAS4",
"MIC BIAS4", "Digital Mic5",
"MIC BIAS1", "MICBIAS_REGULATOR",
"MIC BIAS2", "MICBIAS_REGULATOR",
"MIC BIAS3", "MICBIAS_REGULATOR",
"MIC BIAS4", "MICBIAS_REGULATOR",
"SpkrLeft IN", "SPK1 OUT",
"SpkrRight IN", "SPK2 OUT";
qcom,tasha-mclk-clk-freq = <9600000>;
qcom,msm-mbhc-hphl-swh = <1>;
qcom,msm-mbhc-gnd-swh = <1>;
qcom,quin-mi2s-gpios = <&cdc_quin_mi2s_gpios>;
asoc-platform = <&pcm0>, <&pcm1>, <&pcm2>, <&voip>, <&voice>,
<&loopback>, <&compress>, <&hostless>,
<&afe>, <&lsm>, <&routing>, <&cpe>, <&compr>,
<&pcm_noirq>;
asoc-platform-names = "msm-pcm-dsp.0", "msm-pcm-dsp.1",
"msm-pcm-dsp.2", "msm-voip-dsp",
"msm-pcm-voice", "msm-pcm-loopback",
"msm-compress-dsp", "msm-pcm-hostless",
"msm-pcm-afe", "msm-lsm-client",
"msm-pcm-routing", "msm-cpe-lsm",
"msm-compr-dsp", "msm-pcm-dsp-noirq";
asoc-cpu = <&dai_pri_auxpcm>,
<&dai_mi2s2>, <&dai_mi2s3>, <&dai_mi2s5>,
<&sb_0_rx>, <&sb_0_tx>, <&sb_1_rx>, <&sb_1_tx>,
<&sb_2_rx>, <&sb_2_tx>, <&sb_3_rx>, <&sb_3_tx>,
<&sb_4_rx>, <&sb_4_tx>, <&sb_5_tx>,
<&afe_pcm_rx>, <&afe_pcm_tx>,
<&afe_proxy_rx>, <&afe_proxy_tx>,
<&incall_record_rx>, <&incall_record_tx>,
<&incall_music_rx>, <&incall_music_2_rx>,
<&sb_5_rx>, <&bt_sco_rx>, <&bt_sco_tx>,
<&int_fm_rx>, <&int_fm_tx>, <&sb_6_rx>,
<&proxy_rx>, <&proxy_tx>;
asoc-cpu-names = "msm-dai-q6-auxpcm.1",
"msm-dai-q6-mi2s.2", "msm-dai-q6-mi2s.3",
"msm-dai-q6-mi2s.5", "msm-dai-q6-dev.16384",
"msm-dai-q6-dev.16385", "msm-dai-q6-dev.16386",
"msm-dai-q6-dev.16387", "msm-dai-q6-dev.16388",
"msm-dai-q6-dev.16389", "msm-dai-q6-dev.16390",
"msm-dai-q6-dev.16391", "msm-dai-q6-dev.16392",
"msm-dai-q6-dev.16393", "msm-dai-q6-dev.16395",
"msm-dai-q6-dev.224", "msm-dai-q6-dev.225",
"msm-dai-q6-dev.241", "msm-dai-q6-dev.240",
"msm-dai-q6-dev.32771", "msm-dai-q6-dev.32772",
"msm-dai-q6-dev.32773", "msm-dai-q6-dev.32770",
"msm-dai-q6-dev.16394", "msm-dai-q6-dev.12288",
"msm-dai-q6-dev.12289", "msm-dai-q6-dev.12292",
"msm-dai-q6-dev.12293", "msm-dai-q6-dev.16396",
"msm-dai-q6-dev.8194", "msm-dai-q6-dev.8195";
asoc-codec = <&stub_codec>, <&dai_mi2s5>;
asoc-codec-names = "msm-stub-codec.1", "msm-dai-q6-mi2s.5";
qcom,wsa-max-devs = <0>;
qcom,wsa-devs = <&wsa881x_211>, <&wsa881x_212>,
<&wsa881x_213>, <&wsa881x_214>;
qcom,wsa-aux-dev-prefix = "SpkrLeft", "SpkrRight",
"SpkrLeft", "SpkrRight";
};
cpe: qcom,msm-cpe-lsm {
compatible = "qcom,msm-cpe-lsm";
};
wcd9xxx_intc: wcd9xxx-irq {
status = "okay";
compatible = "qcom,wcd9xxx-irq";
interrupt-controller;
#interrupt-cells = <1>;
interrupt-parent = <&tlmm>;
qcom,gpio-connect = <&tlmm 73 0>;
pinctrl-names = "default";
pinctrl-0 = <&wcd_intr_default>;
};
clock_audio: audio_ext_clk {
status = "okay";
compatible = "qcom,audio-ref-clk";
clock-names = "osr_clk";
qcom,node_has_rpm_clock;
#clock-cells = <1>;
pinctrl-names = "active", "sleep";
pinctrl-0 = <&tasha_mclk_default>;
pinctrl-1 = <&tasha_mclk_default>;
qcom,audio-ref-clk-gpio = <&pm8953_gpios 1 0>;
clocks = <&clock_gcc clk_div_clk2>;
};
wcd_rst_gpio: msm_cdc_pinctrl@67 {
status = "okay";
compatible = "qcom,msm-cdc-pinctrl";
pinctrl-names = "aud_active", "aud_sleep";
pinctrl-0 = <&cdc_reset_active>;
pinctrl-1 = <&cdc_reset_sleep>;
};
};
&slim_msm {
status = "okay";
dai_slim: msm_dai_slim {
status = "okay";
compatible = "qcom,msm-dai-slim";
elemental-addr = [ff ff ff fe 17 02];
};
wcd9335: tasha_codec {
status = "okay";
compatible = "qcom,tasha-slim-pgd";
elemental-addr = [00 01 A0 01 17 02];
qcom,cdc-slim-ifd = "tasha-slim-ifd";
qcom,cdc-slim-ifd-elemental-addr = [00 00 A0 01 17 02];
interrupt-parent = <&wcd9xxx_intc>;
interrupts = <0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
17 18 19 20 21 22 23 24 25 26 27 28 29 30>;
qcom,wcd-rst-gpio-node = <&wcd_rst_gpio>;
clock-names = "wcd_clk", "wcd_native_clk";
clocks = <&clock_audio clk_audio_pmi_clk>,
<&clock_audio clk_audio_ap_clk2>;
qcom,cdc-static-supplies =
"cdc-vdd-buck",
"cdc-buck-sido",
"cdc-vdd-tx-h",
"cdc-vdd-rx-h",
"cdc-vdd-px";
qcom,cdc-on-demand-supplies = "cdc-vdd-mic-bias";
qcom,cdc-micbias1-mv = <1800>;
qcom,cdc-micbias2-mv = <2800>;
qcom,cdc-micbias3-mv = <1800>;
qcom,cdc-micbias4-mv = <1800>;
qcom,cdc-dmic-sample-rate = <2400000>;
qcom,cdc-mclk-clk-rate = <9600000>;
cdc-vdd-buck-supply = <&eldo2_8953>;
qcom,cdc-vdd-buck-voltage = <1800000 1800000>;
qcom,cdc-vdd-buck-current = <650000>;
cdc-buck-sido-supply = <&eldo2_8953>;
qcom,cdc-buck-sido-voltage = <1800000 1800000>;
qcom,cdc-buck-sido-current = <150000>;
cdc-vdd-tx-h-supply = <&eldo2_8953>;
qcom,cdc-vdd-tx-h-voltage = <1800000 1800000>;
qcom,cdc-vdd-tx-h-current = <25000>;
cdc-vdd-rx-h-supply = <&eldo2_8953>;
qcom,cdc-vdd-rx-h-voltage = <1800000 1800000>;
qcom,cdc-vdd-rx-h-current = <25000>;
cdc-vdd-px-supply = <&eldo2_8953>;
qcom,cdc-vdd-px-voltage = <1800000 1800000>;
qcom,cdc-vdd-px-current = <10000>;
cdc-vdd-mic-bias-supply = <&pm8953_l13>;
qcom,cdc-vdd-mic-bias-voltage = <3125000 3125000>;
qcom,cdc-vdd-mic-bias-current = <15000>;
};
};
&pm8953_gpios {
gpio@c000 {
status = "ok";
qcom,mode = <1>;
qcom,pull = <5>;
qcom,vin-sel = <0>;
qcom,src-sel = <2>;
qcom,master-en = <1>;
qcom,out-strength = <2>;
};
tasha_mclk {
tasha_mclk_default: tasha_mclk_default{
pins = "gpio1";
function = "func1";
qcom,drive-strength = <2>;
power-source = <0>;
bias-disable;
output-low;
};
};
};
&pm8953_1 {
pmic_analog_codec: analog-codec@f000 {
status = "disabled";
compatible = "qcom,pmic-analog-codec";
reg = <0xf000 0x200>;
#address-cells = <2>;
#size-cells = <0>;
interrupt-parent = <&spmi_bus>;
interrupts = <0x1 0xf0 0x0 IRQ_TYPE_NONE>,
<0x1 0xf0 0x1 IRQ_TYPE_NONE>,
<0x1 0xf0 0x2 IRQ_TYPE_NONE>,
<0x1 0xf0 0x3 IRQ_TYPE_NONE>,
<0x1 0xf0 0x4 IRQ_TYPE_NONE>,
<0x1 0xf0 0x5 IRQ_TYPE_NONE>,
<0x1 0xf0 0x6 IRQ_TYPE_NONE>,
<0x1 0xf0 0x7 IRQ_TYPE_NONE>,
<0x1 0xf1 0x0 IRQ_TYPE_NONE>,
<0x1 0xf1 0x1 IRQ_TYPE_NONE>,
<0x1 0xf1 0x2 IRQ_TYPE_NONE>,
<0x1 0xf1 0x3 IRQ_TYPE_NONE>,
<0x1 0xf1 0x4 IRQ_TYPE_NONE>,
<0x1 0xf1 0x5 IRQ_TYPE_NONE>;
interrupt-names = "spk_cnp_int",
"spk_clip_int",
"spk_ocp_int",
"ins_rem_det1",
"but_rel_det",
"but_press_det",
"ins_rem_det",
"mbhc_int",
"ear_ocp_int",
"hphr_ocp_int",
"hphl_ocp_det",
"ear_cnp_int",
"hphr_cnp_int",
"hphl_cnp_int";
cdc-vdda-cp-supply = <&pm8953_s4>;
qcom,cdc-vdda-cp-voltage = <1900000 2050000>;
qcom,cdc-vdda-cp-current = <500000>;
cdc-vdd-io-supply = <&pm8953_l5>;
qcom,cdc-vdd-io-voltage = <1800000 1800000>;
qcom,cdc-vdd-io-current = <5000>;
cdc-vdd-pa-supply = <&pm8953_s4>;
qcom,cdc-vdd-pa-voltage = <1900000 2050000>;
qcom,cdc-vdd-pa-current = <260000>;
cdc-vdd-mic-bias-supply = <&pm8953_l13>;
qcom,cdc-vdd-mic-bias-voltage = <3125000 3125000>;
qcom,cdc-vdd-mic-bias-current = <5000>;
qcom,cdc-mclk-clk-rate = <9600000>;
qcom,cdc-static-supplies = "cdc-vdd-io",
"cdc-vdd-pa",
"cdc-vdda-cp";
qcom,cdc-on-demand-supplies = "cdc-vdd-mic-bias";
msm_digital_codec: msm-dig-codec {
compatible = "qcom,msm-digital-codec";
reg = <0xc0f0000 0x0>;
};
};
};