[PATCH v1 5/8] arm64: dts: qcom: shikra-cqm-evk: Enable sound card support
From: Mohammad Rafi Shaik
Date: Tue Jun 16 2026 - 16:18:38 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 | 222 +++++++++++++++++++
arch/arm64/boot/dts/qcom/shikra-cqm-som.dtsi | 5 +
2 files changed, 227 insertions(+)
diff --git a/arch/arm64/boot/dts/qcom/shikra-cqm-evk.dts b/arch/arm64/boot/dts/qcom/shikra-cqm-evk.dts
index b88652703fb8..b68d196b9d04 100644
--- a/arch/arm64/boot/dts/qcom/shikra-cqm-evk.dts
+++ b/arch/arm64/boot/dts/qcom/shikra-cqm-evk.dts
@@ -5,6 +5,7 @@
/dts-v1/;
+#include <dt-bindings/sound/qcom,qaif.h>
#include "shikra-cqm-som.dtsi"
#include "shikra-evk.dtsi"
@@ -23,6 +24,74 @@ 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",
+ "AMIC2", "MIC BIAS2",
+ "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 QAIF_CDC_DMA_VA_TX0>;
+ };
+ };
+
+ headset-playback-dai-link {
+ link-name = "Headphones Playback";
+
+ codec {
+ sound-dai = <&pmic4125_codec 0>,
+ <&swr0 0>,
+ <&rxmacro 0>;
+ };
+
+ cpu {
+ sound-dai = <&qaif_cpu QAIF_CDC_DMA_RX0>;
+ };
+ };
+
+ wsa-speaker-dai-link {
+ link-name = "WSA Speaker Playback";
+
+ codec {
+ sound-dai = <&wsa885x_i2c>;
+ };
+
+ cpu {
+ sound-dai = <&qaif_cpu QAIF_MI2S_TDM_AIF2>;
+ };
+ };
+
+ va-dmic-dai-link {
+ link-name = "VA DMIC Capture";
+
+ codec {
+ sound-dai = <&vamacro 0>;
+ };
+
+ cpu {
+ sound-dai = <&qaif_cpu QAIF_CDC_DMA_VA_TX0>;
+ };
+ };
+ };
+
wcn3988-pmu {
compatible = "qcom,wcn3988-pmu";
@@ -60,6 +129,79 @@ vreg_pmu_ch1: ldo4 {
};
};
+&gpr {
+ status = "disabled";
+};
+
+&i2c3 {
+ status = "okay";
+
+ wsa885x_i2c: speaker@c {
+ compatible = "qcom,wsa885x-i2c";
+ reg = <0x0c>;
+
+ pinctrl-names = "default";
+ pinctrl-0 = <&wsa885x_i2c_spkr_sd_n>;
+
+ interrupt-gpios = <&tlmm 77 GPIO_ACTIVE_HIGH>;
+ powerdown-gpios = <&tlmm 2 GPIO_ACTIVE_LOW>;
+ vdd-1p8-supply = <&pm4125_l15>;
+ vdd-io-supply = <&pm4125_l15>;
+ qcom,battery-config = <2>;
+
+ qcom,wsa885x-init-table =
+ <0x8470 0x2
+ 0x8470 0x0
+ 0x8470 0x1
+ 0x0004 0x1
+ 0x8602 0x60
+ 0x8622 0x60
+ 0x8458 0x79
+ 0x810B 0xD9
+ 0x8111 0xD9
+ 0x813C 0x08
+ 0x8102 0x04
+ 0x811C 0x29
+ 0x811D 0x40
+ 0x8129 0x40
+ 0x811A 0x80
+ 0x8126 0x80
+ 0x8103 0x6
+ 0x80CA 0x85
+ 0x80CB 0xE
+ 0x80CC 0xC
+ 0x80D0 0x80
+ 0x80BA 0xC0
+ 0x841C 0x4E
+ 0x8435 0x47
+ 0x86CE 0x09
+ 0x8667 0x34
+ 0x800D 0x08>;
+ #sound-dai-cells = <0>;
+ };
+};
+
+&qaif_cpu {
+ status = "okay";
+ qaif_aif_if2: aif-interface@2 {
+ compatible = "qcom,qaif-tdm-dai";
+ reg = <QAIF_MI2S_TDM_AIF2>;
+ qcom,qaif-aif-sync-mode = <QAIF_AIF_SYNC_MODE_LONG>;
+ qcom,qaif-aif-sync-src = <QAIF_AIF_SYNC_SRC_MASTER>;
+ qcom,qaif-aif-sync-delay = <1>;
+ qcom,qaif-aif-slot-width-rx = <32>;
+ qcom,qaif-aif-slot-width-tx = <32>;
+ qcom,qaif-aif-slot-en-rx-mask = <0x3>;
+ qcom,qaif-aif-slot-en-tx-mask = <0x3>;
+ qcom,qaif-aif-ctrl-data-oe;
+ /* Lane 0: RX (mic); Lane 1: TX (speaker) */
+ qcom,qaif-aif-lane-config = <QAIF_AIF_LANE_ENABLE QAIF_AIF_LANE_DIR_RX>,
+ <QAIF_AIF_LANE_ENABLE QAIF_AIF_LANE_DIR_TX>;
+ /* frame length = slot-width (32) * bits-per-lane (2) = 64 bits */
+ qcom,qaif-aif-bits-per-lane = <2>;
+ };
+};
+
&remoteproc_cdsp {
firmware-name = "qcom/shikra/cdsp.mbn";
@@ -79,6 +221,10 @@ &remoteproc_mpss {
status = "okay";
};
+&rxmacro {
+ status = "okay";
+};
+
&audiocorecc {
status = "okay";
};
@@ -99,6 +245,74 @@ &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 2 3 4>;
+ };
+};
+
+&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;
+ };
+
+ wsa885x_i2c_spkr_sd_n: wsa885x-i2c-spkr-sd-n-active-state {
+ pins = "gpio2";
+ function = "gpio";
+ input-disable;
+ output-enable;
+ };
+};
+
&uart8 {
status = "okay";
@@ -110,6 +324,14 @@ bluetooth {
};
};
+&vamacro {
+ pinctrl-0 = <&dmic01_default>, <&dmic23_default>, <&tx_swr_active>;
+ pinctrl-names = "default";
+
+ qcom,dmic-sample-rate = <4800000>;
+ status = "okay";
+};
+
&wifi {
vdd-0.8-cx-mx-supply = <&pm4125_l7>;
vdd-1.8-xo-supply = <&vreg_pmu_xo>;
diff --git a/arch/arm64/boot/dts/qcom/shikra-cqm-som.dtsi b/arch/arm64/boot/dts/qcom/shikra-cqm-som.dtsi
index dc3861489f64..86b323f2fa58 100644
--- a/arch/arm64/boot/dts/qcom/shikra-cqm-som.dtsi
+++ b/arch/arm64/boot/dts/qcom/shikra-cqm-som.dtsi
@@ -53,6 +53,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