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. This allows more separation between CONFIG_CHROMEOS and what
CONFIG_CHROMEOS selects, so that each separate option (such as
CONFIG_VBOOT_VERIFY_FIRMWARE) can be enabled separately.

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>
Reviewed-on: http://review.coreboot.org/11497
Reviewed-by: Aaron Durbin <adurbin@chromium.org>
Tested-by: build bot (Jenkins)
Reviewed-by: Paul Menzel <paulepanter@users.sourceforge.net>
This commit is contained in:
Paul Kocialkowski 2015-09-03 11:41:14 +02:00 committed by Aaron Durbin
parent c947fee479
commit 115360fdb3
4 changed files with 35 additions and 48 deletions

View File

@ -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)
{

View File

@ -45,29 +45,14 @@ 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;
#if CONFIG_VBOOT_VERIFY_FIRMWARE
/* Returns 0 on success < 0 on error. */
int vboot_get_handoff_info(void **addr, uint32_t *size);
#else /* CONFIG_VBOOT_VERIFY_FIRMWARE */
static inline int vboot_get_handoff_info(void **addr, uint32_t *size)
{
return -1;
}
#endif /* CONFIG_VBOOT_VERIFY_FIRMWARE */
#include "gnvs.h"
struct device;
@ -84,6 +69,5 @@ static inline void chromeos_reserve_ram_oops(struct device *dev, int idx) {}
#endif /* CONFIG_CHROMEOS_RAMOOPS */
void cbmem_add_vpd_calibration_data(void);
void vboot_reboot(void);
#endif /* __CHROMEOS_H__ */

View File

@ -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))

View File

@ -39,5 +39,13 @@ struct vboot_components {
/* The following functions return 0 on success, < 0 on error. */
int vboot_named_region_device(const char *name, struct region_device *rdev);
int vboot_region_device(const struct region *reg, struct region_device *rdev);
int vboot_get_handoff_info(void **addr, uint32_t *size);
/* The following functions return 1 for true and 0 for false. */
int vboot_skip_display_init(void);
int vboot_enable_recovery(void);
int vboot_enable_developer(void);
void vboot_reboot(void);
#endif /* VBOOT_COMMON_H */