aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPatrick Georgi <pgeorgi@google.com>2017-09-27 18:33:33 +0200
committerPatrick Georgi <pgeorgi@google.com>2017-10-06 15:52:59 +0000
commitf61427709909bb9fa534f985eb451b3b905f7a31 (patch)
tree81b1e104b930c7ebb8bb157055c2e0add92d1948
parenta06f55b8e4a4e51815d654f6125a60c0db3550e4 (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.c10
-rw-r--r--src/soc/intel/common/vbt.h8
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);
/*