summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSebastian Reichel <sebastian.reichel@collabora.com>2026-03-16 21:23:01 +0300
committerHeiko Stuebner <heiko@sntech.de>2026-03-25 01:23:21 +0300
commit9f65d1da414fcf201b939145ba36f6815652671e (patch)
tree92d36086bc75ca402a6feaf7625d6aa360243cae
parent0410731663c952035eacaab03c09a1c0fe663561 (diff)
downloadlinux-9f65d1da414fcf201b939145ba36f6815652671e.tar.xz
arm64: dts: rockchip: Add SPDIF nodes to RK3576 device tree
Add support for all six SPDIF transmitters found in the RK3576. The nodes have been taken over from the BSP kernel and checked against the TRM (power domain descriptions from chapter 6.3.2, addresses from "Table 1-1 Address Mapping", interrupt from "Table 1-3 RK3576 Interrupt Connection List" (TRM numbers are off by 32 due to SGI/PPI not being numbered separately). The TRM lacks a proper clock tree, but fortunately are quite obvious for the SPDIF IP. Note, that the RK3576 also has 3 SPDIF receivers, which need their own binding and are not handled in this patch. A typical use case for the SPDIF transmitters is audio support for the Displayport (DP) controller. DP requires inserting PCUV control bits, which requires software support when using I2S. The SPDIF IP can add it automatically and thus is preferred. Signed-off-by: Sebastian Reichel <sebastian.reichel@collabora.com> Link: https://patch.msgid.link/20260316-rk3576-spdif-v1-2-acb75088b560@collabora.com Signed-off-by: Heiko Stuebner <heiko@sntech.de>
-rw-r--r--arch/arm64/boot/dts/rockchip/rk3576.dtsi82
1 files changed, 82 insertions, 0 deletions
diff --git a/arch/arm64/boot/dts/rockchip/rk3576.dtsi b/arch/arm64/boot/dts/rockchip/rk3576.dtsi
index 53ff6bd027af..b03dd69eca3c 100644
--- a/arch/arm64/boot/dts/rockchip/rk3576.dtsi
+++ b/arch/arm64/boot/dts/rockchip/rk3576.dtsi
@@ -1379,6 +1379,19 @@
status = "disabled";
};
+ spdif_tx2: spdif-tx@27d20000 {
+ compatible = "rockchip,rk3576-spdif", "rockchip,rk3568-spdif";
+ reg = <0x0 0x27d20000 0x0 0x1000>;
+ interrupts = <GIC_SPI 197 IRQ_TYPE_LEVEL_HIGH>;
+ clocks = <&cru MCLK_SPDIF_TX2>, <&cru HCLK_SPDIF_TX2>;
+ clock-names = "mclk", "hclk";
+ dmas = <&dmac2 28>;
+ dma-names = "tx";
+ power-domains = <&power RK3576_PD_VO0>;
+ #sound-dai-cells = <0>;
+ status = "disabled";
+ };
+
sai5: sai@27d40000 {
compatible = "rockchip,rk3576-sai";
reg = <0x0 0x27d40000 0x0 0x1000>;
@@ -1511,6 +1524,45 @@
};
};
+ spdif_tx3: spdif-tx@27ea0000 {
+ compatible = "rockchip,rk3576-spdif", "rockchip,rk3568-spdif";
+ reg = <0x0 0x27ea0000 0x0 0x1000>;
+ interrupts = <GIC_SPI 198 IRQ_TYPE_LEVEL_HIGH>;
+ clocks = <&cru MCLK_SPDIF_TX3>, <&cru HCLK_SPDIF_TX3>;
+ clock-names = "mclk", "hclk";
+ dmas = <&dmac2 29>;
+ dma-names = "tx";
+ power-domains = <&power RK3576_PD_VO1>;
+ #sound-dai-cells = <0>;
+ status = "disabled";
+ };
+
+ spdif_tx4: spdif-tx@27eb0000 {
+ compatible = "rockchip,rk3576-spdif", "rockchip,rk3568-spdif";
+ reg = <0x0 0x27eb0000 0x0 0x1000>;
+ interrupts = <GIC_SPI 370 IRQ_TYPE_LEVEL_HIGH>;
+ clocks = <&cru MCLK_SPDIF_TX4>, <&cru HCLK_SPDIF_TX4>;
+ clock-names = "mclk", "hclk";
+ dmas = <&dmac1 6>;
+ dma-names = "tx";
+ power-domains = <&power RK3576_PD_VO1>;
+ #sound-dai-cells = <0>;
+ status = "disabled";
+ };
+
+ spdif_tx5: spdif-tx@27ec0000 {
+ compatible = "rockchip,rk3576-spdif", "rockchip,rk3568-spdif";
+ reg = <0x0 0x27ec0000 0x0 0x1000>;
+ interrupts = <GIC_SPI 371 IRQ_TYPE_LEVEL_HIGH>;
+ clocks = <&cru MCLK_SPDIF_TX5>, <&cru HCLK_SPDIF_TX5>;
+ clock-names = "mclk", "hclk";
+ dmas = <&dmac0 25>;
+ dma-names = "tx";
+ power-domains = <&power RK3576_PD_VO1>;
+ #sound-dai-cells = <0>;
+ status = "disabled";
+ };
+
sai7: sai@27ed0000 {
compatible = "rockchip,rk3576-sai";
reg = <0x0 0x27ed0000 0x0 0x1000>;
@@ -2166,6 +2218,36 @@
status = "disabled";
};
+ spdif_tx0: spdif-tx@2a670000 {
+ compatible = "rockchip,rk3576-spdif", "rockchip,rk3568-spdif";
+ reg = <0x0 0x2a670000 0x0 0x1000>;
+ interrupts = <GIC_SPI 195 IRQ_TYPE_LEVEL_HIGH>;
+ clocks = <&cru MCLK_SPDIF_TX0>, <&cru HCLK_SPDIF_TX0>;
+ clock-names = "mclk", "hclk";
+ dmas = <&dmac0 5>;
+ dma-names = "tx";
+ power-domains = <&power RK3576_PD_AUDIO>;
+ pinctrl-names = "default";
+ pinctrl-0 = <&spdifm0_tx0>;
+ #sound-dai-cells = <0>;
+ status = "disabled";
+ };
+
+ spdif_tx1: spdif-tx@2a680000 {
+ compatible = "rockchip,rk3576-spdif", "rockchip,rk3568-spdif";
+ reg = <0x0 0x2a680000 0x0 0x1000>;
+ interrupts = <GIC_SPI 196 IRQ_TYPE_LEVEL_HIGH>;
+ clocks = <&cru MCLK_SPDIF_TX1>, <&cru HCLK_SPDIF_TX1>;
+ clock-names = "mclk", "hclk";
+ dmas = <&dmac1 5>;
+ dma-names = "tx";
+ power-domains = <&power RK3576_PD_AUDIO>;
+ pinctrl-names = "default";
+ pinctrl-0 = <&spdifm0_tx1>;
+ #sound-dai-cells = <0>;
+ status = "disabled";
+ };
+
gic: interrupt-controller@2a701000 {
compatible = "arm,gic-400";
reg = <0x0 0x2a701000 0 0x10000>,