From 25fe2d04d583cfaaf55b8f3861f1fad86885d818 Mon Sep 17 00:00:00 2001 From: Aaron Durbin Date: Tue, 12 Feb 2013 00:40:30 -0600 Subject: ramstage: Add cbmem_get_table_location() When CONFIG_EARLY_CBMEM_INIT is selected romstage is supposed to have initialized cbmem. Therefore provide a weak function for the chipset to implement named cbmem_get_table_location(). When CONFIG_EARLY_CBMEM_INIT is selected cbmem_get_table_location() will be called to get the cbmem location and size. After that cbmem_initialize() is called. Change-Id: Idc45a95f9d4b1d83eb3c6d4977f7a8c80c1ffe76 Signed-off-by: Aaron Durbin Reviewed-on: http://review.coreboot.org/2797 Tested-by: build bot (Jenkins) Reviewed-by: Ronald G. Minnich --- src/lib/hardwaremain.c | 10 ++++++++++ 1 file changed, 10 insertions(+) (limited to 'src/lib') diff --git a/src/lib/hardwaremain.c b/src/lib/hardwaremain.c index d2213d2c83..b29cc93e79 100644 --- a/src/lib/hardwaremain.c +++ b/src/lib/hardwaremain.c @@ -85,6 +85,16 @@ void hardwaremain(int boot_complete) /* FIXME: Is there a better way to handle this? */ init_timer(); + /* CONFIG_EARLY_CBMEM_INIT indicates that romstage initialized + * the cbmem area. Therefore the table location can be initialized + * early in ramstage if cbmem_get_table_location() is implemented. + */ +#if CONFIG_EARLY_CBMEM_INIT + if (cbmem_get_table_location != NULL && + !cbmem_get_table_location(&high_tables_base, &high_tables_size)) + cbmem_initialize(); +#endif + timestamp_stash(TS_DEVICE_ENUMERATE); /* Initialize chips early, they might disable unused devices. */ -- cgit v1.2.3