devicetree.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Jingyi Wang <jingyi.wang@oss.qualcomm.com>
To: Bjorn Andersson <andersson@kernel.org>,
	Konrad Dybcio <konradybcio@kernel.org>,
	Rob Herring <robh@kernel.org>,
	Krzysztof Kozlowski <krzk+dt@kernel.org>,
	Conor Dooley <conor+dt@kernel.org>
Cc: linux-arm-msm@vger.kernel.org, devicetree@vger.kernel.org,
	linux-kernel@vger.kernel.org, aiqun.yu@oss.qualcomm.com,
	tingwei.zhang@oss.qualcomm.com, trilok.soni@oss.qualcomm.com,
	yijie.yang@oss.qualcomm.com,
	Jingyi Wang <jingyi.wang@oss.qualcomm.com>,
	Prasad Kumpatla <prasad.kumpatla@oss.qualcomm.com>
Subject: [PATCH 18/20] arm64: dts: qcom: kaanapali-mtp: Add audio support (WSA8845, WCD9395, DMIC)
Date: Wed, 24 Sep 2025 17:17:35 -0700	[thread overview]
Message-ID: <20250924-knp-dts-v1-18-3fdbc4b9e1b1@oss.qualcomm.com> (raw)
In-Reply-To: <20250924-knp-dts-v1-0-3fdbc4b9e1b1@oss.qualcomm.com>

From: Prasad Kumpatla <prasad.kumpatla@oss.qualcomm.com>

Add support for audio on the Kaanapali MTP platform by introducing device
tree nodes for WSA8845 smart speaker amplifier for playback, DMIC
microphone for capture, and sound card routing. The WCD9395 codec is add
to supply MIC-BIAS, for enabling onboard microphone capture.

Signed-off-by: Prasad Kumpatla <prasad.kumpatla@oss.qualcomm.com>
Signed-off-by: Jingyi Wang <jingyi.wang@oss.qualcomm.com>
---
 arch/arm64/boot/dts/qcom/kaanapali-mtp.dts | 226 +++++++++++++++++++++++++++++
 1 file changed, 226 insertions(+)

diff --git a/arch/arm64/boot/dts/qcom/kaanapali-mtp.dts b/arch/arm64/boot/dts/qcom/kaanapali-mtp.dts
index 8d1b3278389e..759414b87146 100644
--- a/arch/arm64/boot/dts/qcom/kaanapali-mtp.dts
+++ b/arch/arm64/boot/dts/qcom/kaanapali-mtp.dts
@@ -84,6 +84,87 @@ key-volume-up {
 		};
 	};
 
+	sound {
+		compatible = "qcom,kaanapali-sndcard", "qcom,sm8450-sndcard";
+		model = "Kaanapali-MTP";
+
+		audio-routing = "SpkrLeft IN", "WSA_SPK1 OUT",
+				"SpkrRight IN", "WSA_SPK2 OUT",
+				"IN1_HPHL", "HPHL_OUT",
+				"IN2_HPHR", "HPHR_OUT",
+				"AMIC2", "MIC BIAS2",
+				"VA DMIC0", "MIC BIAS1",
+				"VA DMIC1", "MIC BIAS1",
+				"VA DMIC2", "MIC BIAS3",
+				"VA DMIC3", "MIC BIAS3",
+				"TX SWR_INPUT1", "ADC2_OUTPUT";
+
+		wcd-playback-dai-link {
+			link-name = "WCD Playback";
+
+			codec {
+				sound-dai = <&wcd939x 0>, <&swr1 0>, <&lpass_rxmacro 0>;
+			};
+
+			cpu {
+				sound-dai = <&q6apmbedai RX_CODEC_DMA_RX_0>;
+			};
+
+			platform {
+				sound-dai = <&q6apm>;
+			};
+		};
+
+		wcd-capture-dai-link {
+			link-name = "WCD Capture";
+
+			codec {
+				sound-dai = <&wcd939x 1>, <&swr2 0>, <&lpass_txmacro 0>;
+			};
+
+			cpu {
+				sound-dai = <&q6apmbedai TX_CODEC_DMA_TX_3>;
+			};
+
+			platform {
+				sound-dai = <&q6apm>;
+			};
+		};
+
+		wsa-dai-link {
+			link-name = "WSA Playback";
+
+			codec {
+				sound-dai = <&north_spkr>, <&south_spkr>, <&swr0 0>,
+					    <&lpass_wsamacro 0>;
+			};
+
+			cpu {
+				sound-dai = <&q6apmbedai WSA_CODEC_DMA_RX_0>;
+			};
+
+			platform {
+				sound-dai = <&q6apm>;
+			};
+		};
+
+		va-dai-link {
+			link-name = "VA Capture";
+
+			codec {
+				sound-dai = <&lpass_vamacro 0>;
+			};
+
+			cpu {
+				sound-dai = <&q6apmbedai VA_CODEC_DMA_TX_0>;
+			};
+
+			platform {
+				sound-dai = <&q6apm>;
+			};
+		};
+	};
+
 	thermal-zones {
 		pmh0101-thermal {
 			polling-delay-passive = <100>;
@@ -304,6 +385,34 @@ trip1 {
 		};
 	};
 
+	wcd939x: audio-codec {
+		compatible = "qcom,wcd9395-codec", "qcom,wcd9390-codec";
+
+		pinctrl-0 = <&wcd_default>;
+		pinctrl-names = "default";
+
+		qcom,micbias1-microvolt = <1800000>;
+		qcom,micbias2-microvolt = <1800000>;
+		qcom,micbias3-microvolt = <1800000>;
+		qcom,micbias4-microvolt = <1800000>;
+		qcom,mbhc-buttons-vthreshold-microvolt = <75000 150000 237000 500000
+							  500000 500000 500000 500000>;
+		qcom,mbhc-headset-vthreshold-microvolt = <1700000>;
+		qcom,mbhc-headphone-vthreshold-microvolt = <50000>;
+		qcom,rx-device = <&wcd_rx>;
+		qcom,tx-device = <&wcd_tx>;
+
+		reset-gpios = <&tlmm 161 GPIO_ACTIVE_LOW>;
+
+		vdd-buck-supply = <&vreg_l15b_1p8>;
+		vdd-rxtx-supply = <&vreg_l15b_1p8>;
+		vdd-io-supply = <&vreg_l15b_1p8>;
+		vdd-mic-bias-supply = <&vreg_bob1>;
+		vdd-px-supply = <&vreg_l1g_1p2>;
+
+		#sound-dai-cells = <1>;
+	};
+
 	wcn7850-pmu {
 		compatible = "qcom,wcn7850-pmu";
 
@@ -987,6 +1096,14 @@ vreg_l7n_3p3: ldo7 {
 	};
 };
 
+&lpass_vamacro {
+	pinctrl-0 = <&dmic01_default>, <&dmic23_default>;
+	pinctrl-names = "default";
+
+	vdd-micb-supply = <&vreg_l10b_1p8>;
+	qcom,dmic-sample-rate = <4800000>;
+};
+
 &pmh0110_d_e0 {
 	status = "okay";
 };
@@ -1164,6 +1281,94 @@ led@3 {
 	};
 };
 
+&swr0 {
+	status = "okay";
+
+	/* WSA8845, Speaker North */
+	north_spkr: speaker@0,0 {
+		compatible = "sdw20217020400";
+		reg = <0 0>;
+		pinctrl-0 = <&spkr_0_sd_n_active>;
+		pinctrl-names = "default";
+		powerdown-gpios = <&tlmm 76 GPIO_ACTIVE_LOW>;
+		#sound-dai-cells = <0>;
+		sound-name-prefix = "SpkrLeft";
+		vdd-1p8-supply = <&vreg_l15b_1p8>;
+		vdd-io-supply = <&vreg_l2i_1p2>;
+
+		/*
+		 * WSA8845 Port 1 (DAC)     <=> SWR0 Port 1 (SPKR_L)
+		 * WSA8845 Port 2 (COMP)    <=> SWR0 Port 2 (SPKR_L_COMP)
+		 * WSA8845 Port 3 (BOOST)   <=> SWR0 Port 3 (SPKR_L_BOOST)
+		 * WSA8845 Port 4 (PBR)     <=> SWR0 Port 7 (PBR)
+		 * WSA8845 Port 5 (VISENSE) <=> SWR0 Port 10 (SPKR_L_VI)
+		 * WSA8845 Port 6 (CPS)     <=> SWR0 Port 13 (CPS)
+		 */
+		qcom,port-mapping = <1 2 3 7 10 13>;
+	};
+
+	/* WSA8845, Speaker South */
+	south_spkr: speaker@0,1 {
+		compatible = "sdw20217020400";
+		reg = <0 1>;
+		pinctrl-0 = <&spkr_1_sd_n_active>;
+		pinctrl-names = "default";
+		powerdown-gpios = <&tlmm 77 GPIO_ACTIVE_LOW>;
+		#sound-dai-cells = <0>;
+		sound-name-prefix = "SpkrRight";
+		vdd-1p8-supply = <&vreg_l15b_1p8>;
+		vdd-io-supply = <&vreg_l2i_1p2>;
+
+		/*
+		 * WSA8845 Port 1 (DAC)     <=> SWR0 Port 4 (SPKR_R)
+		 * WSA8845 Port 2 (COMP)    <=> SWR0 Port 5 (SPKR_R_COMP)
+		 * WSA8845 Port 3 (BOOST)   <=> SWR0 Port 6 (SPKR_R_BOOST)
+		 * WSA8845 Port 4 (PBR)     <=> SWR0 Port 7 (PBR)
+		 * WSA8845 Port 5 (VISENSE) <=> SWR0 Port 11 (SPKR_R_VI)
+		 * WSA8845 Port 6 (CPS)     <=> SWR0 Port 13 (CPS)
+		 */
+		qcom,port-mapping = <4 5 6 7 11 13>;
+	};
+};
+
+&swr1 {
+	status = "okay";
+
+	/* WCD9395 RX */
+	wcd_rx: codec@0,4 {
+		compatible = "sdw20217010e00";
+		reg = <0 4>;
+
+		/*
+		 * WCD9395 RX Port 1 (HPH_L/R)      <=> SWR1 Port 1 (HPH_L/R)
+		 * WCD9395 RX Port 2 (CLSH)         <=> SWR1 Port 2 (CLSH)
+		 * WCD9395 RX Port 3 (COMP_L/R)     <=> SWR1 Port 3 (COMP_L/R)
+		 * WCD9395 RX Port 4 (LO)           <=> SWR1 Port 4 (LO)
+		 * WCD9395 RX Port 5 (DSD_L/R)      <=> SWR1 Port 5 (DSD_L/R)
+		 * WCD9395 RX Port 6 (HIFI_PCM_L/R) <=> SWR1 Port 9 (HIFI_PCM_L/R)
+		 */
+		qcom,rx-port-mapping = <1 2 3 4 5 9>;
+	};
+};
+
+&swr2 {
+	status = "okay";
+
+	/* WCD9395 TX */
+	wcd_tx: codec@0,3 {
+		compatible = "sdw20217010e00";
+		reg = <0 3>;
+
+		/*
+		 * WCD9395 TX Port 1 (ADC1,2,3,4)         <=> SWR2 Port 2 (TX SWR_INPUT 0,1,2,3)
+		 * WCD9395 TX Port 2 (ADC3,4 & DMIC0,1)   <=> SWR2 Port 2 (TX SWR_INPUT 0,1,2,3)
+		 * WCD9395 TX Port 3 (DMIC0,1,2,3 & MBHC) <=> SWR2 Port 3 (TX SWR_INPUT 4,5,6,7)
+		 * WCD9395 TX Port 4 (DMIC4,5,6,7)        <=> SWR2 Port 4 (TX SWR_INPUT 8,9,10,11)
+		 */
+		qcom,tx-port-mapping = <2 2 3 4>;
+	};
+};
+
 &tlmm {
 	wlan_en: wlan-en-state {
 		pins = "gpio16";
@@ -1178,6 +1383,20 @@ sw_ctrl_default: sw-ctrl-default-state {
 		bias-pull-down;
 	};
 
+	spkr_0_sd_n_active: spkr-0-sd-n-active-state {
+		pins = "gpio76";
+		function = "gpio";
+		drive-strength = <16>;
+		bias-disable;
+	};
+
+	spkr_1_sd_n_active: spkr-1-sd-n-active-state {
+		pins = "gpio77";
+		function = "gpio";
+		drive-strength = <16>;
+		bias-disable;
+	};
+
 	key_vol_up_default: key-vol-up-default-state {
 		pins = "gpio101";
 		function = "gpio";
@@ -1207,6 +1426,13 @@ wake-n-pins {
 			bias-pull-up;
 		};
 	};
+
+	wcd_default: wcd-reset-n-active-state {
+		pins = "gpio161";
+		function = "gpio";
+		drive-strength = <16>;
+		bias-disable;
+	};
 };
 
 &pcie0 {

-- 
2.25.1


  parent reply	other threads:[~2025-09-25  0:17 UTC|newest]

Thread overview: 135+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2025-09-25  0:17 [PATCH 00/20] arm64: dts: qcom: Introduce Kaanapali platform device tree Jingyi Wang
2025-09-25  0:17 ` [PATCH 01/20] dt-bindings: arm: qcom: Document Kaanapali SoC and its reference boards Jingyi Wang
2025-10-06  9:54   ` Krzysztof Kozlowski
2025-10-06 10:24     ` Krzysztof Kozlowski
2025-10-14  5:13       ` Jingyi Wang
2025-09-25  0:17 ` [PATCH 02/20] arm64: dts: qcom: Introduce Kaanapali SoC Jingyi Wang
2025-09-25  3:22   ` Dmitry Baryshkov
2025-10-14 16:43     ` Taniya Das
2025-10-14 11:46   ` Akhil P Oommen
2025-11-04  9:04     ` Jingyi Wang
2025-11-04 12:54       ` Konrad Dybcio
2025-11-05  7:30         ` Jingyi Wang
2025-11-05 10:13           ` Konrad Dybcio
2025-11-20  6:53   ` Komal Bajaj
2025-11-20  7:22     ` Jingyi Wang
2025-09-25  0:17 ` [PATCH 03/20] arm64: dts: qcom: kaanapali: Add base MTP board Jingyi Wang
2025-09-25  3:18   ` Dmitry Baryshkov
2025-09-25  7:17     ` Aiqun(Maria) Yu
2025-09-25  9:44   ` Konrad Dybcio
2025-09-25  0:17 ` [PATCH 04/20] arm64: dts: qcom: kaanapali: Add support for PCIe0 on Kaanapali Jingyi Wang
2025-09-25 10:56   ` Konrad Dybcio
2025-10-06 14:23   ` Krzysztof Kozlowski
2025-10-07  1:24     ` Dmitry Baryshkov
2025-10-07  1:46       ` Krzysztof Kozlowski
2025-10-08 19:04         ` Dmitry Baryshkov
2025-09-25  0:17 ` [PATCH 05/20] arm64: dts: qcom: kaanapali: Add SDC2 nodes for Kaanapali soc Jingyi Wang
2025-09-25  0:17 ` [PATCH 06/20] arm64: dts: qcom: kaanapali: Add USB support for Kaanapali SoC Jingyi Wang
2025-09-25  1:50   ` Krzysztof Kozłowski
2025-09-25  7:39     ` Aiqun(Maria) Yu
2025-09-25  8:24       ` Krzysztof Kozłowski
2025-09-25  8:32       ` Krzysztof Kozlowski
2025-09-25  9:01         ` Krzysztof Kozlowski
2025-09-25 16:49           ` Dmitry Baryshkov
2025-09-25 18:26       ` Trilok Soni
2025-09-26 13:04         ` Konrad Dybcio
2025-09-25 13:57     ` Bjorn Andersson
2025-09-25 14:12       ` Krzysztof Kozlowski
2025-09-25 21:31       ` Rob Herring
2025-09-26 13:21         ` Konrad Dybcio
2025-09-26 14:47           ` Rob Herring
2025-09-29  6:06             ` Aiqun(Maria) Yu
2025-09-29  7:19               ` Dmitry Baryshkov
2025-09-25  3:20   ` Dmitry Baryshkov
2025-09-25  7:49     ` Aiqun(Maria) Yu
2025-09-25  9:46       ` Konrad Dybcio
2025-09-25  0:17 ` [PATCH 07/20] arm64: dts: qcom: kaanapali: Add remoteprocs " Jingyi Wang
2025-09-30 17:24   ` Alexey Klimov
2025-11-04  8:59     ` Jingyi Wang
2025-11-04 10:01       ` Kumari Pallavi
2025-11-04 13:25         ` Alexey Klimov
2025-09-25  0:17 ` [PATCH 08/20] arm64: dts: qcom: Add PMK8850 pmic dtsi Jingyi Wang
2025-09-25 12:20   ` Konrad Dybcio
2025-09-25  0:17 ` [PATCH 09/20] arm64: dts: qcom: Add PMH0101 " Jingyi Wang
2025-09-25 12:20   ` Konrad Dybcio
2025-10-09 13:47     ` Jishnu Prakash
2025-09-25  0:17 ` [PATCH 10/20] arm64: dts: qcom: Add PMH0104 " Jingyi Wang
2025-09-25  7:59   ` Krzysztof Kozlowski
2025-09-25 12:21     ` Konrad Dybcio
2025-09-29  6:51       ` Aiqun(Maria) Yu
2025-09-25  0:17 ` [PATCH 11/20] arm64: dts: qcom: Add PMH0110 " Jingyi Wang
2025-09-25  0:17 ` [PATCH 12/20] arm64: dts: qcom: kaanapali: Add misc features Jingyi Wang
2025-09-25  0:17 ` [PATCH 13/20] arm64: dts: qcom: kaanapali: Add QUPv3 configuration for serial engines Jingyi Wang
2025-09-25 12:28   ` Konrad Dybcio
2025-09-25 13:19     ` Krzysztof Kozlowski
2025-09-29  3:05       ` Jingyi Wang
2025-09-29  5:42     ` Jingyi Wang
2025-09-29  6:41     ` Aiqun(Maria) Yu
2025-09-29 13:11       ` Konstantin Ryabitsev
2025-09-30  2:14         ` Aiqun(Maria) Yu
2025-09-25  0:17 ` [PATCH 14/20] arm64: dts: qcom: kaanapali-mtp: Enable more features Jingyi Wang
2025-09-25  2:09   ` Dmitry Baryshkov
2025-09-25  9:48     ` Konrad Dybcio
2025-09-26  9:11     ` Ronak Raheja
2025-09-26 11:44       ` Konrad Dybcio
2025-09-26 13:46       ` Dmitry Baryshkov
2025-09-29  3:24     ` Jingyi Wang
2025-09-25  8:03   ` Eugen Hristev
2025-10-09 13:54     ` Jishnu Prakash
2025-10-09 14:58       ` Eugen Hristev
2025-10-09 16:28         ` Dmitry Baryshkov
2025-10-10 10:54           ` Jishnu Prakash
2025-10-10 14:02             ` Eugen Hristev
2025-10-13 16:21               ` Kamal Wadhwa
2025-09-25  0:17 ` [PATCH 15/20] arm64: dts: qcom: kaanapali-mtp: Enable modem Jingyi Wang
2025-09-25  2:10   ` Dmitry Baryshkov
2025-09-29  3:28     ` Jingyi Wang
2025-09-25 14:06   ` Bjorn Andersson
2025-09-29  3:29     ` Jingyi Wang
2025-09-25  0:17 ` [PATCH 16/20] arm64: dts: qcom: kaanapali: Add QRD board Jingyi Wang
2025-09-25  2:15   ` Dmitry Baryshkov
2025-09-29  3:29     ` Jingyi Wang
2025-09-25  0:17 ` [PATCH 17/20] arm64: dts: qcom: kaanapali: Add support for audio Jingyi Wang
2025-09-25 12:30   ` Konrad Dybcio
2025-09-25  0:17 ` Jingyi Wang [this message]
2025-09-25 12:30   ` [PATCH 18/20] arm64: dts: qcom: kaanapali-mtp: Add audio support (WSA8845, WCD9395, DMIC) Konrad Dybcio
2025-09-25 13:26   ` Krzysztof Kozlowski
2025-09-30 12:06     ` Prasad Kumpatla
2025-10-06  8:48       ` Krzysztof Kozlowski
2025-10-08 10:20         ` Konrad Dybcio
2025-10-08 10:51           ` Krzysztof Kozlowski
2025-10-08 11:30             ` Konrad Dybcio
2025-10-08 23:50               ` Krzysztof Kozlowski
2025-10-27  9:39                 ` Konrad Dybcio
2025-09-25  0:17 ` [PATCH 19/20] arm64: dts: qcom: kaanapali: Add support for camss Jingyi Wang
2025-09-25  0:17 ` [PATCH 20/20] arm64: dts: qcom: kaanapali: Add iris video node Jingyi Wang
2025-10-07  2:17   ` Krzysztof Kozlowski
2025-10-08  8:30   ` Konrad Dybcio
2025-09-25 14:12 ` [PATCH 00/20] arm64: dts: qcom: Introduce Kaanapali platform device tree Rob Herring (Arm)
2025-09-25 16:51   ` Dmitry Baryshkov
2025-09-30 17:48 ` Alexey Klimov
2025-10-03  9:09   ` Prasad Kumpatla
2025-10-03 16:35     ` Alexey Klimov
2025-10-14  6:09       ` Jingyi Wang
2025-12-02 18:21 ` Pavel Machek
2025-12-02 18:33   ` Konrad Dybcio
2025-12-02 20:56     ` Pavel Machek
2025-12-03 10:34       ` Konrad Dybcio
2025-12-03 16:17         ` Pavel Machek
2025-12-03 17:31   ` Krzysztof Kozlowski
2025-12-03 18:10     ` Pavel Machek
2025-12-03 18:40       ` Krzysztof Kozlowski
2025-12-03 18:41         ` Krzysztof Kozlowski
2025-12-04  9:09           ` Pavel Machek
2025-12-04 10:41             ` Krzysztof Kozlowski
2025-12-04 11:42               ` Pavel Machek
2025-12-04 12:10                 ` Krzysztof Kozlowski
2025-12-04 12:26                   ` Pavel Machek
2025-12-04  9:14         ` Pavel Machek
2025-12-04 10:42           ` Krzysztof Kozlowski
2025-12-04 11:44             ` Pavel Machek
2025-12-04 12:07               ` Krzysztof Kozlowski
2025-12-04  2:41   ` Jingyi Wang
2025-12-04  8:56     ` Pavel Machek
2025-12-04  9:01       ` Krzysztof Kozlowski
2025-12-04  9:06         ` Pavel Machek

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20250924-knp-dts-v1-18-3fdbc4b9e1b1@oss.qualcomm.com \
    --to=jingyi.wang@oss.qualcomm.com \
    --cc=aiqun.yu@oss.qualcomm.com \
    --cc=andersson@kernel.org \
    --cc=conor+dt@kernel.org \
    --cc=devicetree@vger.kernel.org \
    --cc=konradybcio@kernel.org \
    --cc=krzk+dt@kernel.org \
    --cc=linux-arm-msm@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=prasad.kumpatla@oss.qualcomm.com \
    --cc=robh@kernel.org \
    --cc=tingwei.zhang@oss.qualcomm.com \
    --cc=trilok.soni@oss.qualcomm.com \
    --cc=yijie.yang@oss.qualcomm.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).