From ffb880e514294f7feebc7b74feef072f755a6b34 Mon Sep 17 00:00:00 2001
From: Detlev Casanova <detlev.casanova@collabora.com>
Date: Mon, 1 Apr 2024 16:36:25 -0400
Subject: [PATCH] arm64: dts: rockchip: Add HDMI0 audio output on rock-5b

Use the simple-audio-card driver with the hdmi0 QP node as CODEC and
the i2s5 device as CPU.

Signed-off-by: Detlev Casanova <detlev.casanova@collabora.com>
---
 arch/arm64/boot/dts/rockchip/rk3588-base.dtsi | 18 ++++++++++++++++--
 .../boot/dts/rockchip/rk3588-rock-5b.dts      | 19 +++++++++++++++++++
 2 files changed, 35 insertions(+), 2 deletions(-)

diff --git a/arch/arm64/boot/dts/rockchip/rk3588-base.dtsi b/arch/arm64/boot/dts/rockchip/rk3588-base.dtsi
index a337f3fb8377e..24823621721ed 100644
--- a/arch/arm64/boot/dts/rockchip/rk3588-base.dtsi
+++ b/arch/arm64/boot/dts/rockchip/rk3588-base.dtsi
@@ -1378,8 +1378,21 @@ hdmi0: hdmi@fde80000 {
 			 <&cru CLK_HDMITX0_REF>,
 			 <&cru MCLK_I2S5_8CH_TX>,
 			 <&cru CLK_HDMIHDP0>,
-			 <&cru HCLK_VO1>;
-		clock-names = "pclk", "earc", "ref", "aud", "hdp", "hclk_vo1";
+			 <&cru HCLK_VO1>,
+			 <&cru DCLK_VOP0>,
+			 <&cru DCLK_VOP1>,
+			 <&cru DCLK_VOP2>,
+			 <&cru DCLK_VOP3>;
+		clock-names = "pclk",
+			      "earc",
+			      "ref",
+			      "aud",
+			      "hdp",
+			      "hclk_vo1",
+			      "dclk_vp0",
+			      "dclk_vp1",
+			      "dclk_vp2",
+			      "dclk_vp3";
 		interrupts = <GIC_SPI 169 IRQ_TYPE_LEVEL_HIGH 0>,
 			     <GIC_SPI 170 IRQ_TYPE_LEVEL_HIGH 0>,
 			     <GIC_SPI 171 IRQ_TYPE_LEVEL_HIGH 0>,
@@ -1395,6 +1408,7 @@ hdmi0: hdmi@fde80000 {
 		reset-names = "ref", "hdp";
 		rockchip,grf = <&sys_grf>;
 		rockchip,vo-grf = <&vo1_grf>;
+		#sound-dai-cells = <0>;
 		status = "disabled";
 
 		ports {
diff --git a/arch/arm64/boot/dts/rockchip/rk3588-rock-5b.dts b/arch/arm64/boot/dts/rockchip/rk3588-rock-5b.dts
index d597112f1d5b8..7929a2038950d 100644
--- a/arch/arm64/boot/dts/rockchip/rk3588-rock-5b.dts
+++ b/arch/arm64/boot/dts/rockchip/rk3588-rock-5b.dts
@@ -153,6 +153,21 @@ vcc_1v1_nldo_s3: regulator-vcc-1v1-nldo-s3 {
 		regulator-max-microvolt = <1100000>;
 		vin-supply = <&vcc5v0_sys>;
 	};
+
+	hdmi0-sound {
+		compatible = "simple-audio-card";
+		simple-audio-card,name = "hdmi0";
+		simple-audio-card,format = "i2s";
+		simple-audio-card,mclk-fs = <128>;
+
+		simple-audio-card,cpu {
+			sound-dai = <&i2s5_8ch>;
+		};
+
+		simple-audio-card,codec {
+			sound-dai = <&hdmi0>;
+		};
+	};
 };
 
 &combphy0_ps {
@@ -318,6 +333,10 @@ i2s0_8ch_p0_0: endpoint {
 	};
 };
 
+&i2s5_8ch {
+	status = "okay";
+};
+
 &package_thermal {
 	polling-delay = <1000>;
 
-- 
GitLab