[PATCH v4 3/4] arm64: dts: rockchip: add HDMI RX audio on RK3588

From: Igor Paunovic

Date: Tue Jul 21 2026 - 02:42:36 EST


The Synopsys HDMI RX controller exposes two digital audio interfaces,
one for I2S (0) and one for S/PDIF (1). Add the #sound-dai-cells
property so audio cards can reference them as a codec, as documented
by the snps,dw-hdmi-rx binding.

Add a shared simple-audio-card routing the receiver I2S DAI to
i2s7_8ch, the receive-only I2S interface dedicated to HDMI RX, with
the receiver as bitclock and frame master. The card is named
"RK3588 HDMI-IN", which is what users see in alsamixer and what ALSA
UCM matches on. It mirrors the existing HDMI TX sound cards in this
file and is disabled by default, since not every RK3588 board routes
HDMI RX audio; boards that do only need to flip its status.

Signed-off-by: Igor Paunovic <royalnet026@xxxxxxxxx>
---
Changes in v4 (both suggested by Sebastian Reichel):
- define the whole sound card here as a shared, disabled-by-default
node mirroring the HDMI TX cards, instead of per board
- name the card "RK3588 HDMI-IN": the name is user-visible in
alsamixer and matched by ALSA UCM

New in v3 (as "add #sound-dai-cells to the RK3588 HDMI receiver").
arch/arm64/boot/dts/rockchip/rk3588-extra.dtsi | 18 ++++++++++++++++++
1 file changed, 18 insertions(+)

diff --git a/arch/arm64/boot/dts/rockchip/rk3588-extra.dtsi b/arch/arm64/boot/dts/rockchip/rk3588-extra.dtsi
index a264001..e0dce15 100644
--- a/arch/arm64/boot/dts/rockchip/rk3588-extra.dtsi
+++ b/arch/arm64/boot/dts/rockchip/rk3588-extra.dtsi
@@ -23,6 +23,23 @@
};
};

+ hdmi_receiver_sound: hdmi-receiver-sound {
+ compatible = "simple-audio-card";
+ simple-audio-card,format = "i2s";
+ simple-audio-card,name = "RK3588 HDMI-IN";
+ simple-audio-card,bitclock-master = <&hdmiin_codec>;
+ simple-audio-card,frame-master = <&hdmiin_codec>;
+ status = "disabled";
+
+ hdmiin_codec: simple-audio-card,codec {
+ sound-dai = <&hdmi_receiver 0>;
+ };
+
+ simple-audio-card,cpu {
+ sound-dai = <&i2s7_8ch>;
+ };
+ };
+
reserved-memory {
#address-cells = <2>;
#size-cells = <2>;
@@ -338,6 +355,7 @@
reset-names = "axi", "apb", "ref", "biu";
rockchip,grf = <&sys_grf>;
rockchip,vo1-grf = <&vo1_grf>;
+ #sound-dai-cells = <1>;
status = "disabled";
};

--
2.53.0