Re: [PATCH v2 6/7] arm64: dts: qcom: qcm6490-idp: Add WSA8830 speakers and WCD9370 headset codec

From: Prasad Kumpatla
Date: Thu May 08 2025 - 13:01:31 EST




On 4/29/2025 4:31 PM, Konrad Dybcio wrote:
On 4/29/25 11:24 AM, Prasad Kumpatla wrote:
From: Mohammad Rafi Shaik <quic_mohs@xxxxxxxxxxx>

Add nodes for WSA8830 speakers and WCD9370 headset codec
on qcm6490-idp board.

Enable lpass macros along with audio support pin controls.

Signed-off-by: Mohammad Rafi Shaik <quic_mohs@xxxxxxxxxxx>
Co-developed-by: Prasad Kumpatla <quic_pkumpatl@xxxxxxxxxxx>
Signed-off-by: Prasad Kumpatla <quic_pkumpatl@xxxxxxxxxxx>
---
arch/arm64/boot/dts/qcom/qcm6490-idp.dts | 162 +++++++++++++++++++++++
1 file changed, 162 insertions(+)

diff --git a/arch/arm64/boot/dts/qcom/qcm6490-idp.dts b/arch/arm64/boot/dts/qcom/qcm6490-idp.dts
index 7a155ef6492e..1a59080cbfaf 100644
--- a/arch/arm64/boot/dts/qcom/qcm6490-idp.dts
+++ b/arch/arm64/boot/dts/qcom/qcm6490-idp.dts
@@ -18,6 +18,7 @@
#include "pm7325.dtsi"
#include "pm8350c.dtsi"
#include "pmk8350.dtsi"
+#include "qcs6490-audioreach.dtsi"
/delete-node/ &ipa_fw_mem;
/delete-node/ &rmtfs_mem;
@@ -169,6 +170,30 @@
regulator-min-microvolt = <3700000>;
regulator-max-microvolt = <3700000>;
};
+
+ wcd9370: audio-codec-0 {
+ compatible = "qcom,wcd9370-codec";
+
+ pinctrl-0 = <&wcd_reset_n>;
+ pinctrl-1 = <&wcd_reset_n_sleep>;
+ pinctrl-names = "default", "sleep";

Does audio work for you? For inexplicable reasons, it didn't for me
on rb2 when the sleep state was defined

For Qcm6490-IDP board Audio is working fine, Not sure about rb2, Could you please provide more details about rb2 ?>> +
+ reset-gpios = <&tlmm 83 GPIO_ACTIVE_HIGH>;
+
+ vdd-buck-supply = <&vreg_l17b_1p7>;
+ vdd-rxtx-supply = <&vreg_l18b_1p8>;
+ vdd-px-supply = <&vreg_l18b_1p8>;
+ vdd-mic-bias-supply = <&vreg_bob_3p296>;
+
+ qcom,micbias1-microvolt = <1800000>;
+ qcom,micbias2-microvolt = <1800000>;
+ qcom,micbias3-microvolt = <1800000>;
+
+ qcom,rx-device = <&wcd937x_rx>;
+ qcom,tx-device = <&wcd937x_tx>;
+
+ #sound-dai-cells = <1>;
+ };
};
&apps_rsc {
@@ -536,6 +561,76 @@
firmware-name = "qcom/qcm6490/a660_zap.mbn";
};
+&lpass_dmic01_clk {
+ drive-strength = <8>;
+ bias-disable;
+};
+
+&lpass_dmic01_data {
+ bias-pull-down;

As a testament to these definitions belonging in the soc dtsi, you
added them in the file you included already.

[...]
Ack, Will move to soc dtsi file.>
&tlmm {
gpio-reserved-ranges = <32 2>, /* ADSP */
<48 4>; /* NFC */
@@ -725,6 +868,25 @@
function = "gpio";
bias-pull-up;
};
+
+ sw_ctrl: sw-ctrl-state {
+ pins = "gpio86";
+ function = "gpio";
+ bias-pull-down;
+ };

Again, unused
Ack>
+
+ wcd_reset_n: wcd-reset-n-state {
+ pins = "gpio83";
+ function = "gpio";
+ drive-strength = <8>;

Since the definition is otherwise identical to the sleep state,
you should define the (other) bias type that should be set when
active.

Taken the reference from sc7280, which is working fine.
Link for reference : https://elixir.bootlin.com/linux/v6.15-rc5/source/arch/arm64/boot/dts/qcom/sc7280-idp.dtsi#L841

Will cross check and modify if required.

Thanks,
Prasad> Konrad
> + };
+
+ wcd_reset_n_sleep: wcd-reset-n-sleep-state {
+ pins = "gpio83";
+ function = "gpio";
+ drive-strength = <8>;
+ bias-disable;
+ };
};
&uart5 {