Since a VGA console and the need to run any option ROMs are
authorTorsten Duwe <duwe@lst.de>
Sun, 6 Jan 2008 01:10:54 +0000 (01:10 +0000)
committerTorsten Duwe <duwe@lst.de>
Sun, 6 Jan 2008 01:10:54 +0000 (01:10 +0000)
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

src/config/Options.lb
src/devices/Config.lb
src/devices/pci_device.c

index 39952fb89e703f62efc5e765e8c75afa5ccc9b13..e6ec087a6458eff1c77eb23d8aa798e5faf000c2 100644 (file)
@@ -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
index 6ba7472cc7d990ce5639b02638d214f4be36218f..89351ed74fd23f0f0ab3841b561bdb8041d9950e 100644 (file)
@@ -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
index 3d98ee5082cf543873a23e511349240100697111..5dbb77c34491c8c2a3f10cb96fc57cc85498c46c 100644 (file)
@@ -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 */