summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/device/pci_rom.c15
-rw-r--r--src/include/device/pci_rom.h1
2 files changed, 16 insertions, 0 deletions
diff --git a/src/device/pci_rom.c b/src/device/pci_rom.c
index 895c5b7737..70ffe48b26 100644
--- a/src/device/pci_rom.c
+++ b/src/device/pci_rom.c
@@ -16,6 +16,21 @@
void __weak map_oprom_vendev_rev(u32 *vendev, u8 *rev) { return; }
u32 __weak map_oprom_vendev(u32 vendev) { return vendev; }
+void vga_oprom_preload(void)
+{
+/* The CONFIG_VGA_BIOS_ID symbol is only defined when VGA_BIOS is selected */
+#if CONFIG(VGA_BIOS)
+ const char name[] = "pci" CONFIG_VGA_BIOS_ID ".rom";
+
+ if (!CONFIG(CBFS_PRELOAD))
+ return;
+
+ printk(BIOS_DEBUG, "Preloading VGA ROM %s\n", name);
+
+ cbfs_preload(name);
+#endif
+}
+
static void *cbfs_boot_map_optionrom(uint16_t vendor, uint16_t device)
{
char name[17] = "pciXXXX,XXXX.rom";
diff --git a/src/include/device/pci_rom.h b/src/include/device/pci_rom.h
index 8b04d09987..25bca4003a 100644
--- a/src/include/device/pci_rom.h
+++ b/src/include/device/pci_rom.h
@@ -35,6 +35,7 @@ struct pci_data {
uint16_t reserved_2;
};
+void vga_oprom_preload(void);
struct rom_header *pci_rom_probe(const struct device *dev);
struct rom_header *pci_rom_load(struct device *dev,
struct rom_header *rom_header);