diff options
author | Aaron Durbin <adurbin@chromium.org> | 2014-04-02 20:46:13 -0500 |
---|---|---|
committer | Marc Jones <marc.jones@se-eng.com> | 2014-10-28 18:01:13 +0100 |
commit | 1131889570836da2ee63f5eacb46ce31d3a55276 (patch) | |
tree | 95de33d6f75f510b316f5de54ba746243c677328 /src/soc/intel/baytrail/romstage | |
parent | 31ac9e3a9a53523ad342af55b9a20c3c51cd927a (diff) | |
download | coreboot-1131889570836da2ee63f5eacb46ce31d3a55276.tar.xz |
baytrail: handle MRC being an ELF file
Provide the option to embed MRC as an ELF file and not just
binary blob. This allows for MRC to be relocated.
BUG=chrome-os-partner:27654
BRANCH=rambi
TEST=Built and booted rambi.
Change-Id: I2e177c155a3074e4e1d450b1a73b7299aebd5286
Signed-off-by: Aaron Durbin <adurbin@chromium.org>
Reviewed-on: https://chromium-review.googlesource.com/192893
Reviewed-by: Duncan Laurie <dlaurie@chromium.org>
(cherry picked from commit 89c97d5e2023b8c5cc780e1b1d532d0a586512f9)
Signed-off-by: Marc Jones <marc.jones@se-eng.com>
Reviewed-on: http://review.coreboot.org/7214
Reviewed-by: Edward O'Callaghan <eocallaghan@alterapraxis.com>
Tested-by: build bot (Jenkins)
Diffstat (limited to 'src/soc/intel/baytrail/romstage')
-rw-r--r-- | src/soc/intel/baytrail/romstage/raminit.c | 15 |
1 files changed, 11 insertions, 4 deletions
diff --git a/src/soc/intel/baytrail/romstage/raminit.c b/src/soc/intel/baytrail/romstage/raminit.c index d5ee0317f0..72d8e51b78 100644 --- a/src/soc/intel/baytrail/romstage/raminit.c +++ b/src/soc/intel/baytrail/romstage/raminit.c @@ -146,13 +146,20 @@ void raminit(struct mrc_params *mp, int prev_sleep_state) #endif } - mrc_entry = cbfs_get_file_content(CBFS_DEFAULT_MEDIA, "mrc.bin", 0xab, - NULL); - - if (mrc_entry == NULL) { + /* Determine if mrc.bin is in the cbfs. */ + if (cbfs_get_file_content(CBFS_DEFAULT_MEDIA, "mrc.bin", 0xab, NULL) == + NULL) { printk(BIOS_DEBUG, "Couldn't find mrc.bin\n"); return; } + + /* + * The entry point is currently the first instruction. Handle the + * case of an ELF file being put in the cbfs by setting the entry + * to the CONFIG_MRC_BIN_ADDRESS. + */ + mrc_entry = (void *)(uintptr_t)CONFIG_MRC_BIN_ADDRESS; + if (mp->mainboard.dram_info_location == DRAM_INFO_SPD_SMBUS) enable_smbus(); |