From: Onur Yalazı (onuryalazi@mersin.edu.tr)
Date: Sun 16 Mar 2003 - 14:01:29 EET
Son Durum:
Petr Vandrovec ile yaptığım görüşmeler ve onun çalışmaları sayesinde,
aşağıdaki yama ile vectra kullanıcıları onboard ekran kartları ile
sorunsuz framebuffer kullanabilirler
> Thanks. It looks good. Try this. It should work, without any changes
> to 27000 in the matroxfb_misc, as PINS structure in your BIOS correctly
> reports 14MHz, it is only question how to find your BIOS. And this
> should help you.
> If you'll get 'matroxfb: Unable to map legacy BIOS' or
> 'matroxfb: Legacy BIOS is for 102B:0521, while this device is 102B:XXXX',
> then I screwed something somewhere.
> Petr Vandrovec
>
--- matroxfb_misc.c.orig 2003-02-13 03:57:39.000000000 +0100
+++ 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));
}