summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorIgor Opaniuk <[email protected]>2019-11-28 15:56:20 +0200
committerStefano Babic <[email protected]>2020-01-07 10:26:56 +0100
commit89038264bb242787826fa4621dca80f7f9594a7f (patch)
tree49ac0abf3dc7f5e656696fe205fb9df03410f2c5
parent0ba1b4de0e2d05a9b10cf25b1ee45631606db6ba (diff)
mach-imx: bootaux: add dcache flushing before enabling M4
This patch fixes the issue with broken bootaux command, when M4 binary is loaded and data cache isn't flushed before M4 core is enabled. Reproducing: > tftpboot ${loadaddr} ${board_name}/hello_world.bin > cp.b ${loadaddr} 0x7F8000 $filesize > bootaux 0x7F8000 Signed-off-by: Igor Opaniuk <[email protected]> Reviewed-by: Oleksandr Suvorov <[email protected]>
-rw-r--r--arch/arm/mach-imx/imx_bootaux.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/arch/arm/mach-imx/imx_bootaux.c b/arch/arm/mach-imx/imx_bootaux.c
index ee786f7d063..7c8195e7155 100644
--- a/arch/arm/mach-imx/imx_bootaux.c
+++ b/arch/arm/mach-imx/imx_bootaux.c
@@ -9,6 +9,7 @@
#include <command.h>
#include <imx_sip.h>
#include <linux/compiler.h>
+#include <cpu_func.h>
int arch_auxiliary_core_up(u32 core_id, ulong boot_private_data)
{
@@ -27,6 +28,8 @@ int arch_auxiliary_core_up(u32 core_id, ulong boot_private_data)
writel(stack, M4_BOOTROM_BASE_ADDR);
writel(pc, M4_BOOTROM_BASE_ADDR + 4);
+ flush_dcache_all();
+
/* Enable M4 */
#ifdef CONFIG_IMX8M
call_imx_sip(IMX_SIP_SRC, IMX_SIP_SRC_M4_START, 0, 0, 0);