diff --git a/src/include/bootblock_common.h b/src/include/bootblock_common.h index c8156d0236..2cecc3b645 100644 --- a/src/include/bootblock_common.h +++ b/src/include/bootblock_common.h @@ -18,9 +18,14 @@ #include -/* These are defined as weak no-ops that can be overridden by mainboard/SoC. */ +/* + * These are defined as weak no-ops that can be overridden by mainboard/SoC. + * The 'early' variants are called prior to console initialization. Also, the + * SoC functions are called prior to the mainboard fucntions. + */ void bootblock_mainboard_early_init(void); void bootblock_mainboard_init(void); +void bootblock_soc_early_init(void); void bootblock_soc_init(void); #endif /* __BOOTBLOCK_COMMON_H */ diff --git a/src/lib/bootblock.c b/src/lib/bootblock.c index 4a36a58f85..658eea45c9 100644 --- a/src/lib/bootblock.c +++ b/src/lib/bootblock.c @@ -25,6 +25,7 @@ DECLARE_OPTIONAL_REGION(timestamp); __attribute__((weak)) void bootblock_mainboard_early_init(void) { /* no-op */ } +__attribute__((weak)) void bootblock_soc_early_init(void) { /* do nothing */ } __attribute__((weak)) void bootblock_soc_init(void) { /* do nothing */ } __attribute__((weak)) void bootblock_mainboard_init(void) { /* do nothing */ } @@ -36,6 +37,7 @@ void main(void) if (IS_ENABLED(CONFIG_COLLECT_TIMESTAMPS) && _timestamp_size > 0) timestamp_init(timestamp_get()); + bootblock_soc_early_init(); bootblock_mainboard_early_init(); if (IS_ENABLED(CONFIG_BOOTBLOCK_CONSOLE)) {