diff mbox series

rockchip: rk3399: enable spl-fifo-mode for sdmmc

Message ID 20200415032524.2534-1-deepakdas.linux@gmail.com
State Accepted
Commit 5c606ca35c421faf42499f78ce4a4e7745d53df6
Headers show
Series rockchip: rk3399: enable spl-fifo-mode for sdmmc | expand

Commit Message

Deepak Das April 15, 2020, 3:25 a.m. UTC
adapting commit fa2047c47310 ("rockchip: rk3328: enable spl-fifo-mode
for emmc and sdmmc") for rk3399.
Since mmc to sram can't do dma, add patch to prevent aborts transferring
TF-A parts.

Signed-off-by: Deepak Das <deepakdas.linux at gmail.com>
---
 arch/arm/dts/rk3399-u-boot.dtsi | 3 +++
 1 file changed, 3 insertions(+)

Comments

Philipp Tomsich April 15, 2020, 1 p.m. UTC | #1
> On 15.04.2020, at 05:25, Deepak Das <deepakdas.linux at gmail.com> wrote:
> 
> adapting commit fa2047c47310 ("rockchip: rk3328: enable spl-fifo-mode
> for emmc and sdmmc") for rk3399.
> Since mmc to sram can't do dma, add patch to prevent aborts transferring
> TF-A parts.
> 
> Signed-off-by: Deepak Das <deepakdas.linux at gmail.com>
> ---
> arch/arm/dts/rk3399-u-boot.dtsi | 3 +++
> 1 file changed, 3 insertions(+)
> 
> diff --git a/arch/arm/dts/rk3399-u-boot.dtsi b/arch/arm/dts/rk3399-u-boot.dtsi
> index 8b857ccfc7..3ad824450e 100644
> --- a/arch/arm/dts/rk3399-u-boot.dtsi
> +++ b/arch/arm/dts/rk3399-u-boot.dtsi
> @@ -84,6 +84,9 @@
> 
> &sdmmc {
> 	u-boot,dm-pre-reloc;
> +
> +	/* mmc to sram can't do dma, prevent aborts transferring TF-A parts */
> +	u-boot,spl-fifo-mode;

Most transfers in SPL mode will occur to RAM (i.e. most of TF-A and the full U-Boot),
so this is a heavy-handed solution for a problem affecting only some transfers.

Can?t this be solved using bounce buffers?
You will need to check if the target address cross the inaccessible memory regions
and?if and only if?send these payloads through a bounce buffer... 

> };
> 
> &spi1 {
> -- 
> 2.17.1
>
Deepak Das April 16, 2020, 11:18 a.m. UTC | #2
Hi Philipp,

On 15/04/20 6:30 pm, Philipp Tomsich wrote:
>> On 15.04.2020, at 05:25, Deepak Das <deepakdas.linux at gmail.com> wrote:
>>
>> adapting commit fa2047c47310 ("rockchip: rk3328: enable spl-fifo-mode
>> for emmc and sdmmc") for rk3399.
>> Since mmc to sram can't do dma, add patch to prevent aborts transferring
>> TF-A parts.
>>
>> Signed-off-by: Deepak Das <deepakdas.linux at gmail.com>
>> ---
>> arch/arm/dts/rk3399-u-boot.dtsi | 3 +++
>> 1 file changed, 3 insertions(+)
>>
>> diff --git a/arch/arm/dts/rk3399-u-boot.dtsi b/arch/arm/dts/rk3399-u-boot.dtsi
>> index 8b857ccfc7..3ad824450e 100644
>> --- a/arch/arm/dts/rk3399-u-boot.dtsi
>> +++ b/arch/arm/dts/rk3399-u-boot.dtsi
>> @@ -84,6 +84,9 @@
>>
>> &sdmmc {
>> 	u-boot,dm-pre-reloc;
>> +
>> +	/* mmc to sram can't do dma, prevent aborts transferring TF-A parts */
>> +	u-boot,spl-fifo-mode;
> Most transfers in SPL mode will occur to RAM (i.e. most of TF-A and the full U-Boot),
> so this is a heavy-handed solution for a problem affecting only some transfers.

agreed with you. 

> Can?t this be solved using bounce buffers?
> You will need to check if the target address cross the inaccessible memory regions
> and?if and only if?send these payloads through a bounce buffer... 

Currently bounce buffer apis will use bounce buffer only if target address is not
aligned for DMA. so I can see following options:-
1) use miss aligned address for required transfer (hackish workaround).
2) create another set of apis which will use bounce buffer even if the target address
is aligned for DMA.
3) un-secure SRAM area since TF-A will anyway resecure it.

we now also need to get the sram area for that specific SOC so that we can compare
the same with the target address and act accordingly for option 1&2.

do you have any suggestions ? may be I missed something...

>
>> };
>>
>> &spi1 {
>> -- 
>> 2.17.1
>>
diff mbox series

Patch

diff --git a/arch/arm/dts/rk3399-u-boot.dtsi b/arch/arm/dts/rk3399-u-boot.dtsi
index 8b857ccfc7..3ad824450e 100644
--- a/arch/arm/dts/rk3399-u-boot.dtsi
+++ b/arch/arm/dts/rk3399-u-boot.dtsi
@@ -84,6 +84,9 @@ 
 
 &sdmmc {
 	u-boot,dm-pre-reloc;
+
+	/* mmc to sram can't do dma, prevent aborts transferring TF-A parts */
+	u-boot,spl-fifo-mode;
 };
 
 &spi1 {