[PATCH v3 2/2] arm64: dts: rockchip: add HDMI sound node for rk3328-rock64

Katsuhiro Suzuki katsuhiro at katsuster.net
Sat Mar 2 06:19:15 PST 2019


Ping...

On 2019/02/18 2:34, Katsuhiro Suzuki wrote:
> This patch adds HDMI sound (I2S0) node for rock64.
> 
> After apply this patch, UART2 will fail to allocate DMA resources
> but UART driver can work fine without DMA.
> 
> This error is related to the DMAC of rk3328 (pl330 or compatible).
> DMAC connected to 16 DMA sources. Each sources have ID number that is
> called 'Req number' in rk3328 TRM. Currently total 7 sources has been
> activated as follows:
> 
> | Req number | Source | Required  |
> |            |        | channels  |
> |------------+--------+-----------|
> | 14, 15     | I2S1   | 2ch       |
> |  6,  7     | UART2  | 2ch       |
> |     10     | SPDIF  | 1ch       |
> |  8,  9     | SPI0   | 2ch       |
> |------------+--------+-----------|
> |            | Total  | 7ch       |
> 
> HDMI audio needs to activate new source I2S0 (Req number 11 and 12).
> I2S0 can work concurrently with other sources, but rk3328 DMAC can
> use max 8 channels at same time. If I2S0 is simply activated by this
> patch, required DMAC channels will be 9. So last one (UART2) cannot
> allocate the DMA resources.
> 
> Virt-dma mechanism for pl0330 DMAC driver is needed to fix this
> problem.
> 
> Signed-off-by: Katsuhiro Suzuki <katsuhiro at katsuster.net>
> ---
>   .../arm64/boot/dts/rockchip/rk3328-rock64.dts | 21 ++++++++++++++++++-
>   1 file changed, 20 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..bfc0930d245c 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 at 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";
>   
> 




More information about the linux-arm-kernel mailing list