Attention is currently required from: Lance Zhao, Martin Roth. Kyösti Mälkki has uploaded this change for review. ( https://review.coreboot.org/c/coreboot/+/50612 )
Change subject: [WIP] vc/google/chromeos: Refactor GNVS init ......................................................................
[WIP] vc/google/chromeos: Refactor GNVS init
Change-Id: I7e92206561812eb3dc69739df49b6c3a93853858 Signed-off-by: Kyösti Mälkki kyosti.malkki@gmail.com --- M src/acpi/Makefile.inc D src/acpi/chromeos-gnvs.c M src/acpi/gnvs.c M src/include/acpi/acpi_gnvs.h M src/vendorcode/google/chromeos/gnvs.c M src/vendorcode/google/chromeos/gnvs.h M src/vendorcode/google/chromeos/ramoops.c 7 files changed, 29 insertions(+), 61 deletions(-)
git pull ssh://review.coreboot.org:29418/coreboot refs/changes/12/50612/1
diff --git a/src/acpi/Makefile.inc b/src/acpi/Makefile.inc index b703680..b2d653f 100644 --- a/src/acpi/Makefile.inc +++ b/src/acpi/Makefile.inc @@ -9,7 +9,6 @@ ramstage-y += acpigen_ps2_keybd.c ramstage-y += acpigen_usb.c ramstage-y += device.c -ramstage-$(CONFIG_VBOOT_NVS) += chromeos-gnvs.c ramstage-$(CONFIG_ACPI_SOC_NVS) += gnvs.c ramstage-y += pld.c ramstage-y += sata.c diff --git a/src/acpi/chromeos-gnvs.c b/src/acpi/chromeos-gnvs.c deleted file mode 100644 index 060d56d..0000000 --- a/src/acpi/chromeos-gnvs.c +++ /dev/null @@ -1,38 +0,0 @@ -/* SPDX-License-Identifier: GPL-2.0-only */ - -#include <acpi/acpi_gnvs.h> -#include <ec/google/chromeec/ec.h> -#include <smbios.h> -#include <vendorcode/google/chromeos/gnvs.h> - -void gnvs_assign_chromeos(void *gnvs_section) -{ - chromeos_acpi_t *gnvs_chromeos = gnvs_section; - - chromeos_init_chromeos_acpi(gnvs_chromeos); - - /* EC can override to ECFW_RW. */ - gnvs_chromeos->vbt2 = ACTIVE_ECFW_RO; - - if (CONFIG(EC_GOOGLE_CHROMEEC) && !google_ec_running_ro()) - gnvs_chromeos->vbt2 = ACTIVE_ECFW_RW; -} - -void gnvs_set_ecfw_rw(void) -{ - chromeos_acpi_t *gnvs_chromeos = chromeos_get_chromeos_acpi(); - if (!gnvs_chromeos) - return; - - gnvs_chromeos->vbt2 = ACTIVE_ECFW_RW; -} - -void smbios_type0_bios_version(uintptr_t address) -{ - chromeos_acpi_t *gnvs_chromeos = chromeos_get_chromeos_acpi(); - if (!gnvs_chromeos) - return; - - /* Location of smbios_type0.bios_version() string filled with spaces. */ - gnvs_chromeos->vbt10 = address; -} diff --git a/src/acpi/gnvs.c b/src/acpi/gnvs.c index 2dbfa4a..b3695e8 100644 --- a/src/acpi/gnvs.c +++ b/src/acpi/gnvs.c @@ -39,7 +39,7 @@ gnvs->cbmc = (uintptr_t)cbmem_find(CBMEM_ID_CONSOLE);
if (CONFIG(VBOOT_NVS)) - gnvs_assign_chromeos((u8 *)gnvs + GNVS_CHROMEOS_ACPI_OFFSET); + chromeos_init_chromeos_acpi((u8 *)gnvs + GNVS_CHROMEOS_ACPI_OFFSET); }
void *acpi_get_gnvs(void) diff --git a/src/include/acpi/acpi_gnvs.h b/src/include/acpi/acpi_gnvs.h index 498743f..6b782c3 100644 --- a/src/include/acpi/acpi_gnvs.h +++ b/src/include/acpi/acpi_gnvs.h @@ -13,9 +13,6 @@ static inline void *acpi_get_gnvs(void) { return NULL; } #endif
-void gnvs_assign_chromeos(void *gnvs_section); -void gnvs_set_ecfw_rw(void); - /* * These functions populate the gnvs structure in acpi table. * Defined as weak in common acpi as gnvs structure definition is diff --git a/src/vendorcode/google/chromeos/gnvs.c b/src/vendorcode/google/chromeos/gnvs.c index 9f0c259..6c3dd15 100644 --- a/src/vendorcode/google/chromeos/gnvs.c +++ b/src/vendorcode/google/chromeos/gnvs.c @@ -45,6 +45,12 @@ chromeos_acpi->vpd_rw_base = vpd_base; chromeos_acpi->vpd_rw_size = vpd_size; } + + /* EC can override to ECFW_RW. */ + chromeos_acpi->vbt2 = ACTIVE_ECFW_RO; + + if (CONFIG(EC_GOOGLE_CHROMEEC) && !google_ec_running_ro()) + chromeos_acpi->vbt2 = ACTIVE_ECFW_RW; }
void chromeos_set_me_hash(u32 *hash, int len) @@ -57,7 +63,27 @@ memcpy(chromeos_acpi->mehh, hash, len*sizeof(u32)); }
-chromeos_acpi_t *chromeos_get_chromeos_acpi(void) +void set_ramoops(void *ram_oops, size_t size) { - return chromeos_acpi; + if (!chromeos_acpi) + return; + + printk(BIOS_DEBUG, "Ramoops buffer: 0x%zx@%p.\n", size, ram_oops); + chromeos->ramoops_base = (uintptr_t)ram_oops; + chromeos->ramoops_len = size; +} + +void gnvs_set_ecfw_rw(void) +{ + if (!chromeos_acpi) + return; + chromeos_acpi->vbt2 = ACTIVE_ECFW_RW; +} + +void smbios_type0_bios_version(uintptr_t address) +{ + if (!chromeos_acpi) + return; + /* Location of smbios_type0.bios_version() string filled with spaces. */ + chromeos_acpi->vbt10 = address; } diff --git a/src/vendorcode/google/chromeos/gnvs.h b/src/vendorcode/google/chromeos/gnvs.h index 3f47a33..8f8e259 100644 --- a/src/vendorcode/google/chromeos/gnvs.h +++ b/src/vendorcode/google/chromeos/gnvs.h @@ -42,6 +42,5 @@ } __packed chromeos_acpi_t;
void chromeos_init_chromeos_acpi(chromeos_acpi_t *init); -chromeos_acpi_t *chromeos_get_chromeos_acpi(void);
#endif diff --git a/src/vendorcode/google/chromeos/ramoops.c b/src/vendorcode/google/chromeos/ramoops.c index 54bad45..ae6941e 100644 --- a/src/vendorcode/google/chromeos/ramoops.c +++ b/src/vendorcode/google/chromeos/ramoops.c @@ -7,22 +7,7 @@ #include <bootstate.h> #include <console/console.h> #include <cbmem.h> -#include <device/device.h> #include "chromeos.h" -#include "gnvs.h" - -static void set_ramoops(void *ram_oops, size_t size) -{ - chromeos_acpi_t *chromeos = chromeos_get_chromeos_acpi(); - if (chromeos == NULL) { - printk(BIOS_DEBUG, "chromeos gnvs is NULL. ramoops not set.\n"); - return; - } - - printk(BIOS_DEBUG, "Ramoops buffer: 0x%zx@%p.\n", size, ram_oops); - chromeos->ramoops_base = (uintptr_t)ram_oops; - chromeos->ramoops_len = size; -}
static void ramoops_alloc(void *arg) {