diff options
-rw-r--r-- | arch/arm/mach-k3/common.c | 8 | ||||
-rw-r--r-- | arch/arm/mach-k3/common.h | 2 | ||||
-rw-r--r-- | arch/arm/mach-k3/j721e_init.c | 3 |
3 files changed, 12 insertions, 1 deletions
diff --git a/arch/arm/mach-k3/common.c b/arch/arm/mach-k3/common.c index f4d7c3d71e..8c903f14ff 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 32d07340bf..a6dbc7808b 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 6246de3a26..a36e4ed603 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(); |