Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 9c197451 authored by Sudheer Papothi's avatar Sudheer Papothi
Browse files

ARM: dts: msm: Add support for WCD934x codec on SDM855 target



Add device tree changes for WCD934x codec on SDM855 target for
audio playback and capture usecases.

Change-Id: I8fe97085ef34dfb0f4bc864f20c94cfe4b21a294
Signed-off-by: default avatarSudheer Papothi <spapothi@codeaurora.org>
parent 4f37b2fb
Loading
Loading
Loading
Loading
+2 −1
Original line number Diff line number Diff line
@@ -1041,7 +1041,8 @@ Example of child node that would have qcom,wdsp-cmpnt-dev-name property
* SDM855 ASoC Machine driver

Required properties:
- compatible : "qcom,sdm855-asoc-snd-pahu-aqt"
- compatible : "qcom,sdm855-asoc-snd-pahu-aqt" for pahu codec and
               "qcom,sdm855-asoc-snd-tavil" for tavil codec.
- qcom,model : The user-visible name of this sound card.
- qcom,pahu-ext-clk-freq : External CLK frequency value for pahu codec
- qcom,audio-routing : A list of the connections between audio components.
+32 −0
Original line number Diff line number Diff line
@@ -42,4 +42,36 @@
			};
		};
	};

	tavil_codec {
		swr_master {
			compatible = "qcom,swr-wcd";
			#address-cells = <2>;
			#size-cells = <0>;

			wsa881x_70211: wsa881x@20170211 {
				compatible = "qcom,wsa881x";
				reg = <0x00 0x20170211>;
				qcom,spkr-sd-n-node = <&wsa_spk_wcd_sd1>;
			};

			wsa881x_70212: wsa881x@20170212 {
				compatible = "qcom,wsa881x";
				reg = <0x00 0x20170212>;
				qcom,spkr-sd-n-node = <&wsa_spk_wcd_sd2>;
			};

			wsa881x_70213: wsa881x@21170213 {
				compatible = "qcom,wsa881x";
				reg = <0x00 0x21170213>;
				qcom,spkr-sd-n-node = <&wsa_spk_wcd_sd1>;
			};

			wsa881x_70214: wsa881x@21170214 {
				compatible = "qcom,wsa881x";
				reg = <0x00 0x21170214>;
				qcom,spkr-sd-n-node = <&wsa_spk_wcd_sd2>;
			};
		};
	};
};
+120 −1
Original line number Diff line number Diff line
@@ -54,6 +54,55 @@
				  "SpkrLeft", "SpkrRight";
};

&snd_934x {
	qcom,audio-routing =
		"AIF4 VI", "MCLK",
		"RX_BIAS", "MCLK",
		"MADINPUT", "MCLK",
		"hifi amp", "LINEOUT1",
		"hifi amp", "LINEOUT2",
		"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",
		"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",
		"SpkrLeft IN", "SPK1 OUT",
		"SpkrRight IN", "SPK2 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,hph-en0-gpio = <&tavil_hph_en0>;
	qcom,hph-en1-gpio = <&tavil_hph_en1>;
	qcom,tavil-mclk-clk-freq = <9600000>;

	asoc-codec = <&stub_codec>, <&ext_disp_audio_codec>;
	asoc-codec-names = "msm-stub-codec.1",
			   "msm-ext-disp-audio-codec-rx";

	qcom,wsa-max-devs = <2>;
	qcom,wsa-devs = <&wsa881x_70211>, <&wsa881x_70212>,
			<&wsa881x_70213>, <&wsa881x_70214>;
	qcom,wsa-aux-dev-prefix = "SpkrLeft", "SpkrRight",
				  "SpkrLeft", "SpkrRight";
};

&soc {
	wcd9xxx_intc: wcd9xxx-irq {
		status = "ok";
@@ -90,7 +139,7 @@
				     "g_glink_audio_data";
	};

	qcom,wcd-dsp-mgr {
	pahu_wdsp: wcd-dsp-mgr@1 {
		compatible = "qcom,wcd-dsp-mgr";
		qcom,wdsp-components = <&wcd9360_cdc 0>,
				       <&wcd_spi_0 1>,
@@ -98,6 +147,14 @@
		qcom,img-filename = "cpe_9360";
	};

	tavil_wdsp: wcd-dsp-mgr@2 {
		compatible = "qcom,wcd-dsp-mgr";
		qcom,wdsp-components = <&wcd934x_cdc 0>,
				       <&tavil_spi_0 1>,
				       <&glink_spi_xprt_wdsp 2>;
		qcom,img-filename = "cpe_9340";
	};

	aqt_rst_gpio: msm_cdc_pinctrl@80 {
		compatible = "qcom,msm-cdc-pinctrl";
		pinctrl-names = "aud_active", "aud_sleep";
@@ -178,6 +235,68 @@
		};

	};

	wcd934x_cdc: tavil_codec {
		compatible = "qcom,tavil-slim-pgd";
		elemental-addr = [00 01 50 02 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 31>;

		qcom,wcd-rst-gpio-node = <&wcd_rst_gpio>;

		clock-names = "wcd_clk";
		clocks = <&clock_audio_lnbb>;

		cdc-vdd-buck-supply = <&pm855_s4>;
		qcom,cdc-vdd-buck-voltage = <1800000 1800000>;
		qcom,cdc-vdd-buck-current = <650000>;

		cdc-buck-sido-supply = <&pm855_s4>;
		qcom,cdc-buck-sido-voltage = <1800000 1800000>;
		qcom,cdc-buck-sido-current = <250000>;

		cdc-vdd-tx-h-supply = <&pm855_s5>;
		qcom,cdc-vdd-tx-h-voltage = <1800000 1800000>;
		qcom,cdc-vdd-tx-h-current = <25000>;

		cdc-vdd-rx-h-supply = <&pm855_s5>;
		qcom,cdc-vdd-rx-h-voltage = <1800000 1800000>;
		qcom,cdc-vdd-rx-h-current = <25000>;

		cdc-vddpx-1-supply = <&pm855_s4>;
		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-slim-ifd = "tavil-slim-ifd";
		qcom,cdc-slim-ifd-elemental-addr = [00 00 50 02 17 02];
		qcom,cdc-dmic-sample-rate = <4800000>;
		qcom,cdc-mad-dmic-rate = <600000>;

		qcom,wdsp-cmpnt-dev-name = "tavil_codec";

		tavil_spi_0: wcd_spi {
			compatible = "qcom,wcd-spi-v2";
			qcom,master-bus-num = <0>;
			qcom,chip-select = <0>;
			qcom,max-frequency = <24000000>;
			qcom,mem-base-addr = <0x100000>;
		};
	};
};

&qupv3_se4_i2c {
+60 −0
Original line number Diff line number Diff line
@@ -89,6 +89,66 @@
				"msm-dai-q6-tdm.36912", "msm-dai-q6-tdm.36913",
				"msm-dai-q6-tdm.36928", "msm-dai-q6-tdm.36929";
	};

	snd_934x: sound-tavil {
		compatible = "qcom,sdm855-asoc-snd-tavil";
		qcom,model = "sdm855-tavil-snd-card";
		qcom,mi2s-audio-intf;
		qcom,auxpcm-audio-intf;
		qcom,msm-mi2s-master = <1>, <1>, <1>, <1>;

		asoc-platform = <&pcm0>, <&pcm1>, <&pcm2>, <&voip>, <&voice>,
				<&loopback>, <&compress>, <&hostless>,
				<&afe>, <&lsm>, <&routing>, <&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-compr-dsp",
				"msm-pcm-dsp-noirq";
		asoc-cpu = <&dai_hdmi>, <&dai_dp>,
				<&dai_mi2s0>, <&dai_mi2s1>,
				<&dai_mi2s2>, <&dai_mi2s3>,
				<&dai_pri_auxpcm>, <&dai_sec_auxpcm>,
				<&dai_tert_auxpcm>, <&dai_quat_auxpcm>,
				<&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>, <&sb_6_rx>,
				<&sb_7_rx>, <&sb_7_tx>, <&sb_8_tx>,
				<&usb_audio_rx>, <&usb_audio_tx>,
				<&dai_pri_tdm_rx_0>, <&dai_pri_tdm_tx_0>,
				<&dai_sec_tdm_rx_0>, <&dai_sec_tdm_tx_0>,
				<&dai_tert_tdm_rx_0>, <&dai_tert_tdm_tx_0>,
				<&dai_quat_tdm_rx_0>, <&dai_quat_tdm_tx_0>;
		asoc-cpu-names = "msm-dai-q6-hdmi.8",  "msm-dai-q6-dp.24608",
				"msm-dai-q6-mi2s.0", "msm-dai-q6-mi2s.1",
				"msm-dai-q6-mi2s.2", "msm-dai-q6-mi2s.3",
				"msm-dai-q6-auxpcm.1", "msm-dai-q6-auxpcm.2",
				"msm-dai-q6-auxpcm.3", "msm-dai-q6-auxpcm.4",
				"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.16396", "msm-dai-q6-dev.16398",
				"msm-dai-q6-dev.16399", "msm-dai-q6-dev.16401",
				"msm-dai-q6-dev.28672", "msm-dai-q6-dev.28673",
				"msm-dai-q6-tdm.36864", "msm-dai-q6-tdm.36865",
				"msm-dai-q6-tdm.36880", "msm-dai-q6-tdm.36881",
				"msm-dai-q6-tdm.36896", "msm-dai-q6-tdm.36897",
				"msm-dai-q6-tdm.36912", "msm-dai-q6-tdm.36913";
	};
};

&slim_aud {
+154 −0
Original line number Diff line number Diff line
@@ -11,6 +11,160 @@
 */

&slim_aud {
	tavil_codec {
		tavil_wcd: wcd_pinctrl@5 {
			compatible = "qcom,wcd-pinctrl";
			qcom,num-gpios = <5>;
			gpio-controller;
			#gpio-cells = <2>;

			us_euro_sw_active: us_euro_sw_wcd_active {
				mux {
					pins = "gpio1";
				};

				config {
					pins = "gpio1";
					output-high;
				};
			};

			us_euro_sw_sleep: us_euro_sw_wcd_sleep {
				mux {
					pins = "gpio1";
				};

				config {
					pins = "gpio1";
					output-low;
				};
			};

			spk_1_wcd_en_active: spkr_1_wcd_en_active {
				mux {
					pins = "gpio2";
				};

				config {
					pins = "gpio2";
					output-high;
				};
			};

			spk_1_wcd_en_sleep: spkr_1_wcd_en_sleep {
				mux {
					pins = "gpio2";
				};

				config {
					pins = "gpio2";
					input-enable;
				};
			};

			spk_2_wcd_en_active: spkr_2_sd_n_active {
				mux {
					pins = "gpio3";
				};

				config {
					pins = "gpio3";
					output-high;
				};
			};

			spk_2_wcd_en_sleep: spkr_2_sd_n_sleep {
				mux {
					pins = "gpio3";
				};

				config {
					pins = "gpio3";
					input-enable;
				};
			};

			hph_en0_wcd_active: hph_en0_wcd_active {
				mux {
					pins = "gpio4";
				};

				config {
					pins = "gpio4";
					output-high;
				};
			};

			hph_en0_wcd_sleep: hph_en0_wcd_sleep {
				mux {
					pins = "gpio4";
				};

				config {
					pins = "gpio4";
					output-low;
				};
			};

			hph_en1_wcd_active: hph_en1_wcd_active {
				mux {
					pins = "gpio5";
				};

				config {
					pins = "gpio5";
					output-high;
				};
			};

			hph_en1_wcd_sleep: hph_en1_wcd_sleep {
				mux {
					pins = "gpio5";
				};

				config {
					pins = "gpio5";
					output-low;
				};
			};
		};

		wsa_spk_wcd_sd1: msm_cdc_pinctrll {
		      compatible = "qcom,msm-cdc-pinctrl";
		      pinctrl-names = "aud_active", "aud_sleep";
		      pinctrl-0 = <&spk_1_wcd_en_active>;
		      pinctrl-1 = <&spk_1_wcd_en_sleep>;
		};

		wsa_spk_wcd_sd2: msm_cdc_pinctrlr {
		      compatible = "qcom,msm-cdc-pinctrl";
		      pinctrl-names = "aud_active", "aud_sleep";
		      pinctrl-0 = <&spk_2_wcd_en_active>;
		      pinctrl-1 = <&spk_2_wcd_en_sleep>;
		};

		tavil_us_euro_switch: msm_cdc_pinctrl_us_euro_sw {
		      compatible = "qcom,msm-cdc-pinctrl";
		      pinctrl-names = "aud_active", "aud_sleep";
		      pinctrl-0 = <&us_euro_sw_active>;
		      pinctrl-1 = <&us_euro_sw_sleep>;
		};

		tavil_hph_en0: msm_cdc_pinctrl_hph_en0 {
		      compatible = "qcom,msm-cdc-pinctrl";
		      pinctrl-names = "aud_active", "aud_sleep";
		      pinctrl-0 = <&hph_en0_wcd_active>;
		      pinctrl-1 = <&hph_en0_wcd_sleep>;
		};

		tavil_hph_en1: msm_cdc_pinctrl_hph_en1 {
		      compatible = "qcom,msm-cdc-pinctrl";
		      pinctrl-names = "aud_active", "aud_sleep";
		      pinctrl-0 = <&hph_en1_wcd_active>;
		      pinctrl-1 = <&hph_en1_wcd_sleep>;
		};
	};

	pahu_codec {
		wcd: wcd_pinctrl {
			compatible = "qcom,wcd-pinctrl";