Paul Kocialkowski (contact@paulk.fr) just uploaded a new patch set to gerrit, which you can find at http://review.coreboot.org/11497
-gerrit
commit 1573fcd63a77bf1bc11c9154a84e3b0f182836b1 Author: Paul Kocialkowski contact@paulk.fr Date: Thu Sep 3 11:41:14 2015 +0200
chromeos: vboot-related functions move to common vboot code
This moves a few vboot-prefixed functions that were defined in chromeos.c to vboot_common.c, since those are only relevant to vboot and depend on the vboot handoff data.
Thus, the actual definitions of these functions will only be declared when CONFIG_VBOOT_VERIFY_FIRMWARE is set, so the check before calling vboot_skip_display_init in bootmode was also adapted.
Change-Id: I52f8a408645566dac0a2100e819c8ed5d3d88ea5 Signed-off-by: Paul Kocialkowski contact@paulk.fr --- src/lib/bootmode.c | 2 +- src/vendorcode/google/chromeos/chromeos.c | 32 --------------------------- src/vendorcode/google/chromeos/chromeos.h | 10 ++++----- src/vendorcode/google/chromeos/vboot_common.c | 27 ++++++++++++++++++++++ 4 files changed, 33 insertions(+), 38 deletions(-)
diff --git a/src/lib/bootmode.c b/src/lib/bootmode.c index f2ff72a..d0aa40e 100644 --- a/src/lib/bootmode.c +++ b/src/lib/bootmode.c @@ -80,7 +80,7 @@ void gfx_set_init_done(int done) int display_init_required(void) { /* For Chrome OS always honor vboot_skip_display_init(). */ - if (IS_ENABLED(CONFIG_CHROMEOS)) + if (IS_ENABLED(CONFIG_VBOOT_VERIFY_FIRMWARE)) return !vboot_skip_display_init();
/* By default always initialize display. */ diff --git a/src/vendorcode/google/chromeos/chromeos.c b/src/vendorcode/google/chromeos/chromeos.c index c2190b7..4864b8c 100644 --- a/src/vendorcode/google/chromeos/chromeos.c +++ b/src/vendorcode/google/chromeos/chromeos.c @@ -20,38 +20,6 @@ #include <stddef.h> #include <string.h> #include "chromeos.h" -#include <boot/coreboot_tables.h> -#include <cbfs.h> -#include <cbmem.h> -#include <console/console.h> -#include "vboot_handoff.h" - -static int vboot_handoff_flag(uint32_t flag) -{ - struct vboot_handoff *vbho; - - vbho = cbmem_find(CBMEM_ID_VBOOT_HANDOFF); - - if (vbho == NULL) - return 0; - - return !!(vbho->init_params.out_flags & flag); -} - -int vboot_skip_display_init(void) -{ - return !vboot_handoff_flag(VB_INIT_OUT_ENABLE_DISPLAY); -} - -int vboot_enable_developer(void) -{ - return vboot_handoff_flag(VB_INIT_OUT_ENABLE_DEVELOPER); -} - -int vboot_enable_recovery(void) -{ - return vboot_handoff_flag(VB_INIT_OUT_ENABLE_RECOVERY); -}
int __attribute__((weak)) clear_recovery_mode_switch(void) { diff --git a/src/vendorcode/google/chromeos/chromeos.h b/src/vendorcode/google/chromeos/chromeos.h index d3fb8e9..b0356ac 100644 --- a/src/vendorcode/google/chromeos/chromeos.h +++ b/src/vendorcode/google/chromeos/chromeos.h @@ -45,15 +45,10 @@ void elog_add_boot_reason(void); /* functions implemented in watchdog.c */ void elog_add_watchdog_reset(void); void reboot_from_watchdog(void); - -int vboot_enable_developer(void); -int vboot_enable_recovery(void); -int vboot_skip_display_init(void); #else static inline void elog_add_boot_reason(void) { return; } static inline void elog_add_watchdog_reset(void) { return; } static inline void reboot_from_watchdog(void) { return; } -static inline int vboot_skip_display_init(void) { return 0; } #endif /* CONFIG_CHROMEOS */
struct romstage_handoff; @@ -61,11 +56,16 @@ struct romstage_handoff; #if CONFIG_VBOOT_VERIFY_FIRMWARE /* Returns 0 on success < 0 on error. */ int vboot_get_handoff_info(void **addr, uint32_t *size); + +int vboot_enable_developer(void); +int vboot_enable_recovery(void); +int vboot_skip_display_init(void); #else /* CONFIG_VBOOT_VERIFY_FIRMWARE */ static inline int vboot_get_handoff_info(void **addr, uint32_t *size) { return -1; } +static inline int vboot_skip_display_init(void) { return 0; } #endif /* CONFIG_VBOOT_VERIFY_FIRMWARE */
int get_sw_write_protect_state(void); diff --git a/src/vendorcode/google/chromeos/vboot_common.c b/src/vendorcode/google/chromeos/vboot_common.c index 2fd29b6..1c216d0 100644 --- a/src/vendorcode/google/chromeos/vboot_common.c +++ b/src/vendorcode/google/chromeos/vboot_common.c @@ -55,6 +55,33 @@ int vboot_get_handoff_info(void **addr, uint32_t *size) return 0; }
+static int vboot_handoff_flag(uint32_t flag) +{ + struct vboot_handoff *vbho; + + vbho = cbmem_find(CBMEM_ID_VBOOT_HANDOFF); + + if (vbho == NULL) + return 0; + + return !!(vbho->init_params.out_flags & flag); +} + +int vboot_skip_display_init(void) +{ + return !vboot_handoff_flag(VB_INIT_OUT_ENABLE_DISPLAY); +} + +int vboot_enable_developer(void) +{ + return vboot_handoff_flag(VB_INIT_OUT_ENABLE_DEVELOPER); +} + +int vboot_enable_recovery(void) +{ + return vboot_handoff_flag(VB_INIT_OUT_ENABLE_RECOVERY); +} + void vboot_reboot(void) { if (IS_ENABLED(CONFIG_CONSOLE_CBMEM_DUMP_TO_UART))