From mboxrd@z Thu Jan 1 00:00:00 1970 From: Lokesh Vutla Date: Mon, 27 Jul 2020 15:15:36 +0530 Subject: [PATCH v2 11/18] arm: mach-k3: j7200: Detect if ROM has already loaded sysfw In-Reply-To: <20200727094543.28484-1-lokeshvutla@ti.com> References: <20200727094543.28484-1-lokeshvutla@ti.com> Message-ID: <20200727094543.28484-12-lokeshvutla@ti.com> List-Id: MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit To: u-boot@lists.denx.de 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 received the boot notification message form sysfw. Signed-off-by: Lokesh Vutla --- arch/arm/mach-k3/common.c | 8 ++++++++ arch/arm/mach-k3/common.h | 2 ++ arch/arm/mach-k3/j721e_init.c | 3 ++- 3 files changed, 12 insertions(+), 1 deletion(-) diff --git a/arch/arm/mach-k3/common.c b/arch/arm/mach-k3/common.c index d065bdbc83..7b0369ffb0 100644 --- a/arch/arm/mach-k3/common.c +++ b/arch/arm/mach-k3/common.c @@ -71,6 +71,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 8f5a5f323a..15a98fb653 100644 --- a/arch/arm/mach-k3/common.h +++ b/arch/arm/mach-k3/common.h @@ -7,6 +7,7 @@ */ #include +#include #define AM65X 0xbb5a #define J721E 0xbb64 @@ -30,3 +31,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(); -- 2.27.0