[PATCH v2 6/9] arm64: dts: qcom: shikra-cqm-evk: Enable sound card support

From: Mohammad Rafi Shaik

Date: Thu Sep 10 2026 - 19:20:57 EST


Enable the sound card on the shikra-cqm-evk platform, including
the PM4125 (Rouleur) headset codec, WSA885x external speaker path,
and QAIF backend links.

Also enable the required LPASS macro and SoundWire nodes, along with
the necessary pinctrl configurations for DMIC and I2S interfaces.

Signed-off-by: Mohammad Rafi Shaik <mohammad.rafi.shaik@xxxxxxxxxxxxxxxx>
---
arch/arm64/boot/dts/qcom/shikra-cqm-evk.dts | 185 +++++++++++++++++++
arch/arm64/boot/dts/qcom/shikra-cqm-som.dtsi | 5 +
2 files changed, 190 insertions(+)

diff --git a/arch/arm64/boot/dts/qcom/shikra-cqm-evk.dts b/arch/arm64/boot/dts/qcom/shikra-cqm-evk.dts
index 6b963df6f1eb..a66608d75309 100644
--- a/arch/arm64/boot/dts/qcom/shikra-cqm-evk.dts
+++ b/arch/arm64/boot/dts/qcom/shikra-cqm-evk.dts
@@ -21,6 +21,110 @@ aliases {
chosen {
stdout-path = "serial0:115200n8";
};
+
+ sound: sound {
+ compatible = "qcom,shikra-cqm-sndcard";
+ model = "shikra-cqm-evk";
+
+ audio-routing = "IN1_HPHL", "HPHL_OUT",
+ "IN2_HPHR", "HPHR_OUT",
+ "AMIC1", "MIC BIAS1",
+ "AMIC2", "MIC BIAS2",
+ "AMIC3", "MIC BIAS3",
+ "VA SWR_INPUT0", "ADC1_OUTPUT",
+ "VA SWR_INPUT1", "ADC2_OUTPUT",
+ "VA DMIC0", "vdd-micb",
+ "VA DMIC1", "vdd-micb",
+ "VA DMIC2", "vdd-micb",
+ "VA DMIC3", "vdd-micb";
+
+ pinctrl-0 = <&i2s2_default>, <&dmic_eldo_en_default>;
+ pinctrl-names = "default";
+
+ headset-capture-dai-link {
+ link-name = "Headphones Capture";
+
+ codec {
+ sound-dai = <&pmic4125_codec 1>,
+ <&swr1 0>,
+ <&vamacro 0>;
+ };
+
+ cpu {
+ sound-dai = <&qaif_cpu VA_CODEC_DMA_TX_1>;
+ };
+ };
+
+ headset-playback-dai-link {
+ link-name = "Headphones Playback";
+
+ codec {
+ sound-dai = <&pmic4125_codec 0>,
+ <&swr0 0>,
+ <&rxmacro 0>;
+ };
+
+ cpu {
+ sound-dai = <&qaif_cpu RX_CODEC_DMA_RX_1>;
+ };
+ };
+
+ wsa-speaker-dai-link {
+ link-name = "WSA Speaker Playback";
+
+ codec {
+ sound-dai = <&wsa8855>;
+ dai-tdm-slot-num = <2>;
+ dai-tdm-slot-width = <32>;
+ dai-tdm-slot-rx-mask = <1 1>;
+ };
+
+ cpu {
+ sound-dai = <&qaif_cpu AIF_TDM_RX_2>;
+ dai-tdm-slot-num = <2>;
+ dai-tdm-slot-width = <32>;
+ dai-tdm-slot-rx-mask = <1 1>;
+ dai-tdm-slot-tx-mask = <1 1>;
+ };
+ };
+
+ va-dmic-dai-link {
+ link-name = "VA DMIC Capture";
+
+ codec {
+ sound-dai = <&vamacro 0>;
+ };
+
+ cpu {
+ sound-dai = <&qaif_cpu VA_CODEC_DMA_TX_0>;
+ };
+ };
+ };
+};
+
+&gpr {
+ status = "disabled";
+};
+
+&i2c3 {
+ status = "okay";
+
+ wsa8855: speaker@c {
+ compatible = "qcom,wsa8855";
+ reg = <0x0c>;
+
+ pinctrl-0 = <&wsa8855_spkr_sd_n>;
+ pinctrl-names = "default";
+
+ powerdown-gpios = <&tlmm 2 GPIO_ACTIVE_LOW>;
+ interrupt-parent = <&tlmm>;
+ interrupts = <77 IRQ_TYPE_EDGE_FALLING>;
+ vdd-1p8-supply = <&pm4125_l15>;
+ vdd-io-supply = <&pm4125_l15>;
+ qcom,battery-config = "1s";
+
+ #sound-dai-cells = <0>;
+ };
};

&remoteproc_cdsp {
@@ -42,6 +146,10 @@ &remoteproc_mpss {
status = "okay";
};

+&rxmacro {
+ status = "okay";
+};
+
&audiocorecc {
status = "okay";
};
@@ -61,3 +169,80 @@ &sdhc_1 {

status = "okay";
};
+
+&spmi_bus {
+ pmic@0 {
+ pmic4125_codec: audio-codec@f000 {
+ compatible = "qcom,pm4125-codec";
+ reg = <0xf000>;
+ vdd-io-supply = <&pm4125_l15>;
+ vdd-cp-supply = <&pm4125_s1>;
+ vdd-pa-vpos-supply = <&pm4125_s1>;
+
+ vdd-mic-bias-supply = <&pm4125_l22>;
+ qcom,micbias1-microvolt = <1800000>;
+ qcom,micbias2-microvolt = <1800000>;
+ qcom,micbias3-microvolt = <1800000>;
+
+ qcom,rx-device = <&pm4125_rx>;
+ qcom,tx-device = <&pm4125_tx>;
+ #sound-dai-cells = <1>;
+
+ status = "okay";
+ };
+ };
+};
+
+&swr0 {
+ status = "okay";
+
+ pm4125_rx: codec@0,4 {
+ compatible = "sdw20217010c00";
+ reg = <0 4>;
+ qcom,rx-port-mapping = <1 2 3 4 5>;
+ };
+};
+
+&swr1 {
+ status = "okay";
+
+ pm4125_tx: codec@0,3 {
+ compatible = "sdw20217010c00";
+ reg = <0 3>;
+ qcom,tx-port-mapping = <2 3>;
+ };
+};
+
+&tlmm {
+ dmic_eldo_en_default: dmic-eldo-default-active-state {
+ pins = "gpio71";
+ function = "gpio";
+ drive-strength = <8>;
+ bias-disable;
+ output-high;
+ };
+
+ i2s2_default: i2s2-default-active-state {
+ pins = "gpio100", "gpio101", "gpio102", "gpio103";
+ function = "i2s2";
+ drive-strength = <8>;
+ output-high;
+ bias-disable;
+ };
+
+ wsa8855_spkr_sd_n: wsa8855-spkr-sd-n-active-state {
+ pins = "gpio2";
+ function = "gpio";
+ input-disable;
+ output-enable;
+ };
+};
+
+&vamacro {
+ pinctrl-0 = <&dmic01_default>, <&dmic23_default>, <&tx_swr_active>;
+ pinctrl-names = "default";
+
+ qcom,dmic-sample-rate = <4800000>;
+ status = "okay";
+};
+
diff --git a/arch/arm64/boot/dts/qcom/shikra-cqm-som.dtsi b/arch/arm64/boot/dts/qcom/shikra-cqm-som.dtsi
index fde7fc035bf5..a48143ca5ef5 100644
--- a/arch/arm64/boot/dts/qcom/shikra-cqm-som.dtsi
+++ b/arch/arm64/boot/dts/qcom/shikra-cqm-som.dtsi
@@ -93,6 +93,11 @@ &rpm_requests {
regulators {
compatible = "qcom,rpm-pm2250-regulators";

+ pm4125_s1: s1 {
+ regulator-min-microvolt = <1396000>;
+ regulator-max-microvolt = <1396000>;
+ };
+
pm4125_s2: s2 {
regulator-min-microvolt = <1000000>;
regulator-max-microvolt = <1200000>;
--
2.34.1