[PATCH v3 4/5] arm64: dts: arduino-imola: add support for sound
From: Srinivas Kandagatla
Date: Tue Sep 22 2026 - 18:13:33 EST
Add support for sound on Arduino UNO Q board, which includes
- Headset playback and record.
- Lineout
Signed-off-by: Srinivas Kandagatla <srinivas.kandagatla@xxxxxxxxxxxxxxxx>
---
arch/arm64/boot/dts/qcom/pm4125.dtsi | 7 +
.../boot/dts/qcom/qrb2210-arduino-imola.dts | 134 ++++++++++++++++++
2 files changed, 141 insertions(+)
diff --git a/arch/arm64/boot/dts/qcom/pm4125.dtsi b/arch/arm64/boot/dts/qcom/pm4125.dtsi
index 3dc8d667d091..85da78aec578 100644
--- a/arch/arm64/boot/dts/qcom/pm4125.dtsi
+++ b/arch/arm64/boot/dts/qcom/pm4125.dtsi
@@ -81,6 +81,13 @@ pm4125_gpios: gpio@c000 {
interrupt-controller;
#interrupt-cells = <2>;
};
+
+ pmic4125_codec: audio-codec@f000 {
+ compatible = "qcom,pm4125-codec";
+ reg = <0xf000>;
+ #sound-dai-cells = <1>;
+ status = "disabled";
+ };
};
pmic@1 {
diff --git a/arch/arm64/boot/dts/qcom/qrb2210-arduino-imola.dts b/arch/arm64/boot/dts/qcom/qrb2210-arduino-imola.dts
index c472e13fceca..e99d2a56dc28 100644
--- a/arch/arm64/boot/dts/qcom/qrb2210-arduino-imola.dts
+++ b/arch/arm64/boot/dts/qcom/qrb2210-arduino-imola.dts
@@ -110,6 +110,102 @@ multi-led {
leds = <&ledr>, <&ledg>, <&ledb>;
};
+ sound {
+ compatible = "qcom,qrb2210-sndcard";
+ model = "Arduino-Imola-HPH-LOUT";
+ audio-routing = "IN1_HPHL", "HPHL_OUT",
+ "IN2_HPHR", "HPHR_OUT",
+ "AMIC2", "MIC BIAS2";
+
+ ear-playback-dai-link {
+ link-name = "Ear Out Playback";
+
+ codec {
+ sound-dai = <&pmic4125_codec 0>, <&swr1 0>, <&rxmacro 0>;
+ };
+
+ cpu {
+ sound-dai = <&q6afedai RX_CODEC_DMA_RX_0>;
+ };
+
+ platform {
+ sound-dai = <&q6routing>;
+ };
+ };
+
+ hph-capture-dai-link {
+ link-name = "Headphones Capture";
+
+ codec {
+ sound-dai = <&pmic4125_codec 1>, <&swr0 0>, <&txmacro 0>;
+ };
+
+ cpu {
+ sound-dai = <&q6afedai TX_CODEC_DMA_TX_3>;
+ };
+
+ platform {
+ sound-dai = <&q6routing>;
+ };
+ };
+
+ hph-playback-dai-link {
+ link-name = "Headphones Playback";
+
+ codec {
+ sound-dai = <&pmic4125_codec 0>, <&swr1 0>, <&rxmacro 0>;
+ };
+
+ cpu {
+ sound-dai = <&q6afedai RX_CODEC_DMA_RX_0>;
+ };
+
+ platform {
+ sound-dai = <&q6routing>;
+ };
+ };
+
+ lo-playback-dai-link {
+ link-name = "Line Out Playback";
+
+ codec {
+ sound-dai = <&pmic4125_codec 0>, <&swr1 0>, <&rxmacro 0>;
+ };
+
+ cpu {
+ sound-dai = <&q6afedai RX_CODEC_DMA_RX_0>;
+ };
+
+ platform {
+ sound-dai = <&q6routing>;
+ };
+ };
+
+ mm1-dai-link {
+ link-name = "MultiMedia1";
+
+ cpu {
+ sound-dai = <&q6asmdai MSM_FRONTEND_DAI_MULTIMEDIA1>;
+ };
+ };
+
+ mm2-dai-link {
+ link-name = "MultiMedia2";
+
+ cpu {
+ sound-dai = <&q6asmdai MSM_FRONTEND_DAI_MULTIMEDIA2>;
+ };
+ };
+
+ mm3-dai-link {
+ link-name = "MultiMedia3";
+
+ cpu {
+ sound-dai = <&q6asmdai MSM_FRONTEND_DAI_MULTIMEDIA3>;
+ };
+ };
+ };
+
vreg_anx_30: regulator-anx-30 {
compatible = "regulator-fixed";
regulator-name = "anx30";
@@ -421,6 +517,44 @@ mcu@0 {
};
};
+&pmic4125_codec {
+ vdd-io-supply = <&pm4125_l15>;
+ vdd-cp-supply = <&pm4125_s4>;
+ vdd-pa-vpos-supply = <&pm4125_s4>;
+ 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>;
+
+ status = "okay";
+};
+
+&swr0 {
+ pinctrl-0 = <&lpass_tx_swr_active>;
+ pinctrl-names = "default";
+
+ pm4125_tx: codec@0,3 {
+ compatible = "sdw20217010c00";
+ reg = <0 3>;
+ qcom,tx-port-mapping = <1 1 2 3>;
+ };
+};
+
+&swr1 {
+ pinctrl-0 = <&lpass_rx_swr_active>;
+ pinctrl-names = "default";
+
+ pm4125_rx: codec@0,4 {
+ compatible = "sdw20217010c00";
+ reg = <0 4>;
+ qcom,rx-port-mapping = <1 2 3 4 5>;
+ };
+};
+
&tlmm {
jmisc_gpio18: jmisc-gpio18-state {
pins = "gpio18";
--
2.53.0