aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLokesh Vutla <lokeshvutla@ti.com>2020-08-05 22:44:22 +0530
committerLokesh Vutla <lokeshvutla@ti.com>2020-08-11 20:34:46 +0530
commit9c8f41beea79ec5b44df460947254b43f6d4ed9c (patch)
tree60f37c7eda1a9a13b1cb904f19792176fa601968
parent30de1ba0d375e418e94628037f3a1e30ec58f9aa (diff)
downloadu-boot-9c8f41beea79ec5b44df460947254b43f6d4ed9c.zip
u-boot-9c8f41beea79ec5b44df460947254b43f6d4ed9c.tar.gz
u-boot-9c8f41beea79ec5b44df460947254b43f6d4ed9c.tar.bz2
arm: mach-k3: j7200: Add support for storing extended boot info from ROM
Starting J7200 SoC, ROM supports for loading sysfw directly from boot image. ROM passes this information on number of images that are loaded to bootloader at certain location. Add support for storing this information before it gets corrupted. Signed-off-by: Lokesh Vutla <lokeshvutla@ti.com> Reviewed-by: Suman Anna <s-anna@ti.com>
-rw-r--r--arch/arm/mach-k3/include/mach/hardware.h7
-rw-r--r--arch/arm/mach-k3/include/mach/j721e_hardware.h3
-rw-r--r--arch/arm/mach-k3/j721e_init.c7
3 files changed, 15 insertions, 2 deletions
diff --git a/arch/arm/mach-k3/include/mach/hardware.h b/arch/arm/mach-k3/include/mach/hardware.h
index 0ad7614..02b3df0 100644
--- a/arch/arm/mach-k3/include/mach/hardware.h
+++ b/arch/arm/mach-k3/include/mach/hardware.h
@@ -21,4 +21,11 @@
#define JTAG_ID_PARTNO_SHIFT 12
#define JTAG_ID_PARTNO_MASK (0xffff << 12)
+#define K3_ROM_BOOT_HEADER_MAGIC "EXTBOOT"
+
+struct rom_extended_boot_data {
+ char header[8];
+ u32 num_components;
+};
+
#endif /* _ASM_ARCH_HARDWARE_H_ */
diff --git a/arch/arm/mach-k3/include/mach/j721e_hardware.h b/arch/arm/mach-k3/include/mach/j721e_hardware.h
index 19873d6..b98f0a8 100644
--- a/arch/arm/mach-k3/include/mach/j721e_hardware.h
+++ b/arch/arm/mach-k3/include/mach/j721e_hardware.h
@@ -51,6 +51,9 @@
#define CTRLMMR_LOCK_KICK1 0x0100c
#define CTRLMMR_LOCK_KICK1_UNLOCK_VAL 0xd172bc5a
+/* ROM HANDOFF Structure location */
+#define ROM_ENTENDED_BOOT_DATA_INFO 0x41cffb00
+
/* MCU SCRATCHPAD usage */
#define TI_SRAM_SCRATCH_BOARD_EEPROM_START CONFIG_SYS_K3_MCU_SCRATCHPAD_BASE
diff --git a/arch/arm/mach-k3/j721e_init.c b/arch/arm/mach-k3/j721e_init.c
index 63a31c1..6246de3 100644
--- a/arch/arm/mach-k3/j721e_init.c
+++ b/arch/arm/mach-k3/j721e_init.c
@@ -126,10 +126,13 @@ void k3_mmc_restart_clock(void)
* it to the .data section.
*/
u32 bootindex __attribute__((section(".data")));
+static struct rom_extended_boot_data bootdata __section(.data);
-static void store_boot_index_from_rom(void)
+static void store_boot_info_from_rom(void)
{
bootindex = *(u32 *)(CONFIG_SYS_K3_BOOT_PARAM_TABLE_INDEX);
+ memcpy(&bootdata, (uintptr_t *)ROM_ENTENDED_BOOT_DATA_INFO,
+ sizeof(struct rom_extended_boot_data));
}
void board_init_f(ulong dummy)
@@ -142,7 +145,7 @@ void board_init_f(ulong dummy)
* Cannot delay this further as there is a chance that
* K3_BOOT_PARAM_TABLE_INDEX can be over written by SPL MALLOC section.
*/
- store_boot_index_from_rom();
+ store_boot_info_from_rom();
/* Make all control module registers accessible */
ctrl_mmr_unlock();