aboutsummaryrefslogtreecommitdiff
path: root/src/vendorcode/google/chromeos/chromeos.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/vendorcode/google/chromeos/chromeos.c')
-rw-r--r--src/vendorcode/google/chromeos/chromeos.c183
1 files changed, 12 insertions, 171 deletions
diff --git a/src/vendorcode/google/chromeos/chromeos.c b/src/vendorcode/google/chromeos/chromeos.c
index c4d651a29b..437e128e7b 100644
--- a/src/vendorcode/google/chromeos/chromeos.c
+++ b/src/vendorcode/google/chromeos/chromeos.c
@@ -20,18 +20,11 @@
#include <stddef.h>
#include <string.h>
#include "chromeos.h"
-#if CONFIG_VBOOT_VERIFY_FIRMWARE || CONFIG_VBOOT2_VERIFY_FIRMWARE
-#include "fmap.h"
-#include "symbols.h"
-#include "vboot_handoff.h"
-#include <reset.h>
-#endif
#include <boot/coreboot_tables.h>
#include <cbfs.h>
#include <cbmem.h>
#include <console/console.h>
-#if CONFIG_VBOOT_VERIFY_FIRMWARE
static int vboot_enable_developer(void)
{
struct vboot_handoff *vbho;
@@ -58,10 +51,18 @@ static int vboot_enable_recovery(void)
return !!(vbho->init_params.out_flags & VB_INIT_OUT_ENABLE_RECOVERY);
}
-#else
-static inline int vboot_enable_developer(void) { return 0; }
-static inline int vboot_enable_recovery(void) { return 0; }
-#endif
+
+int vboot_skip_display_init(void)
+{
+ struct vboot_handoff *vbho;
+
+ vbho = cbmem_find(CBMEM_ID_VBOOT_HANDOFF);
+
+ if (vbho == NULL)
+ return 0;
+
+ return !(vbho->init_params.out_flags & VB_INIT_OUT_ENABLE_DISPLAY);
+}
int developer_mode_enabled(void)
{
@@ -92,22 +93,6 @@ int __attribute__((weak)) clear_recovery_mode_switch(void)
return 0;
}
-int vboot_skip_display_init(void)
-{
-#if CONFIG_VBOOT_VERIFY_FIRMWARE
- struct vboot_handoff *vbho;
-
- vbho = cbmem_find(CBMEM_ID_VBOOT_HANDOFF);
-
- if (vbho == NULL)
- return 0;
-
- return !(vbho->init_params.out_flags & VB_INIT_OUT_ENABLE_DISPLAY);
-#else
- return 0;
-#endif
-}
-
#ifdef __ROMSTAGE__
void __attribute__((weak)) save_chromeos_gpios(void)
{
@@ -120,147 +105,3 @@ int __attribute((weak)) vboot_get_sw_write_protect(void)
return 0;
}
#endif
-
-#if CONFIG_VBOOT_VERIFY_FIRMWARE || CONFIG_VBOOT2_VERIFY_FIRMWARE
-void vboot_locate_region(const char *name, struct vboot_region *region)
-{
- region->size = find_fmap_entry(name, (void **)&region->offset_addr);
-}
-
-void *vboot_get_region(uintptr_t offset_addr, size_t size, void *dest)
-{
- if (IS_ENABLED(CONFIG_SPI_FLASH_MEMORY_MAPPED)) {
- if (dest != NULL)
- return memcpy(dest, (void *)offset_addr, size);
- else
- return (void *)offset_addr;
- } else {
- struct cbfs_media default_media, *media = &default_media;
- void *cache;
-
- init_default_cbfs_media(media);
- media->open(media);
- if (dest != NULL) {
- cache = dest;
- if (media->read(media, dest, offset_addr, size) != size)
- cache = NULL;
- } else {
- cache = media->map(media, offset_addr, size);
- if (cache == CBFS_MEDIA_INVALID_MAP_ADDRESS)
- cache = NULL;
- }
- media->close(media);
- return cache;
- }
-}
-
-int vboot_get_handoff_info(void **addr, uint32_t *size)
-{
- struct vboot_handoff *vboot_handoff;
-
- vboot_handoff = cbmem_find(CBMEM_ID_VBOOT_HANDOFF);
-
- if (vboot_handoff == NULL)
- return -1;
-
- *addr = vboot_handoff;
- *size = sizeof(*vboot_handoff);
- return 0;
-}
-
-/* This will leak a mapping of a fw region */
-struct vboot_components *vboot_locate_components(struct vboot_region *region)
-{
- size_t req_size;
- struct vboot_components *vbc;
-
- req_size = sizeof(*vbc);
- req_size += sizeof(struct vboot_component_entry) *
- MAX_PARSED_FW_COMPONENTS;
-
- vbc = vboot_get_region(region->offset_addr, req_size, NULL);
- if (vbc && vbc->num_components > MAX_PARSED_FW_COMPONENTS)
- vbc = NULL;
-
- return vbc;
-}
-
-void *vboot_get_payload(int *len)
-{
- struct vboot_handoff *vboot_handoff;
- struct firmware_component *fwc;
-
- vboot_handoff = cbmem_find(CBMEM_ID_VBOOT_HANDOFF);
-
- if (vboot_handoff == NULL)
- return NULL;
-
- if (CONFIG_VBOOT_BOOT_LOADER_INDEX >= MAX_PARSED_FW_COMPONENTS) {
- printk(BIOS_ERR, "Invalid boot loader index: %d\n",
- CONFIG_VBOOT_BOOT_LOADER_INDEX);
- return NULL;
- }
-
- fwc = &vboot_handoff->components[CONFIG_VBOOT_BOOT_LOADER_INDEX];
-
- /* If payload size is zero fall back to cbfs path. */
- if (fwc->size == 0)
- return NULL;
-
- if (len != NULL)
- *len = fwc->size;
-
- printk(BIOS_DEBUG, "Booting 0x%x byte verified payload at 0x%08x.\n",
- fwc->size, fwc->address);
-
- /* This will leak a mapping. */
- return vboot_get_region(fwc->address, fwc->size, NULL);
-}
-#endif
-
-#if CONFIG_VBOOT2_VERIFY_FIRMWARE
-void *vboot_load_stage(int stage_index,
- struct vboot_region *fw_main,
- struct vboot_components *fw_info)
-{
- struct cbfs_media default_media, *media = &default_media;
- uintptr_t fc_addr;
- uint32_t fc_size;
- void *entry;
-
- if (stage_index >= fw_info->num_components) {
- printk(BIOS_INFO, "invalid stage index\n");
- return NULL;
- }
-
- fc_addr = fw_main->offset_addr + fw_info->entries[stage_index].offset;
- fc_size = fw_info->entries[stage_index].size;
- if (fc_size == 0 ||
- fc_addr + fc_size > fw_main->offset_addr + fw_main->size) {
- printk(BIOS_INFO, "invalid stage address or size\n");
- return NULL;
- }
-
- init_default_cbfs_media(media);
-
- /* we're making cbfs access offset outside of the region managed by
- * cbfs. this works because cbfs_load_stage_by_offset does not check
- * the offset. */
- entry = cbfs_load_stage_by_offset(media, fc_addr);
- if (entry == (void *)-1)
- entry = NULL;
- return entry;
-}
-
-struct vb2_working_data * const vboot_get_working_data(void)
-{
- return (struct vb2_working_data *)_vboot2_work;
-}
-
-void vboot_reboot(void)
-{
- hard_reset();
- die("failed to reboot");
-}
-
-#endif