device/pci_rom: Add vga_oprom_preload

This method will allow preloading the VGA_BIOS_FILE. By preloading the
file, into cbfs_cache we reduce boot time. In the future we can also add
support for loading the second VGA_BIOS_FILE and the DGPU VGA_BIOS_FILE.

BUG=b:179699789
TEST=Boot guybrush to OS and verify 12 ms reduction in boot time

Signed-off-by: Raul E Rangel <rrangel@chromium.org>
Change-Id: Icb54fe3a942e9507ff6f1173ba5620a8f4ce6549
Reviewed-on: https://review.coreboot.org/c/coreboot/+/56581
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
Reviewed-by: Rob Barnes <robbarnes@google.com>
diff --git a/src/device/pci_rom.c b/src/device/pci_rom.c
index 895c5b7..70ffe48 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";