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 <adurbin@chromium.org> Reviewed-on: http://review.coreboot.org/2797 Tested-by: build bot (Jenkins) Reviewed-by: Ronald G. Minnich <rminnich@gmail.com>
This commit is contained in:
parent
c00457d065
commit
25fe2d04d5
|
@ -67,6 +67,11 @@
|
||||||
#ifndef __ASSEMBLER__
|
#ifndef __ASSEMBLER__
|
||||||
#ifndef __PRE_RAM__
|
#ifndef __PRE_RAM__
|
||||||
extern uint64_t high_tables_base, high_tables_size;
|
extern uint64_t high_tables_base, high_tables_size;
|
||||||
|
#if CONFIG_EARLY_CBMEM_INIT
|
||||||
|
/* Return 0 on success, < 0 on error. */
|
||||||
|
int __attribute__((weak)) cbmem_get_table_location(uint64_t *tables_base,
|
||||||
|
uint64_t *tables_size);
|
||||||
|
#endif
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
int cbmem_initialize(void);
|
int cbmem_initialize(void);
|
||||||
|
|
|
@ -85,6 +85,16 @@ void hardwaremain(int boot_complete)
|
||||||
/* FIXME: Is there a better way to handle this? */
|
/* FIXME: Is there a better way to handle this? */
|
||||||
init_timer();
|
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);
|
timestamp_stash(TS_DEVICE_ENUMERATE);
|
||||||
|
|
||||||
/* Initialize chips early, they might disable unused devices. */
|
/* Initialize chips early, they might disable unused devices. */
|
||||||
|
|
Loading…
Reference in New Issue