diff --git a/Kbuild b/Kbuild index e2380ae3..d949f082 100644 --- a/Kbuild +++ b/Kbuild @@ -20,6 +20,11 @@ endif ifeq ($(CONFIG_ARCH_KHAJE), y) dtbo-y += khaje-audio.dtbo \ khaje-audio-idp.dtbo \ + khaje-audio-qrd.dtbo \ + khaje-audio-qrd-hvdcp3p5.dtbo \ + khaje-audio-idp-nopmi.dtbo \ + khajeg-audio-idp.dtbo \ + khajeg-audio-idp-90hz.dtbo \ khaje-nowcd.dtbo endif diff --git a/bengal-audio-qrd.dtsi b/bengal-audio-qrd.dtsi new file mode 100644 index 00000000..714fcb1b --- /dev/null +++ b/bengal-audio-qrd.dtsi @@ -0,0 +1,42 @@ +#include "bengal-audio-overlay.dtsi" + +&bengal_snd { + qcom,model = "bengal-qrd-snd-card"; + qcom,msm-mi2s-master = <1>, <1>, <1>, <1>; + qcom,wcn-btfm = <1>; + qcom,ext-disp-audio-rx = <0>; + qcom,audio-routing = + "AMIC1", "Analog Mic1", + "AMIC1", "MIC BIAS1", + "AMIC2", "Analog Mic2", + "AMIC2", "MIC BIAS2", + "AMIC3", "MIC BIAS3", + "AMIC3", "Analog Mic3", + "AMIC3", "MIC BIAS3", + "AMIC4", "Analog Mic4", + "AMIC4", "MIC BIAS3", + "IN1_HPHL", "HPHL_OUT", + "IN2_HPHR", "HPHR_OUT", + "IN3_AUX", "AUX_OUT", + "SpkrMono WSA_IN", "AUX", + "TX SWR_INPUT", "WCD_TX_OUTPUT", + "VA SWR_INPUT", "VA_SWR_CLK", + "VA SWR_INPUT", "WCD_TX_OUTPUT", + "RX_TX DEC0_INP", "TX DEC0 MUX", + "RX_TX DEC1_INP", "TX DEC1 MUX", + "RX_TX DEC2_INP", "TX DEC2 MUX", + "RX_TX DEC3_INP", "TX DEC3 MUX", + "TX_AIF1 CAP", "VA_SWR_CLK", + "TX_AIF2 CAP", "VA_SWR_CLK", + "TX_AIF3 CAP", "VA_SWR_CLK"; + qcom,msm-mbhc-hphl-swh = <1>; + qcom,msm-mbhc-gnd-swh = <1>; + asoc-codec = <&stub_codec>, <&bolero_cdc>, + <&wcd937x_codec> , <&wsa881x_i2c_e>; + asoc-codec-names = "msm-stub-codec.1", "bolero-codec", + "wcd937x_codec", "wsa-codec0"; + qcom,wsa-max-devs = <1>; + qcom,wsa-aux-dev-prefix = "SpkrMono"; + qcom,msm_audio_ssr_devs = <&audio_gpr>, <&bolero_cdc>, + <&lpi_tlmm>; +}; diff --git a/khaje-audio-idp-nopmi.dts b/khaje-audio-idp-nopmi.dts new file mode 100644 index 00000000..26c7ee3d --- /dev/null +++ b/khaje-audio-idp-nopmi.dts @@ -0,0 +1,11 @@ +/dts-v1/; +/plugin/; + +#include "bengal-audio-overlay.dtsi" +/ { + model = "Qualcomm Technologies, Inc. Khaje IDP nopmi"; + compatible = "qcom,khaje-idp", "qcom,khaje", "qcom,idp"; + qcom,msm-id = <518 0x10000>; + qcom,board-id = <0x10022 0>; + qcom,pmic-id = <0x2D 0x0 0x0 0x0>; +}; diff --git a/khaje-audio-qrd-hvdcp3p5.dts b/khaje-audio-qrd-hvdcp3p5.dts new file mode 100644 index 00000000..580d5afe --- /dev/null +++ b/khaje-audio-qrd-hvdcp3p5.dts @@ -0,0 +1,11 @@ +/dts-v1/; +/plugin/; + +#include "bengal-audio-qrd.dtsi" +/ { + model = "Qualcomm Technologies, Inc. Khaje QRD HVDCP3P5"; + compatible = "qcom,khaje-qrd", "qcom,khaje", "qcom,qrd"; + qcom,msm-id = <518 0x10000>; + qcom,board-id = <0x1010B 0>; + qcom,pmic-id = <0x2D 0x2E 0x0 0x0>; +}; diff --git a/khaje-audio-qrd.dts b/khaje-audio-qrd.dts new file mode 100644 index 00000000..b785ce23 --- /dev/null +++ b/khaje-audio-qrd.dts @@ -0,0 +1,11 @@ +/dts-v1/; +/plugin/; + +#include "bengal-audio-qrd.dtsi" +/ { + model = "Qualcomm Technologies, Inc. Khaje QRD"; + compatible = "qcom,khaje-qrd", "qcom,khaje", "qcom,qrd"; + qcom,msm-id = <518 0x10000>; + qcom,board-id = <0x1000B 0>; + qcom,pmic-id = <0x2D 0x2E 0x0 0x0>; +}; diff --git a/khaje-audio.dts b/khaje-audio.dts index 74f59d7d..459b5536 100644 --- a/khaje-audio.dts +++ b/khaje-audio.dts @@ -9,6 +9,6 @@ / { model = "Qualcomm Technologies, Inc. Khaje SoC"; compatible = "qcom,khaje"; - qcom,msm-id = <518 0x10000>; + qcom,msm-id = <518 0x10000>, <585 0x10000>; qcom,board-id = <0 0>; }; diff --git a/khajeg-audio-idp-90hz.dts b/khajeg-audio-idp-90hz.dts new file mode 100644 index 00000000..f97be7ae --- /dev/null +++ b/khajeg-audio-idp-90hz.dts @@ -0,0 +1,11 @@ +/dts-v1/; +/plugin/; + +#include "bengal-audio-overlay.dtsi" +/ { + model = "Qualcomm Technologies, Inc. Khajeg IDPS + 90Hz"; + compatible = "qcom,khajeg-idp", "qcom,khajeg", "qcom,idp"; + qcom,msm-id = <585 0x10000>; + qcom,board-id = <0x10122 0>; + qcom,pmic-id = <0x2D 0x2E 0x0 0x0>; +}; diff --git a/khajeg-audio-idp.dts b/khajeg-audio-idp.dts new file mode 100644 index 00000000..fb11486c --- /dev/null +++ b/khajeg-audio-idp.dts @@ -0,0 +1,11 @@ +/dts-v1/; +/plugin/; + +#include "bengal-audio-overlay.dtsi" +/ { + model = "Qualcomm Technologies, Inc. Khajeg IDP"; + compatible = "qcom,khajeg-idp", "qcom,khajeg", "qcom,idp"; + qcom,msm-id = <585 0x10000>; + qcom,board-id = <0x10022 0>; + qcom,pmic-id = <0x2D 0x2E 0x0 0x0>; +}; diff --git a/sdx-audio-lpass.dtsi b/sdx-audio-lpass.dtsi new file mode 100644 index 00000000..1c72f79c --- /dev/null +++ b/sdx-audio-lpass.dtsi @@ -0,0 +1,83 @@ +&soc { + spf_core_platform: spf_core_platform { + compatible = "qcom,spf-core-platform"; + }; + + audio_pkt_core_platform: audio-pkt-platform { + compatible = "qcom,audio-pkt-core-platform"; + }; + + qcom,msm-adsp-loader { + compatible = "qcom,adsp-loader"; + qcom,adsp-state = <0>; + qcom,proc-img-to-load = "modem"; + }; + + qcom,msm-audio-ion { + compatible = "qcom,msm-audio-ion-cma"; + qcom,scm-mp-enabled; + memory-region = <&audio_heap_mem>; + }; + + stub_codec: qcom,msm-stub-codec { + compatible = "qcom,msm-stub-codec"; + }; + + prim_master: prim_master_pinctrl { + compatible = "qcom,msm-cdc-pinctrl"; + pinctrl-names = "aud_active", "aud_sleep"; + pinctrl-0 = <&pri_ws_active_master + &pri_sck_active_master + &pri_dout_active + &pri_din_active>; + pinctrl-1 = <&pri_ws_sleep + &pri_sck_sleep + &pri_dout_sleep + &pri_din_sleep>; + qcom,mi2s-auxpcm-cdc-gpios; + }; + + prim_slave: prim_slave_pinctrl { + status = "disabled"; + compatible = "qcom,msm-cdc-pinctrl"; + pinctrl-names = "aud_active", "aud_sleep"; + pinctrl-0 = <&pri_ws_active_slave + &pri_sck_active_slave + &pri_dout_active + &pri_din_active>; + pinctrl-1 = <&pri_ws_sleep + &pri_sck_sleep + &pri_dout_sleep + &pri_din_sleep>; + qcom,mi2s-auxpcm-cdc-gpios; + }; + + sec_master: sec_master_pinctrl { + compatible = "qcom,msm-cdc-pinctrl"; + pinctrl-names = "aud_active", "aud_sleep"; + pinctrl-0 = <&sec_ws_active_master + &sec_sck_active_master + &sec_dout_active + &sec_din_active>; + pinctrl-1 = <&sec_ws_sleep + &sec_sck_sleep + &sec_dout_sleep + &sec_din_sleep>; + qcom,mi2s-auxpcm-cdc-gpios; + }; + + sec_slave: sec_slave_pinctrl { + status = "disabled"; + compatible = "qcom,msm-cdc-pinctrl"; + pinctrl-names = "aud_active", "aud_sleep"; + pinctrl-0 = <&sec_ws_active_slave + &sec_sck_active_slave + &sec_dout_active + &sec_din_active>; + pinctrl-1 = <&sec_ws_sleep + &sec_sck_sleep + &sec_dout_sleep + &sec_din_sleep>; + qcom,mi2s-auxpcm-cdc-gpios; + }; +}; diff --git a/sdx-wsa881x.dtsi b/sdx-wsa881x.dtsi new file mode 100644 index 00000000..bd4ba29d --- /dev/null +++ b/sdx-wsa881x.dtsi @@ -0,0 +1,17 @@ +&i2c_3 { + tavil_codec { + swr_master { + compatible = "qcom,swr-wcd"; + #address-cells = <2>; + #size-cells = <0>; + qcom,swr-num-dev = <1>; + + wsa881x_0214: wsa881x@21170214 { + compatible = "qcom,wsa881x"; + reg = <0x00 0x21170214>; + qcom,spkr-sd-n-node = <&wsa_spkr_wcd_sd1>; + qcom,wsa-prefix = "SpkrLeft"; + }; + }; + }; +}; diff --git a/sdxpinn-audio-overlay.dtsi b/sdxpinn-audio-overlay.dtsi new file mode 100644 index 00000000..6e4111b1 --- /dev/null +++ b/sdxpinn-audio-overlay.dtsi @@ -0,0 +1,131 @@ +#include "sdxpinn-wcd.dtsi" +#include "sdx-wsa881x.dtsi" +#include + +&snd_934x { + qcom,audio-routing = + "RX_BIAS", "MCLK", + "MADINPUT", "MCLK", + "AMIC2", "Headset Mic", + "Headset Mic", "MIC BIAS2", + "AMIC3", "ANCRight Headset Mic", + "ANCRight Headset Mic", "MIC BIAS2", + "AMIC4", "ANCLeft Headset Mic", + "ANCLeft Headset Mic", "MIC BIAS2", + "AMIC5", "Handset Mic", + "Handset Mic", "MIC BIAS3", + "DMIC1", "Digital Mic1", + "DMIC1", "MIC BIAS1", + "DMIC2", "Digital Mic2", + "DMIC2", "MIC BIAS3", + "DMIC3", "Digital Mic3", + "DMIC3", "MIC BIAS3", + "DMIC4", "Digital Mic4", + "DMIC4", "MIC BIAS4", + "DMIC5", "Digital Mic5", + "DMIC5", "MIC BIAS4", + "SpkrLeft IN", "SPK1 OUT"; + + qcom,msm-mbhc-hphl-swh = <1>; + qcom,msm-mbhc-gnd-swh = <1>; + qcom,msm-mbhc-hs-mic-max-threshold-mv = <1700>; + qcom,msm-mbhc-hs-mic-min-threshold-mv = <50>; + qcom,cdc-ext-clk-rate = <9600000>; + qcom,tavil-mclk-clk-freq = <9600000>; + + asoc-codec = <&stub_codec>, <&wsa881x_0214>; + asoc-codec-names = "msm-stub-codec.1", "wsa-codec.1"; + + qcom,wsa-max-devs = <1>; + qcom,swr-num-dev = <1>; + qcom,wsa-devs = <&wsa881x_0214>; + qcom,wsa-aux-dev-prefix = "SpkrLeft"; + qcom,msm_audio_ssr_devs = <&audio_gpr>, <&wcd934x_cdc>; +}; + +&soc { + wcd9xxx_intc: wcd9xxx-irq { + status = "ok"; + compatible = "qcom,wcd9xxx-irq"; + interrupt-controller; + #interrupt-cells = <1>; + interrupt-parent = <&tlmm>; + qcom,gpio-connect = <&tlmm 75 0>; + pinctrl-names = "default"; + pinctrl-0 = <&wcd_intr_default>; + }; + + clock_audio_up: audio_ext_clk_up { + compatible = "qcom,audio-ref-clk"; + qcom,codec-ext-clk-src = ; + qcom,codec-lpass-clk-id = <0x302>; + qcom,codec-lpass-ext-clk-freq = <9600000>; + qcom,use-pinctrl = <1>; + pinctrl-names = "sleep", "active"; + pinctrl-0 = <&i2s_mclk_sleep>; + pinctrl-1 = <&i2s_mclk_active>; + #clock-cells = <1>; + }; + + wcd_rst_gpio: msm_cdc_pinctrl@77 { + compatible = "qcom,msm-cdc-pinctrl"; + qcom,cdc-rst-n-gpio = <&tlmm 77 0>; + pinctrl-names = "aud_active", "aud_sleep"; + pinctrl-0 = <&cdc_reset_active>; + pinctrl-1 = <&cdc_reset_sleep>; + }; +}; + +&i2c_3 { + status = "ok"; + wcd934x_cdc: tavil_codec { + compatible = "qcom,tavil-i2c"; + reg = <0x0d>; + + 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 31>; + + qcom,wcd-rst-gpio-node = <&wcd_rst_gpio>; + + clock-names = "wcd_clk"; + clocks = <&clock_audio_up 0>; + + cdc-vdd-buck-supply = <&pmx75_l6>; + qcom,cdc-vdd-buck-voltage = <1800000 1800000>; + qcom,cdc-vdd-buck-current = <650000>; + + cdc-buck-sido-supply = <&pmx75_l6>; + qcom,cdc-buck-sido-voltage = <1800000 1800000>; + qcom,cdc-buck-sido-current = <250000>; + + cdc-vdd-tx-h-supply = <&pmx75_l6>; + qcom,cdc-vdd-tx-h-voltage = <1800000 1800000>; + qcom,cdc-vdd-tx-h-current = <25000>; + + cdc-vdd-rx-h-supply = <&pmx75_l6>; + qcom,cdc-vdd-rx-h-voltage = <1800000 1800000>; + qcom,cdc-vdd-rx-h-current = <25000>; + + cdc-vddpx-1-supply = <&pmx75_l6>; + qcom,cdc-vddpx-1-voltage = <1800000 1800000>; + qcom,cdc-vddpx-1-current = <10000>; + + qcom,cdc-static-supplies = "cdc-vdd-buck", + "cdc-buck-sido", + "cdc-vdd-tx-h", + "cdc-vdd-rx-h", + "cdc-vddpx-1"; + + qcom,cdc-micbias1-mv = <1800>; + qcom,cdc-micbias2-mv = <1800>; + qcom,cdc-micbias3-mv = <1800>; + qcom,cdc-micbias4-mv = <1800>; + + qcom,cdc-mclk-clk-rate = <9600000>; + qcom,cdc-dmic-sample-rate = <4800000>; + + qcom,wdsp-cmpnt-dev-name = "tavil_codec"; + }; +}; diff --git a/sdxpinn-audio.dtsi b/sdxpinn-audio.dtsi new file mode 100644 index 00000000..7d9098d1 --- /dev/null +++ b/sdxpinn-audio.dtsi @@ -0,0 +1,14 @@ +#include "sdx-audio-lpass.dtsi" + +&soc { + snd_934x: sound-tavil { + compatible = "qcom,sdx-asoc-snd-tavil"; + qcom,model = "sdx-tavil-i2s-snd-card"; + qcom,prim_mi2s_master = <&prim_master>; + }; +}; + +&audio_co_heap { + status = "okay"; + memory-region = <&audio_heap_mem>; +}; diff --git a/sdxpinn-wcd.dtsi b/sdxpinn-wcd.dtsi new file mode 100644 index 00000000..40853ca6 --- /dev/null +++ b/sdxpinn-wcd.dtsi @@ -0,0 +1,68 @@ +&i2c_3 { + tavil_codec { + wcd: wcd_pinctrl@5 { + compatible = "qcom,wcd-pinctrl"; + qcom,gpios-count = <5>; + gpio-controller; + #gpio-cells = <2>; + + spkr_1_wcd_en_active: spkr_1_wcd_en_active { + mux { + pins = "gpio2"; + }; + + config { + pins = "gpio2"; + output-high; + }; + }; + + spkr_1_wcd_en_sleep: spkr_1_wcd_en_sleep { + mux { + pins = "gpio2"; + }; + + config { + pins = "gpio2"; + input-enable; + }; + }; + + spkr_2_wcd_en_active: spkr_2_sd_n_active { + mux { + pins = "gpio3"; + }; + + config { + pins = "gpio3"; + output-high; + }; + }; + + spkr_2_wcd_en_sleep: spkr_2_sd_n_sleep { + mux { + pins = "gpio3"; + }; + + config { + pins = "gpio3"; + input-enable; + }; + }; + }; + + wsa_spkr_wcd_sd1: msm_cdc_pinctrll { + compatible = "qcom,msm-cdc-pinctrl"; + pinctrl-names = "aud_active", "aud_sleep"; + pinctrl-0 = <&spkr_1_wcd_en_active>; + pinctrl-1 = <&spkr_1_wcd_en_sleep>; + }; + + wsa_spkr_wcd_sd2: msm_cdc_pinctrlr { + compatible = "qcom,msm-cdc-pinctrl"; + pinctrl-names = "aud_active", "aud_sleep"; + pinctrl-0 = <&spkr_2_wcd_en_active>; + pinctrl-1 = <&spkr_2_wcd_en_sleep>; + }; + }; +};