diff options
author | Torsten Duwe <duwe@lst.de> | 2008-01-06 01:10:54 +0000 |
---|---|---|
committer | Torsten Duwe <duwe@lst.de> | 2008-01-06 01:10:54 +0000 |
commit | 1f2f800036d967f18ce93c88908d4d635cbf79fc (patch) | |
tree | 1fee405360655f9c4baf39fb8894c901278c669b /src | |
parent | 11e90e06d3409227fd2f04985c226e920ca671b1 (diff) |
Since a VGA console and the need to run any option ROMs are
rather independent, lift the implicit (broken) assumption that
CONSOLE_VGA would also run the ROMs, and transfer it to a new
config option VGA_ROM_RUN.
This change is minimally intrusive, because all board configs
that previously assumed CONSOLE_VGA would also run the ROMs
didn't compile, they had to also specify PCI_ROM_RUN.
Based on patches by Ron Minnich (fix the compile) and Luc Verhaegen
(separate ROM_RUN from VGA console).
Signed-off-by: Torsten Duwe <duwe@lst.de>
Acked-by: Carl-Daniel Hailfinger <c-d.hailfinger.devel.2006@gmx.net>
Acked-by: Luc Verhaegen <libv@skynet.be>
git-svn-id: svn://svn.coreboot.org/coreboot/trunk@3034 2b7e53f0-3cfb-0310-b3e9-8179ed1497e1
Diffstat (limited to 'src')
-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 */ |