lib/bootblock: provide SoC callback parity with mainboard

There was no 'early' call into the SoC code prior to console
getting initialized. Not having this enforces the mainboard to
drive the setup of the console which typically just ends up
calling into the SoC code. Provide a SoC early init call
to handle this without having to duplicate the same code
in mainboards utilizing the same SoC.

Change-Id: Ia233dc3ae89a77df284d6d5cf5b2b051ad3be089
Signed-off-by: Aaron Durbin <adurbin@chromium.org>
Reviewed-on: https://review.coreboot.org/13791
Reviewed-by: Furquan Shaikh <furquan@google.com>
Tested-by: build bot (Jenkins)
Reviewed-by: Andrey Petrov <andrey.petrov@intel.com>
Reviewed-by: Paul Menzel <paulepanter@users.sourceforge.net>
This commit is contained in:
Aaron Durbin 2016-02-24 18:56:00 -06:00
parent 0aa7d247ae
commit be7cbdcc9d
2 changed files with 8 additions and 1 deletions

View File

@ -18,9 +18,14 @@
#include <main_decl.h> #include <main_decl.h>
/* 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_early_init(void);
void bootblock_mainboard_init(void); void bootblock_mainboard_init(void);
void bootblock_soc_early_init(void);
void bootblock_soc_init(void); void bootblock_soc_init(void);
#endif /* __BOOTBLOCK_COMMON_H */ #endif /* __BOOTBLOCK_COMMON_H */

View File

@ -25,6 +25,7 @@
DECLARE_OPTIONAL_REGION(timestamp); DECLARE_OPTIONAL_REGION(timestamp);
__attribute__((weak)) void bootblock_mainboard_early_init(void) { /* no-op */ } __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_soc_init(void) { /* do nothing */ }
__attribute__((weak)) void bootblock_mainboard_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) if (IS_ENABLED(CONFIG_COLLECT_TIMESTAMPS) && _timestamp_size > 0)
timestamp_init(timestamp_get()); timestamp_init(timestamp_get());
bootblock_soc_early_init();
bootblock_mainboard_early_init(); bootblock_mainboard_early_init();
if (IS_ENABLED(CONFIG_BOOTBLOCK_CONSOLE)) { if (IS_ENABLED(CONFIG_BOOTBLOCK_CONSOLE)) {