aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLokesh Vutla <lokeshvutla@ti.com>2020-08-05 22:44:23 +0530
committerLokesh Vutla <lokeshvutla@ti.com>2020-08-11 20:34:46 +0530
commit01dbe366ba2d0eda00bbfac19b105eaa7f635d73 (patch)
tree90fdfefaf49266bc4c2d69845c6f3958895c8a82
parent9c8f41beea79ec5b44df460947254b43f6d4ed9c (diff)
downloadu-boot-01dbe366ba2d0eda00bbfac19b105eaa7f635d73.zip
u-boot-01dbe366ba2d0eda00bbfac19b105eaa7f635d73.tar.gz
u-boot-01dbe366ba2d0eda00bbfac19b105eaa7f635d73.tar.bz2
arm: mach-k3: j7200: Detect if ROM has already loaded sysfw
Detect if sysfw is already loaded by ROM and pass this information to sysfw loader. Based on this information sysfw loader either loads the sysfw image from boot media or just receives the boot notification message form sysfw. Signed-off-by: Lokesh Vutla <lokeshvutla@ti.com> Reviewed-by: Suman Anna <s-anna@ti.com>
-rw-r--r--arch/arm/mach-k3/common.c8
-rw-r--r--arch/arm/mach-k3/common.h2
-rw-r--r--arch/arm/mach-k3/j721e_init.c3
3 files changed, 12 insertions, 1 deletions
diff --git a/arch/arm/mach-k3/common.c b/arch/arm/mach-k3/common.c
index f4d7c3d..8c903f1 100644
--- a/arch/arm/mach-k3/common.c
+++ b/arch/arm/mach-k3/common.c
@@ -72,6 +72,14 @@ void mmr_unlock(phys_addr_t base, u32 partition)
writel(CTRLMMR_LOCK_KICK1_UNLOCK_VAL, part_base + CTRLMMR_LOCK_KICK1);
}
+bool is_rom_loaded_sysfw(struct rom_extended_boot_data *data)
+{
+ if (strncmp(data->header, K3_ROM_BOOT_HEADER_MAGIC, 7))
+ return false;
+
+ return data->num_components > 1;
+}
+
DECLARE_GLOBAL_DATA_PTR;
#ifdef CONFIG_K3_EARLY_CONS
diff --git a/arch/arm/mach-k3/common.h b/arch/arm/mach-k3/common.h
index 32d0734..a6dbc78 100644
--- a/arch/arm/mach-k3/common.h
+++ b/arch/arm/mach-k3/common.h
@@ -7,6 +7,7 @@
*/
#include <asm/armv7_mpu.h>
+#include <asm/hardware.h>
#define J721E 0xbb64
#define J7200 0xbb6d
@@ -26,3 +27,4 @@ int load_firmware(char *name_fw, char *name_loadaddr, u32 *loadaddr);
void k3_sysfw_print_ver(void);
void spl_enable_dcache(void);
void mmr_unlock(phys_addr_t base, u32 partition);
+bool is_rom_loaded_sysfw(struct rom_extended_boot_data *data);
diff --git a/arch/arm/mach-k3/j721e_init.c b/arch/arm/mach-k3/j721e_init.c
index 6246de3..a36e4ed 100644
--- a/arch/arm/mach-k3/j721e_init.c
+++ b/arch/arm/mach-k3/j721e_init.c
@@ -177,7 +177,8 @@ void board_init_f(ulong dummy)
* callback hook, effectively switching on (or over) the console
* output.
*/
- k3_sysfw_loader(false, k3_mmc_stop_clock, k3_mmc_restart_clock);
+ k3_sysfw_loader(is_rom_loaded_sysfw(&bootdata),
+ k3_mmc_stop_clock, k3_mmc_restart_clock);
/* Prepare console output */
preloader_console_init();