diff options
author | Patrick Georgi <pgeorgi@google.com> | 2017-09-27 18:33:33 +0200 |
---|---|---|
committer | Patrick Georgi <pgeorgi@google.com> | 2017-10-06 15:52:59 +0000 |
commit | f61427709909bb9fa534f985eb451b3b905f7a31 (patch) | |
tree | 81b1e104b930c7ebb8bb157055c2e0add92d1948 | |
parent | a06f55b8e4a4e51815d654f6125a60c0db3550e4 (diff) |
soc/intel/common: Allow overriding CBFS filename of VBT
When reusing the same image across multiple devices, they sometimes need
different VBTs, so provide a hook for mainboard code to specify which
file is required.
Change-Id: Ic7865dc0e0c9ea3077b749d9d0482079877e9c4f
Signed-off-by: Patrick Georgi <pgeorgi@google.com>
Reviewed-on: https://review.coreboot.org/21724
Reviewed-by: Aaron Durbin <adurbin@chromium.org>
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
-rw-r--r-- | src/soc/intel/common/vbt.c | 10 | ||||
-rw-r--r-- | src/soc/intel/common/vbt.h | 8 |
2 files changed, 17 insertions, 1 deletions
diff --git a/src/soc/intel/common/vbt.c b/src/soc/intel/common/vbt.c index 315459b246..e3360dcf83 100644 --- a/src/soc/intel/common/vbt.c +++ b/src/soc/intel/common/vbt.c @@ -22,12 +22,20 @@ #define VBT_SIGNATURE 0x54425624 +__attribute__((weak)) +const char *mainboard_vbt_filename(void) +{ + return "vbt.bin"; +} + enum cb_err locate_vbt(struct region_device *rdev) { uint32_t vbtsig = 0; struct cbfsf file_desc; - if (cbfs_boot_locate(&file_desc, "vbt.bin", NULL) < 0) { + const char *filename = mainboard_vbt_filename(); + + if (cbfs_boot_locate(&file_desc, filename, NULL) < 0) { printk(BIOS_ERR, "Could not locate a VBT file in in CBFS\n"); return CB_ERR; } diff --git a/src/soc/intel/common/vbt.h b/src/soc/intel/common/vbt.h index 9a02e6a467..7b65d74a4d 100644 --- a/src/soc/intel/common/vbt.h +++ b/src/soc/intel/common/vbt.h @@ -19,6 +19,14 @@ #include <commonlib/region.h> #include <types.h> +/* + * Returns the CBFS filename of the VBT blob. + * + * The default implementation returns "vbt.bin", but other implementations can + * override this. + */ +const char *mainboard_vbt_filename(void); + /* locate .vbt file */ enum cb_err locate_vbt(struct region_device *rdev); /* |