From: Christoph Müllner <[email protected]>

Patches on the U-Boot mailing list from Rockchip engineers
indicate, that the RK3399's DMA engines are not able to use
addresses in high-memory (above 0xf8000000).

This patch models this restriction in an RK3399 specific
mach_addr_is_dmaable() function.

Signed-off-by: Christoph Müllner <[email protected]>
Signed-off-by: Christoph Muellner <[email protected]>
---

Changes in v2:
    - Convert argument type from unsigned long to void pointer.

 arch/arm/mach-rockchip/rk3399/rk3399.c | 13 +++++++++++++
 1 file changed, 13 insertions(+)

diff --git a/arch/arm/mach-rockchip/rk3399/rk3399.c 
b/arch/arm/mach-rockchip/rk3399/rk3399.c
index a7ccd4f3ed..8895417bda 100644
--- a/arch/arm/mach-rockchip/rk3399/rk3399.c
+++ b/arch/arm/mach-rockchip/rk3399/rk3399.c
@@ -109,3 +109,16 @@ void board_debug_uart_init(void)
 #endif
 }
 #endif
+
+int mach_addr_is_dmaable(void __iomem *ptr)
+{
+       uintptr_t addr = (uintptr_t)ptr;
+
+       /*
+        * The RK3399 cannot cope with high-memory DMA targets/sources.
+        */
+       if (addr < 0xf8000000UL)
+               return 1;
+
+       return 0;
+}
-- 
2.11.0

_______________________________________________
U-Boot mailing list
[email protected]
https://lists.denx.de/listinfo/u-boot

Reply via email to