[PATCH 2/3] arm64: qcom: imola: Move analogix video/audio output to dtso

Riccardo Mereu
2026-04-30T13:21:48Z

From: Riccardo Mereu <r.mereu@arduino.cc>

This is done in order to support different video output over DSI.
Since audio part is linked to Analogix USB-C controller it is moved to
the same DTSO.

Signed-off-by: Riccardo Mereu <r.mereu@arduino.cc>
---
arch/arm64/boot/dts/qcom/Makefile | 5 +
...ola.dts => qrb2210-arduino-imola-base.dts} | 122 +++++++++++++++---
...rb2210-arduino-imola-video_sound-usbc.dtso | 61 +++++++++
3 files changed, 168 insertions(+), 20 deletions(-)
rename arch/arm64/boot/dts/qcom/{qrb2210-arduino-imola.dts => qrb2210-arduino-imola-base.dts} (85%)
create mode 100644 arch/arm64/boot/dts/qcom/qrb2210-arduino-imola-video_sound-usbc.dtso

diff --git a/arch/arm64/boot/dts/qcom/Makefile b/arch/arm64/boot/dts/qcom/Makefile
index 4ba8e7306419..e89a0e77072b 100644
--- a/arch/arm64/boot/dts/qcom/Makefile
+++ b/arch/arm64/boot/dts/qcom/Makefile
@@ -193,6 +193,11 @@ qcs9100-ride-r3-el2-dtbs := qcs9100-ride-r3.dtb lemans-el2.dtbo
dtb-$(CONFIG_ARCH_QCOM) += qcs9100-ride-el2.dtb
dtb-$(CONFIG_ARCH_QCOM) += qcs9100-ride-r3-el2.dtb
dtb-$(CONFIG_ARCH_QCOM) += qdu1000-idp.dtb
+dtb-$(CONFIG_ARCH_QCOM) += qrb2210-arduino-imola-base.dtb
+
+dtb-$(CONFIG_ARCH_QCOM) += qrb2210-arduino-imola-video_sound-usbc.dtbo
+
+qrb2210-arduino-imola-dtbs := qrb2210-arduino-imola-base.dtb qrb2210-arduino-imola-video_sound-usbc.dtbo
dtb-$(CONFIG_ARCH_QCOM) += qrb2210-arduino-imola.dtb
dtb-$(CONFIG_ARCH_QCOM) += qrb2210-rb1.dtb

diff --git a/arch/arm64/boot/dts/qcom/qrb2210-arduino-imola.dts b/arch/arm64/boot/dts/qcom/qrb2210-arduino-imola-base.dts
similarity index 85%
rename from arch/arm64/boot/dts/qcom/qrb2210-arduino-imola.dts
rename to arch/arm64/boot/dts/qcom/qrb2210-arduino-imola-base.dts
index bf088fa9807f..fb22effb9a35 100644
--- a/arch/arm64/boot/dts/qcom/qrb2210-arduino-imola.dts
+++ b/arch/arm64/boot/dts/qcom/qrb2210-arduino-imola-base.dts
@@ -1,6 +1,6 @@
// SPDX-License-Identifier: (GPL-2.0+ OR BSD-3-Clause)
/*
- * Copyright (c) 2025, Arduino SRL
+ * Copyright (c) 2026, Arduino SRL
*/

/dts-v1/;
@@ -110,6 +110,106 @@ multi-led {
leds = <&ledr>, <&ledg>, <&ledb>;
};

+ sound: sound {
+ compatible = "qcom,qrb2210-sndcard";
+ model = "Arduino-Imola-HPH-LOUT";
+ audio-routing = "IN1_HPHL", "HPHL_OUT",
+ "IN2_HPHR", "HPHR_OUT",
+ "AMIC2", "MIC BIAS2";
+
+ 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>;
+ };
+ };
+
+ mm4-dai-link {
+ link-name = "MultiMedia4";
+
+ cpu {
+ sound-dai = <&q6asmdai MSM_FRONTEND_DAI_MULTIMEDIA4>;
+ };
+ };
+
+ hph-playback-dai-link {
+ link-name = "HPH Playback";
+ cpu {
+ sound-dai = <&q6afedai RX_CODEC_DMA_RX_0>;
+ };
+
+ platform {
+ sound-dai = <&q6routing>;
+ };
+
+ codec {
+ sound-dai = <&pmic4125_codec 0>, <&swr1 0>, <&rxmacro 0>;
+ };
+ };
+
+ lo-playback-dai-link {
+ link-name = "LO Playback";
+ cpu {
+ sound-dai = <&q6afedai RX_CODEC_DMA_RX_0>;
+ };
+
+ platform {
+ sound-dai = <&q6routing>;
+ };
+
+ codec {
+ sound-dai = <&pmic4125_codec 0>, <&swr1 0>, <&rxmacro 0>;
+ };
+ };
+
+ ear-playback-dai-link {
+ link-name = "Ear Playback";
+ cpu {
+ sound-dai = <&q6afedai RX_CODEC_DMA_RX_0>;
+ };
+
+ platform {
+ sound-dai = <&q6routing>;
+ };
+
+ codec {
+ sound-dai = <&pmic4125_codec 0>, <&swr1 0>, <&rxmacro 0>;
+ };
+ };
+
+ hph-capture-dai-link {
+ link-name = "HP Capture";
+ cpu {
+ sound-dai = <&q6afedai TX_CODEC_DMA_TX_3>;
+ };
+
+ platform {
+ sound-dai = <&q6routing>;
+ };
+
+ codec {
+ sound-dai = <&pmic4125_codec 1>, <&swr0 0>, <&txmacro 0>;
+ };
+ };
+ };
+
vreg_anx_30: regulator-anx-30 {
compatible = "regulator-fixed";
regulator-name = "anx30";
@@ -165,6 +265,7 @@ anx7625: encoder@58 {
analogix,lane1-swing = /bits/ 8 <0x14 0x54 0x64 0x74>;

pinctrl-0 = <&anx7625_int_pin>, <&anx7625_cable_det_pin>;
+ #sound-dai-cells = <1>;

connector {
compatible = "usb-c-connector";
@@ -198,20 +299,6 @@ anx_ss_in: endpoint {
};
};
};
-
- ports {
- #address-cells = <1>;
- #size-cells = <0>;
-
- port@0 {
- reg = <0>;
-
- anx_dsi0_in: endpoint {
- remote-endpoint = <&mdss_dsi0_out>;
- data-lanes = <0 1 2 3>;
- };
- };
- };
};
};

@@ -225,11 +312,6 @@ &mdss_dsi0 {
status = "okay";
};

-&mdss_dsi0_out {
- remote-endpoint = <&anx_dsi0_in>;
- data-lanes = <0 1 2 3>;
-};
-
&mdss_dsi0_phy {
status = "okay";
};
diff --git a/arch/arm64/boot/dts/qcom/qrb2210-arduino-imola-video_sound-usbc.dtso b/arch/arm64/boot/dts/qcom/qrb2210-arduino-imola-video_sound-usbc.dtso
new file mode 100644
index 000000000000..6fb256498cd1
--- /dev/null
+++ b/arch/arm64/boot/dts/qcom/qrb2210-arduino-imola-video_sound-usbc.dtso
@@ -0,0 +1,61 @@
+// SPDX-License-Identifier: (GPL-2.0+ OR BSD-3-Clause)
+/*
+ * Copyright (c) 2025, Arduino SA
+ */
+
+/dts-v1/;
+/plugin/;
+
+#include <dt-bindings/sound/qcom,q6asm.h>
+#include <dt-bindings/sound/qcom,q6dsp-lpass-ports.h>
+
+&anx7625 {
+ ports {
+ #address-cells = <1>;
+ #size-cells = <0>;
+
+ port@0 {
+ reg = <0>;
+ anx_dsi0_in: endpoint {
+ remote-endpoint = <&mdss_dsi0_out>;
+ data-lanes = <0 1 2 3>;
+ };
+ };
+ };
+};
+
+&mdss_dsi0_out {
+ remote-endpoint = <&anx_dsi0_in>;
+ data-lanes = <0 1 2 3>;
+};
+
+&q6afedai {
+ #address-cells = <1>;
+ #size-cells = <0>;
+ #sound-dai-cells = <1>;
+ dai@18 {
+ reg = <SECONDARY_MI2S_RX>;
+ qcom,sd-lines = <0>;
+ };
+};
+
+&sound {
+ pinctrl-0 = <&lpi_i2s2_active>;
+ pinctrl-names = "default";
+
+ hdmi-i2s-dai-link {
+ link-name = "HDMI/I2S Playback";
+
+ cpu {
+ sound-dai = <&q6afedai SECONDARY_MI2S_RX>;
+ };
+
+ platform {
+ sound-dai = <&q6routing>;
+ };
+
+ codec {
+ sound-dai = <&anx7625 0>;
+ };
+ };
+};
--
2.53.0