Alexandru Gagniuc (mr.nuke.me@gmail.com) just uploaded a new patch set to gerrit, which you can find at https://review.coreboot.org/13377
-gerrit
commit bb2981d00f1477225b38f3cc926a40a355b87910 Author: Alexandru Gagniuc alexandrux.gagniuc@intel.com Date: Mon Dec 7 15:42:54 2015 -0800
drivers/intel/fsp2_0: Take cbmem overhead size as a parameter
FSP will reserve an area of memory at the top of usable RAM below 4GiB if asked. Rather than selecting the region's size in fsp_memory_init(), pass it as a parameter. This allows the caller to handle all the cbmem related logic, and removes the cbmem dependency from the FSP wrapper.
Change-Id: I581b224ee83202732ae83a0f363f0bb717aae669 Signed-off-by: Alexandru Gagniuc alexandrux.gagniuc@intel.com --- src/drivers/intel/fsp2_0/include/fsp/api.h | 2 +- src/drivers/intel/fsp2_0/memory_init.c | 10 +++++----- src/soc/intel/apollolake/romstage/romstage.c | 2 +- 3 files changed, 7 insertions(+), 7 deletions(-)
diff --git a/src/drivers/intel/fsp2_0/include/fsp/api.h b/src/drivers/intel/fsp2_0/include/fsp/api.h index 6d2efd8..08f5b57 100644 --- a/src/drivers/intel/fsp2_0/include/fsp/api.h +++ b/src/drivers/intel/fsp2_0/include/fsp/api.h @@ -39,7 +39,7 @@ enum fsp_notify_phase {
/* Main FSP stages */ -enum fsp_status fsp_memory_init(void **hob_list); +enum fsp_status fsp_memory_init(void **hob_list, size_t tolum_size); enum fsp_status fsp_silicon_init(void); enum fsp_status fsp_notify(enum fsp_notify_phase phase);
diff --git a/src/drivers/intel/fsp2_0/memory_init.c b/src/drivers/intel/fsp2_0/memory_init.c index e9d6e42..84f6fe1 100644 --- a/src/drivers/intel/fsp2_0/memory_init.c +++ b/src/drivers/intel/fsp2_0/memory_init.c @@ -14,7 +14,6 @@ #include <arch/io.h> #include <arch/cpu.h> #include <console/console.h> -#include <cbmem.h> #include <fsp/api.h> #include <fsp/util.h> #include <string.h> @@ -58,7 +57,8 @@ void platform_fsp_memory_init_params_cb(struct MEMORY_INIT_UPD *memupd) }
static enum fsp_status do_fsp_memory_init(void **hob_list_ptr, - struct fsp_header *hdr) + struct fsp_header *hdr, + size_t tolum_size) { enum fsp_status status; fsp_memory_init_fn fsp_raminit; @@ -74,7 +74,7 @@ static enum fsp_status do_fsp_memory_init(void **hob_list_ptr, memset(&rt_buffer, 0, sizeof(rt_buffer));
rt_buffer.upd_data_rgn = &raminit_upd; - rt_buffer.bootloader_tolum_size = cbmem_overhead_size(); + rt_buffer.bootloader_tolum_size = tolum_size;
/* Get any board specific changes */ raminit_params.nvs_buffer = NULL; @@ -114,12 +114,12 @@ static void relocate_fit(void) memcpy((void*)CONFIG_FIT_CAR_ADDR, (void*)fit_loc, FIT_SIZE); }
-enum fsp_status fsp_memory_init(void **hob_list) +enum fsp_status fsp_memory_init(void **hob_list, size_t tolum_size) { struct fsp_header hdr;
if (fsp_load_binary(&hdr, "blobs/fsp-m.bin") != CB_SUCCESS) return FSP_NOT_FOUND; relocate_fit(); - return do_fsp_memory_init(hob_list, &hdr); + return do_fsp_memory_init(hob_list, &hdr, tolum_size); } diff --git a/src/soc/intel/apollolake/romstage/romstage.c b/src/soc/intel/apollolake/romstage/romstage.c index b1595e8..2a4b2ff 100644 --- a/src/soc/intel/apollolake/romstage/romstage.c +++ b/src/soc/intel/apollolake/romstage/romstage.c @@ -83,7 +83,7 @@ asmlinkage void* romstage_entry(void)
soc_early_romstage_init();
- fsp_memory_init(&hob_list_ptr); + fsp_memory_init(&hob_list_ptr, cbmem_overhead_size());
fsp_find_reserved_memory(&fsp_mem, hob_list_ptr);