rk3399 issue: no DMA in Linux with mainline TF-A and U-Boot SPL

Kever Yang kever.yang at rock-chips.com
Mon Apr 3 10:37:48 CEST 2023


Hi Christoph,

     The ARM PL330 DMA driver in kernel only relate to:

- DTS kernel used, can be check in /proc/device-tree/

- kernel driver which should mach the compatible name.

This driver should has nothing to do with U-Boot SPL or TF-A, because we 
don't have any special setting for PL330 in loader stage.


Thanks,

- Kever

On 2023/4/3 03:01, Christoph Fritz wrote:
> Hello Kever,
>
>   on a rk3399, booting current U-Boot SPL with mainline TF-A leads to
> missing DMA (and no sound) on Linux.
>
> However, when using rockchip its so called mini-loader
> (rk3399_miniloader_v1.26.bin) and their BL31 (rk3399_bl31_v1.35.elf) to
> boot, DMA works perfectly fine.
>
> Tested on a custom rk3399 board and on ROCK Pi4.
>
> Attached to this mail are two boot logs with some debug prints:
>
>   - good_amba_log.txt (DMA works)
>   - no_amba_log.txt (no DMA device)
>
> The main difference I can spot between the two logs is that on Linux
> (drivers/amba/bus.c) AMBA_CID (0xb105f00d) cannot be found. Instead,
> only some CORESIGHT_CIDs (presumably for debugging) and four 0x00000000
> CIDs are detected.
>
> As a result, the "PL330 DMAC-241330" driver does not load. My theory is
> that DMA needs to be allowed somewhere in the undocumented syscon-
> registers, similar to what U-Boot is already doing for eMMC in
> arch_cpu_init() (arch/arm/mach-rockchip/rk3399/rk3399.c).
>
> Any ideas?
>
> Or maybe I'm just missing some configuration?
>
> Since multiple software projects are involved (TF-A, OP-TEE, U-Boot,
> Linux), I Cc'ed a bit.
>
>   Thanks
>    -- Christoph


More information about the U-Boot mailing list