diff options
-rw-r--r-- | src/config/Options.lb | 10 | ||||
-rw-r--r-- | src/devices/Config.lb | 6 | ||||
-rw-r--r-- | src/devices/pci_device.c | 23 |
3 files changed, 24 insertions, 15 deletions
diff --git a/src/config/Options.lb b/src/config/Options.lb index 39952fb89e..e6ec087a64 100644 --- a/src/config/Options.lb +++ b/src/config/Options.lb @@ -415,7 +415,7 @@ end define CONFIG_CONSOLE_VGA default 0 export always - comment "Log messages to VGA" + comment "Log messages to any VGA-compatible device (may require *_ROM_RUN to bring up)" end define CONFIG_CONSOLE_VGA_MULTI default 0 @@ -1027,10 +1027,16 @@ define CPU_ADDR_BITS comment "CPU hardware address lines num, for AMD K8 could be 40, and AMD family 10 could be 48" end +define CONFIG_VGA_ROM_RUN + default 0 + export always + comment "Init x86 ROMs on VGA-class PCI devices" +end + define CONFIG_PCI_ROM_RUN default 0 export always - comment "Init PCI device option rom" + comment "Init x86 ROMs on all PCI devices" end define CONFIG_PCI_64BIT_PREF_MEM diff --git a/src/devices/Config.lb b/src/devices/Config.lb index 6ba7472cc7..89351ed74f 100644 --- a/src/devices/Config.lb +++ b/src/devices/Config.lb @@ -1,4 +1,5 @@ uses CONFIG_PCI_ROM_RUN +uses CONFIG_VGA_ROM_RUN object device.o object root_device.o object device_util.o @@ -15,4 +16,9 @@ object smbus_ops.o if CONFIG_PCI_ROM_RUN object pci_rom.o dir emulator +else +if CONFIG_VGA_ROM_RUN + object pci_rom.o + dir emulator +end end diff --git a/src/devices/pci_device.c b/src/devices/pci_device.c index 3d98ee5082..5dbb77c344 100644 --- a/src/devices/pci_device.c +++ b/src/devices/pci_device.c @@ -643,16 +643,14 @@ void pci_dev_set_subsystem(device_t dev, unsigned vendor, unsigned device) ((device & 0xffff) << 16) | (vendor & 0xffff)); } +/** default handler: only runs the relevant pci bios. */ void pci_dev_init(struct device *dev) { -#if CONFIG_CONSOLE_VGA == 1 - extern int vga_inited; -#endif -#if CONFIG_PCI_ROM_RUN == 1 || CONFIG_CONSOLE_VGA == 1 +#if CONFIG_PCI_ROM_RUN == 1 || CONFIG_VGA_ROM_RUN == 1 struct rom_header *rom, *ram; #if CONFIG_PCI_ROM_RUN != 1 - /* We want to execute VGA option ROMs when CONFIG_CONSOLE_VGA + /* We want to execute VGA option ROMs when CONFIG_VGA_ROM_RUN * is set but CONFIG_PCI_ROM_RUN is not. In this case we skip * all other option ROM types. */ @@ -671,14 +669,13 @@ void pci_dev_init(struct device *dev) run_bios(dev, ram); #if CONFIG_CONSOLE_VGA == 1 - /* vga_inited is a trigger of the VGA console code. - * - * Only set it if we enabled VGA console, and if we - * just initialized a VGA card. - */ - vga_inited|=dev->class==PCI_CLASS_DISPLAY_VGA; -#endif -#endif + /* vga_inited is a trigger of the VGA console code. */ + if (dev->class == PCI_CLASS_DISPLAY_VGA) { + extern int vga_inited; + vga_inited = 1; + } +#endif /* CONFIG_CONSOLE_VGA */ +#endif /* CONFIG_PCI_ROM_RUN || CONFIG_VGA_ROM_RUN */ } /** Default device operation for PCI devices */ |