This patch makes sure that VGA is initialized before it is used.
Additionally, VGA will be initialized if either CONFIG_PCI_ROM_RUN=1
or CONFIG_CONSOLE_VGA=1.

Signed-off-by: Roman Kononov <[EMAIL PROTECTED]>
---
Index: src/devices/pci_rom.c
===================================================================
--- src/devices/pci_rom.c	(revision 2539)
+++ src/devices/pci_rom.c	(working copy)
@@ -62,12 +62,9 @@ struct rom_header * pci_rom_probe(struct
 
 static void *pci_ram_image_start = (void *)PCI_RAM_IMAGE_START;
 
-#if CONFIG_CONSOLE_VGA == 1
-extern int vga_inited;		// defined in vga_console.c 
-#if CONFIG_CONSOLE_VGA_MULTI == 0
+#if CONFIG_CONSOLE_VGA == 1 && CONFIG_CONSOLE_VGA_MULTI == 0
 extern device_t vga_pri;	// the primary vga device, defined in device.c
 #endif
-#endif
 
 struct rom_header *pci_rom_load(struct device *dev, struct rom_header *rom_header)
 {
@@ -96,7 +93,6 @@ struct rom_header *pci_rom_load(struct d
 		printk_debug("copying VGA ROM Image from 0x%x to 0x%x, 0x%x bytes\n",
 			    rom_header, PCI_VGA_RAM_IMAGE_START, rom_size);
 		memcpy(PCI_VGA_RAM_IMAGE_START, rom_header, rom_size);
-		vga_inited = 1;
 		return (struct rom_header *) (PCI_VGA_RAM_IMAGE_START);
 #endif
 	} else {
Index: src/devices/pci_device.c
===================================================================
--- src/devices/pci_device.c	(revision 2539)
+++ src/devices/pci_device.c	(working copy)
@@ -633,7 +633,7 @@ void pci_dev_set_subsystem(device_t dev,
 
 void pci_dev_init(struct device *dev)
 {
-#if CONFIG_PCI_ROM_RUN == 1
+#if CONFIG_PCI_ROM_RUN == 1 || CONFIG_CONSOLE_VGA=1
 	struct rom_header *rom, *ram;
 
 	rom = pci_rom_probe(dev);
@@ -644,6 +644,22 @@ void pci_dev_init(struct device *dev)
 		return;
 
 	run_bios(dev, ram);
+#if CONFIG_CONSOLE_VGA==1
+	{
+		extern int vga_inited;		// defined in vga_console.c 
+		vga_inited|=dev->class==PCI_CLASS_DISPLAY_VGA;
+	}
+#endif
+#elif CONFIG_CONSOLE_VGA==1
+	extern int vga_inited;		// defined in vga_console.c 
+	struct rom_header* header;
+	if (dev->class!=PCI_CLASS_DISPLAY_VGA) return;
+	header=pci_rom_probe(dev);
+	if (header==NULL) return;
+	header=pci_rom_load(dev,header);
+	if (header==NULL) return;
+	run_bios(dev,header);
+	vga_inited=1;
 #endif
 }
 
-- 
linuxbios mailing list
linuxbios@linuxbios.org
http://www.openbios.org/mailman/listinfo/linuxbios

Reply via email to