diff options
author | Patrick Georgi <pgeorgi@google.com> | 2017-10-05 17:32:43 +0200 |
---|---|---|
committer | Patrick Georgi <pgeorgi@google.com> | 2017-10-06 16:59:20 +0000 |
commit | cba7316c2662ee1c916345b034ca08dad43984f7 (patch) | |
tree | 3a41c6c78ff9d0d1a67328c2f8cd336dd80ea205 /src/soc | |
parent | c1ef5c1752cc440f4436968e54f8dd79f638951e (diff) |
soc/intel/common: refactor locate_vbt
All callers of locate_vbt just care about the file content and
immediately map the rdev for its content.
Instead of repeating this in all call sites, move that code to
locate_vbt.
Change-Id: I5b518e6c959437bd8f393269db7955358a786719
Signed-off-by: Patrick Georgi <pgeorgi@google.com>
Reviewed-on: https://review.coreboot.org/21896
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
Reviewed-by: Aaron Durbin <adurbin@chromium.org>
Diffstat (limited to 'src/soc')
-rw-r--r-- | src/soc/intel/common/opregion.c | 7 | ||||
-rw-r--r-- | src/soc/intel/common/vbt.c | 17 | ||||
-rw-r--r-- | src/soc/intel/common/vbt.h | 4 |
3 files changed, 8 insertions, 20 deletions
diff --git a/src/soc/intel/common/opregion.c b/src/soc/intel/common/opregion.c index 6cb388ce82..1eb8609ada 100644 --- a/src/soc/intel/common/opregion.c +++ b/src/soc/intel/common/opregion.c @@ -27,12 +27,7 @@ enum cb_err init_igd_opregion(igd_opregion_t *opregion) optionrom_vbt_t *vbt; optionrom_vbt_t *ext_vbt; - if (locate_vbt(&vbt_rdev) == CB_ERR) { - printk(BIOS_ERR, "VBT not found\n"); - return CB_ERR; - }; - - vbt = rdev_mmap_full(&vbt_rdev); + vbt = locate_vbt(&vbt_rdev); if (!vbt) { printk(BIOS_ERR, "VBT couldn't be read\n"); diff --git a/src/soc/intel/common/vbt.c b/src/soc/intel/common/vbt.c index e3360dcf83..c36f797c9b 100644 --- a/src/soc/intel/common/vbt.c +++ b/src/soc/intel/common/vbt.c @@ -28,7 +28,7 @@ const char *mainboard_vbt_filename(void) return "vbt.bin"; } -enum cb_err locate_vbt(struct region_device *rdev) +void *locate_vbt(struct region_device *rdev) { uint32_t vbtsig = 0; struct cbfsf file_desc; @@ -37,7 +37,7 @@ enum cb_err locate_vbt(struct region_device *rdev) 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; + return NULL; } cbfs_file_data(rdev, &file_desc); @@ -45,16 +45,14 @@ enum cb_err locate_vbt(struct region_device *rdev) if (vbtsig != VBT_SIGNATURE) { printk(BIOS_ERR, "Missing/invalid signature in VBT data file!\n"); - return CB_ERR; + return NULL; } - return CB_SUCCESS; + return rdev_mmap_full(rdev); } void *vbt_get(struct region_device *rdev) { - void *vbt_data; - if (!IS_ENABLED(CONFIG_RUN_FSP_GOP)) return NULL; @@ -64,10 +62,5 @@ void *vbt_get(struct region_device *rdev) return NULL; if (!display_init_required()) return NULL; - if (locate_vbt(rdev) != CB_ERR) { - vbt_data = rdev_mmap_full(rdev); - return vbt_data; - } else { - return NULL; - } + return locate_vbt(rdev); } diff --git a/src/soc/intel/common/vbt.h b/src/soc/intel/common/vbt.h index 7b65d74a4d..2d52fea6ed 100644 --- a/src/soc/intel/common/vbt.h +++ b/src/soc/intel/common/vbt.h @@ -27,8 +27,8 @@ */ const char *mainboard_vbt_filename(void); -/* locate .vbt file */ -enum cb_err locate_vbt(struct region_device *rdev); +/* locate vbt.bin file. Returns a pointer to its content. */ +void *locate_vbt(struct region_device *rdev); /* * Returns VBT pointer and mapping after checking prerequisites for Pre OS * Graphics initialization |