Hi Kever, I also see this issue when switching between Rockchip ATF and Upstream ATF.
Versions: Rockchip DDR Blob - rk3399_ddr_800MHz_v1.30.bin Rockchip Miniloader - rk3399_miniloader_v1.30.bin Rockchip ATF - rk3399_bl31_v1.36.elf Upstream ATF - git://git.trustedfirmware.org/TF-A/trusted-firmware-a.git, git tag v2.8.0, with RK3399_BAUDRATE changed from 115200 to 1500000 in plat/rockchip/rk3399/rk3399_def.h U-Boot - git://git.denx.de/u-boot.git, git tag v2022.01 Results: Rockchip DDR Blob + Rockchip Miniloader + Rockchip ATF + U-Boot = DMA working dma-pl330 ff6d0000.dma-controller: Loaded driver for PL330 DMAC-241330 dma-pl330 ff6d0000.dma-controller: DBUFF-32x8bytes Num_Chans-6 Num_Peri-12 Num_Events-12 dma-pl330 ff6e0000.dma-controller: Loaded driver for PL330 DMAC-241330 dma-pl330 ff6e0000.dma-controller: DBUFF-128x8bytes Num_Chans-8 Num_Peri-20 Num_Events-16 Rockchip DDR Blob + Rockchip Miniloader + Upstream ATF + U-Boot = DMA not working OF: amba_device_add() failed (-19) for /bus/dma-controller@ff6d0000 OF: amba_device_add() failed (-19) for /bus/dma-controller@ff6e0000 I can't check the Rockchip ATF source code as it isn't available. Any idea what is different between Rockchip ATF and Upstream ATF for DMA to work properly? Regards, Jonathan On Mon, 3 Apr 2023 at 18:38, Kever Yang <kever.y...@rock-chips.com> wrote: > > 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