cbfs_spi: Initialize spi_flash when initializing cbfs_cache
Most devices do not use SPI before they initialize CBMEM. This change initializes spi_flash in the CBMEM_INIT_HOOK to initialize the postram cbfs cache so it is not overwritten when boot_device_init is called later. BUG=chromium:210230 BRANCH=none TEST=confirm that the first cbfs access can occur before RAM initialized and after on panther and jerry. Change-Id: If3b6efc04082190e81c3773c0d3ce116bb12421f Signed-off-by: Patrick Georgi <pgeorgi@chromium.org> Original-Commit-Id: 0ab242786a16eba7fb423694f6b266e27d7660ec Original-Change-Id: I5f884b473e51e6813fdd726bba06b56baf3841b0 Original-Signed-off-by: Mary Ruthven <mruthven@chromium.org> Original-Reviewed-on: https://chromium-review.googlesource.com/314311 Original-Reviewed-by: Aaron Durbin <adurbin@chromium.org> Reviewed-on: https://review.coreboot.org/12601 Tested-by: build bot (Jenkins) Reviewed-by: Stefan Reinauer <stefan.reinauer@coreboot.org>
This commit is contained in:
parent
5b242f6307
commit
a8aef3acbc
|
@ -82,7 +82,7 @@
|
||||||
#if ENV_ROMSTAGE
|
#if ENV_ROMSTAGE
|
||||||
#define PRERAM_CBFS_CACHE(addr, size) CBFS_CACHE(addr, size)
|
#define PRERAM_CBFS_CACHE(addr, size) CBFS_CACHE(addr, size)
|
||||||
#define POSTRAM_CBFS_CACHE(addr, size) \
|
#define POSTRAM_CBFS_CACHE(addr, size) \
|
||||||
REGION(dram_cbfs_cache, addr, size, 4)
|
REGION(postram_cbfs_cache, addr, size, 4)
|
||||||
#elif defined(__PRE_RAM__)
|
#elif defined(__PRE_RAM__)
|
||||||
#define PRERAM_CBFS_CACHE(addr, size) CBFS_CACHE(addr, size)
|
#define PRERAM_CBFS_CACHE(addr, size) CBFS_CACHE(addr, size)
|
||||||
#define POSTRAM_CBFS_CACHE(addr, size) \
|
#define POSTRAM_CBFS_CACHE(addr, size) \
|
||||||
|
|
|
@ -41,9 +41,9 @@ extern u8 _stack[];
|
||||||
extern u8 _estack[];
|
extern u8 _estack[];
|
||||||
#define _stack_size (_estack - _stack)
|
#define _stack_size (_estack - _stack)
|
||||||
|
|
||||||
extern u8 _dram_cbfs_cache[];
|
extern u8 _postram_cbfs_cache[];
|
||||||
extern u8 _edram_cbfs_cache[];
|
extern u8 _epostram_cbfs_cache[];
|
||||||
#define _dram_cbfs_cache_size (_edram_cbfs_cache - _dram_cbfs_cache)
|
#define _postram_cbfs_cache_size (_epostram_cbfs_cache - _postram_cbfs_cache)
|
||||||
|
|
||||||
extern u8 _cbfs_cache[];
|
extern u8 _cbfs_cache[];
|
||||||
extern u8 _ecbfs_cache[];
|
extern u8 _ecbfs_cache[];
|
||||||
|
|
|
@ -45,7 +45,14 @@ static struct mmap_helper_region_device mdev =
|
||||||
|
|
||||||
static void initialize_mdev(int unused)
|
static void initialize_mdev(int unused)
|
||||||
{
|
{
|
||||||
mmap_helper_device_init(&mdev, _dram_cbfs_cache, _dram_cbfs_cache_size);
|
/*
|
||||||
|
* Call boot_device_init() to ensure spi_flash is initialized before
|
||||||
|
* backing mdev with postram cache. This prevents the mdev backing from
|
||||||
|
* being overwritten if spi_flash was not accessed before dram was up.
|
||||||
|
*/
|
||||||
|
boot_device_init();
|
||||||
|
mmap_helper_device_init(&mdev, _postram_cbfs_cache,
|
||||||
|
_postram_cbfs_cache_size);
|
||||||
}
|
}
|
||||||
ROMSTAGE_CBMEM_INIT_HOOK(initialize_mdev);
|
ROMSTAGE_CBMEM_INIT_HOOK(initialize_mdev);
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue