rockchip: spl: Add a read_brom_bootsource_id() helper
The bootsource ids reported by BootROM of RK3528 and RK3576 for e.g. SPI NOR and USB differs slightly compared to prior SoCs: - Booting from sfc0 (ROCK 4D) report the normal bootsource id 0x3. - Booting from sfc1 M1 (NanoPi M5) report a new bootsource id 0x23. - Booting from sfc1 M0 has not been tested (no board using this config). - Booting from USB report a new bootsource id 0x81 on RK3528 and RK3576. Add a helper function to read the bootsource id. This helper function will be used to translate the new values to the common BROM_BOOTSOURCE enum values on RK3528 and RK3576. Signed-off-by: Jonas Karlman <jonas@kwiboo.se> Reviewed-by: Kever Yang <kever.yang@rock-chips.com>
This commit is contained in:
@@ -64,4 +64,6 @@ extern const char * const boot_devices[BROM_LAST_BOOTSOURCE + 1];
|
||||
*/
|
||||
#define BROM_BOOTSOURCE_ID_ADDR (CFG_IRAM_BASE + 0x10)
|
||||
|
||||
u32 read_brom_bootsource_id(void);
|
||||
|
||||
#endif
|
||||
|
||||
@@ -31,6 +31,11 @@ int board_return_to_bootrom(struct spl_image_info *spl_image,
|
||||
__weak const char * const boot_devices[BROM_LAST_BOOTSOURCE + 1] = {
|
||||
};
|
||||
|
||||
__weak u32 read_brom_bootsource_id(void)
|
||||
{
|
||||
return readl(BROM_BOOTSOURCE_ID_ADDR);
|
||||
}
|
||||
|
||||
const char *board_spl_was_booted_from(void)
|
||||
{
|
||||
static u32 brom_bootsource_id_cache = BROM_BOOTSOURCE_UNKNOWN;
|
||||
@@ -40,7 +45,7 @@ const char *board_spl_was_booted_from(void)
|
||||
if (brom_bootsource_id_cache != BROM_BOOTSOURCE_UNKNOWN)
|
||||
bootdevice_brom_id = brom_bootsource_id_cache;
|
||||
else
|
||||
bootdevice_brom_id = readl(BROM_BOOTSOURCE_ID_ADDR);
|
||||
bootdevice_brom_id = read_brom_bootsource_id();
|
||||
|
||||
if (bootdevice_brom_id < ARRAY_SIZE(boot_devices))
|
||||
bootdevice_ofpath = boot_devices[bootdevice_brom_id];
|
||||
|
||||
Reference in New Issue
Block a user