summaryrefslogtreecommitdiff
path: root/src/soc/intel/apollolake
diff options
context:
space:
mode:
authorAaron Durbin <adurbin@chromium.org>2016-12-03 22:08:20 -0600
committerAaron Durbin <adurbin@chromium.org>2016-12-15 07:51:35 +0100
commit31be2c969eed74510c3546bad0dbb9a7334f5843 (patch)
treea7b5d682bfe421a34454d320ec78d04e6911f71b /src/soc/intel/apollolake
parentf1f322b1a883e3d50a1907e29b5aa333a0f795a8 (diff)
soc/intel/common: remove mrc cache assumptions
Update the mrc cache implementation to use region_file. Instead of relying on memory-mapped access and pointer arithmetic use the region_devices and region_file to obtain the latest data associated with the region. This removes the need for the nvm wrapper as the region_devices can be used directly. Thus, the library is more generic and can be extended to work on different boot mediums. BUG=chrome-os-partner:56151 Change-Id: Ic14e2d2f7339e50256b4a3a297fc33991861ca44 Signed-off-by: Aaron Durbin <adurbin@chromium.org> Reviewed-on: https://review.coreboot.org/17717 Tested-by: build bot (Jenkins) Reviewed-by: Duncan Laurie <dlaurie@chromium.org>
Diffstat (limited to 'src/soc/intel/apollolake')
-rw-r--r--src/soc/intel/apollolake/mmap_boot.c17
-rw-r--r--src/soc/intel/apollolake/romstage.c15
2 files changed, 8 insertions, 24 deletions
diff --git a/src/soc/intel/apollolake/mmap_boot.c b/src/soc/intel/apollolake/mmap_boot.c
index 7159c24f52..3213b09b23 100644
--- a/src/soc/intel/apollolake/mmap_boot.c
+++ b/src/soc/intel/apollolake/mmap_boot.c
@@ -23,7 +23,6 @@
#include <console/console.h>
#include <fmap.h>
#include <soc/flash_ctrlr.h>
-#include <soc/intel/common/nvm.h>
#include <soc/mmap_boot.h>
/*
@@ -148,22 +147,6 @@ const struct cbfs_locator cbfs_master_header_locator = {
.locate = iafw_boot_region_properties,
};
-uint32_t nvm_mmio_to_flash_offset(void *p)
-{
- bios_mmap_init();
-
- size_t start, size;
- start = car_get_var(bios_start);
- size = car_get_var(bios_size);
-
- /*
- * Returns :
- * addr - base of mmaped region in addr space + offset of mmaped region
- * start on flash
- */
- return (uintptr_t)p - (4ULL * GiB - size) + start;
-}
-
size_t get_bios_size(void)
{
bios_mmap_init();
diff --git a/src/soc/intel/apollolake/romstage.c b/src/soc/intel/apollolake/romstage.c
index 77562c4699..8c2a1a330a 100644
--- a/src/soc/intel/apollolake/romstage.c
+++ b/src/soc/intel/apollolake/romstage.c
@@ -202,8 +202,9 @@ asmlinkage void car_stage_entry(void)
new_var_data = fsp_find_extension_hob_by_guid(hob_variable_guid,
&var_size);
if (new_var_data)
- mrc_cache_stash_vardata(new_var_data, var_size,
- car_get_var(fsp_version));
+ mrc_cache_stash_data(MRC_VARIABLE_DATA,
+ car_get_var(fsp_version), new_var_data,
+ var_size);
else
printk(BIOS_ERR, "Failed to determine variable data\n");
@@ -258,7 +259,7 @@ static void fill_console_params(FSPM_UPD *mupd)
void platform_fsp_memory_init_params_cb(FSPM_UPD *mupd, uint32_t version)
{
- const struct mrc_saved_data *msd;
+ struct region_device rdev;
fill_console_params(mupd);
mainboard_memory_init_params(mupd);
@@ -293,10 +294,10 @@ void platform_fsp_memory_init_params_cb(FSPM_UPD *mupd, uint32_t version)
* wrong/missing key renders DRAM contents useless.
*/
- if (mrc_cache_get_vardata(&msd, version) < 0) {
- printk(BIOS_DEBUG, "MRC variable data missing/invalid\n");
- } else {
- mupd->FspmConfig.VariableNvsBufferPtr = (void*) msd->data;
+ if (mrc_cache_get_current(MRC_VARIABLE_DATA, version, &rdev) == 0) {
+ /* Assume leaking is ok. */
+ assert(IS_ENABLED(CONFIG_BOOT_DEVICE_MEMORY_MAPPED));
+ mupd->FspmConfig.VariableNvsBufferPtr = rdev_mmap_full(&rdev);
}
car_set_var(fsp_version, version);