Re: [PATCH] arm64: dts: rockchip: add HDMI sound node for rk3328-rock64

From: Katsuhiro Suzuki
Date: Mon Feb 04 2019 - 07:59:56 EST


Hello Heiko,

On 2019/02/03 18:06, Heiko Stuebner wrote:
Am Samstag, 2. Februar 2019, 05:34:44 CET schrieb Katsuhiro Suzuki:
This patch adds HDMI sound (I2S0) node and remove dma properties
from UART2 node for rock64.

The DMAC of rk3328 can use 8 channels at same time. Currently, total
7 channels are used as follows:
- I2S1 2ch
- UART2 2ch
- SPDIF 1ch
- SPI0 2ch

HDMI audio using I2S0 that requires 2ch but DMAC has only 1 channel.

UART2 can work without DMA resources, so this patch removes dma
allocation for UART2 and reuses it to I2S0.

I don't follow that description. How can i2s0 re-use the uart2 dma channels?
Looking at the dma table in the TRM, uart2 has channels 6+7 while i2s0
uses channels 11+12. They should just run concurrently?


Sorry for confusing... 6 or 7 is as ID number of slave DMA channel.
TRM calls it 'Req number'. Req number 6+7 and 11+12 can work
concurrently but TRM says DMAC can transfer 8 DMA channels at same
time. So all 16 Req numbers cannot activate at same time. It should
be keep less or equal than 8 numbers.

For details, DMAC of RK3328 is ARM PL330 (or compatible IP).
- Local variable 'chan_id' of of_dma_pl330_xlate() is Req number.
This is from Device-Tree info.
- Array 'channels' of struct pl330_dmac is DMA channels of DMAC.
pl330_request_channel() allocate DMA channel that is requested from
other drivers. Local variable 'chans' has max channels can run
concurrently.

Current setting:
channels chan_id
0 8
1 9
2 14
3 15
4 10
5 6
6 7
7 (not used)

Best Regards,
Katsuhiro Suzuki



Signed-off-by: Katsuhiro Suzuki <katsuhiro@xxxxxxxxxxxxx>
---
.../arm64/boot/dts/rockchip/rk3328-rock64.dts | 24 ++++++++++++++++++-
arch/arm64/boot/dts/rockchip/rk3328.dtsi | 1 +
2 files changed, 24 insertions(+), 1 deletion(-)

diff --git a/arch/arm64/boot/dts/rockchip/rk3328-rock64.dts b/arch/arm64/boot/dts/rockchip/rk3328-rock64.dts
index 2157a528276b..e21645aa3fa5 100644
--- a/arch/arm64/boot/dts/rockchip/rk3328-rock64.dts
+++ b/arch/arm64/boot/dts/rockchip/rk3328-rock64.dts
@@ -68,7 +68,8 @@
sound {
compatible = "audio-graph-card";
label = "rockchip,rk3328";
- dais = <&i2s1_p0
+ dais = <&i2s0_p0
+ &i2s1_p0
&spdif_p0>;
};
@@ -141,6 +142,12 @@
&hdmi {
status = "okay";
+
+ port@0 {
+ hdmi_p0_0: endpoint {
+ remote-endpoint = <&i2s0_p0_0>;
+ };
+ };
};
&hdmiphy {
@@ -256,6 +263,18 @@
};
};
+&i2s0 {
+ status = "okay";
+
+ i2s0_p0: port {
+ i2s0_p0_0: endpoint {
+ dai-format = "i2s";
+ mclk-fs = <256>;
+ remote-endpoint = <&hdmi_p0_0>;
+ };
+ };
+};
+
&i2s1 {
status = "okay";
@@ -343,6 +362,9 @@
&uart2 {
status = "okay";
+
+ /delete-property/ dmas;
+ /delete-property/ dma-names;
};
&u2phy {
diff --git a/arch/arm64/boot/dts/rockchip/rk3328.dtsi b/arch/arm64/boot/dts/rockchip/rk3328.dtsi
index 84f14b132e8f..374b5da93a35 100644
--- a/arch/arm64/boot/dts/rockchip/rk3328.dtsi
+++ b/arch/arm64/boot/dts/rockchip/rk3328.dtsi
@@ -665,6 +665,7 @@
pinctrl-names = "default";
pinctrl-0 = <&hdmi_cec &hdmii2c_xfer &hdmi_hpd>;
rockchip,grf = <&grf>;
+ #sound-dai-cells = <0>;

please make that a separate patch


Heiko