[PATCH v3 5/8] arm64: dts: qcom: shikra-cqm-evk: Enable sound card support

From: Mohammad Rafi Shaik

Date: Thu Sep 17 2026 - 00:41:43 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 | 199 +++++++++++++++++++++++++++
arch/arm64/boot/dts/qcom/shikra-cqm-som.dtsi | 5 +
2 files changed, 204 insertions(+)

diff --git a/arch/arm64/boot/dts/qcom/shikra-cqm-evk.dts b/arch/arm64/boot/dts/qcom/shikra-cqm-evk.dts
index 079a1636cb6a..9da58ab4e7a8 100644
--- a/arch/arm64/boot/dts/qcom/shikra-cqm-evk.dts
+++ b/arch/arm64/boot/dts/qcom/shikra-cqm-evk.dts
@@ -21,12 +21,116 @@ 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_ADC0", "ADC1_OUTPUT",
+ "VA SWR_ADC1", "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>;
+ };
+ };
+ };
};

&audiocorecc {
status = "okay";
};

+&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>;
+ };
+};
+
&pm4125_hs_in {
remote-endpoint = <&usb_1_dwc3_hs>;
};
@@ -35,6 +139,20 @@ &pm4125_ss_in {
remote-endpoint = <&usb_qmpphy_out>;
};

+&qaif_cpu {
+ status = "okay";
+
+ aif@b5 {
+ reg = <AIF_TDM_RX_2>;
+ dai-format = "dsp_a";
+ dai-tdm-slot-width = <32>;
+ dai-tdm-slot-num = <2>;
+ dai-tdm-slot-rx-mask = <1 1>;
+ dai-tdm-slot-tx-mask = <1 1>;
+ qcom,qaif-aif-lane-map = <1 0>;
+ };
+};
+
&remoteproc_cdsp {
firmware-name = "qcom/shikra/cdsp.mbn";

@@ -54,6 +172,10 @@ &remoteproc_mpss {
status = "okay";
};

+&rxmacro {
+ status = "okay";
+};
+
&sdhc_1 {
vmmc-supply = <&pm4125_l20>;
vqmmc-supply = <&pm4125_l14>;
@@ -104,3 +226,80 @@ &usb_2_hsphy {

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>;
+ 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 541ba278bb2e..1b8cc52f88a5 100644
--- a/arch/arm64/boot/dts/qcom/shikra-cqm-som.dtsi
+++ b/arch/arm64/boot/dts/qcom/shikra-cqm-som.dtsi
@@ -134,6 +134,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