Author: stepan Date: 2009-11-05 08:10:12 +0000 (Thu, 05 Nov 2009) New Revision: 4909
Modified: trunk/src/devices/pci_rom.c Log: When loading an option ROM use the class stored in the device to decide whether the option ROM is a special VGA type.
An S3 card that I've got has the wrong class in the VGA BIOS. (A Stealth 64 DRAM T PCI, from 1994 - BIOS V2.02)
Signed-off-by: Mark Marshall mark.marshall@csr.com Acked-by: Stefan Reinauer stepan@coresystems.de
Modified: trunk/src/devices/pci_rom.c =================================================================== --- trunk/src/devices/pci_rom.c 2009-11-04 12:18:44 UTC (rev 4908) +++ trunk/src/devices/pci_rom.c 2009-11-05 08:10:12 UTC (rev 4909) @@ -116,7 +116,10 @@
rom_size = rom_header->size * 512;
- if (PCI_CLASS_DISPLAY_VGA == rom_data->class_hi) { + // We check to see if the device thinks it is a VGA device not + // whether the ROM image is for a VGA device because some + // devices have a mismatch between the hardware and the ROM + if (PCI_CLASS_DISPLAY_VGA == (dev->class >> 8)) { #if CONFIG_CONSOLE_VGA == 1 && CONFIG_CONSOLE_VGA_MULTI == 0 extern device_t vga_pri; // the primary vga device, defined in device.c if (dev != vga_pri) return NULL; // only one VGA supported