Messages in this thread Patch in this message | | | Date | Fri, 14 Mar 2003 21:33:01 +0100 | From | Petr Vandrovec <> | Subject | [PATCH] Support for matroxfb on HP Vectra |
| |
Hi Marcelo, please apply this patch...
Matrox chips soldered to the HP Vectra's mainboard do not have EEPROM connected to them, instead of that system BIOS contains VGA BIOS image which is extracted only to the legacy VGA BIOS region at 0xC0000, and nowhere else. And in addition to this they decided to use 14.318MHz XTAL instead of recommended 27.000MHz. These two events together made matroxfb a bit unhappy on such motherboard, as all frequencies were only 53% of expected value :-(
With this patch matroxfb tries to use legacy BIOS if there is no EEPROM and it is ia32 architecture (and it was confirmed to fix a problem).
Patch applies to both 2.4 and 2.5, but in 2.5 it is a bit useless...
Thanks, Petr Vandrovec vandrove@vc.cvut.cz
--- a/drivers/video/matrox/matroxfb_misc.c 2003-02-13 03:57:39.000000000 +0100 +++ b/drivers/video/matrox/matroxfb_misc.c 2003-03-14 14:33:01.000000000 +0100 @@ -994,6 +994,27 @@ parse_bios(vaddr_va(ACCESS_FBINFO(video).vbase), &ACCESS_FBINFO(bios)); pci_write_config_dword(pdev, PCI_ROM_ADDRESS, biosbase); pci_write_config_dword(pdev, PCI_OPTION_REG, opt); +#ifdef CONFIG_X86 + if (!ACCESS_FBINFO(bios).bios_valid) { + unsigned char* b; + + b = ioremap(0x000C0000, 65536); + if (!b) { + printk(KERN_INFO "matroxfb: Unable to map legacy BIOS\n"); + } else { + unsigned int ven = readb(b+0x64+0) | (readb(b+0x64+1) << 8); + unsigned int dev = readb(b+0x64+2) | (readb(b+0x64+3) << 8); + + if (ven != pdev->vendor || dev != pdev->device) { + printk(KERN_INFO "matroxfb: Legacy BIOS is for %04X:%04X, while this device is %04X:%04X\n", + ven, dev, pdev->vendor, pdev->device); + } else { + parse_bios(b, &ACCESS_FBINFO(bios)); + } + iounmap(b); + } + } +#endif matroxfb_set_limits(PMINFO &ACCESS_FBINFO(bios)); } - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
| |