# HG changeset patch # User attila # Date 1046640116 0 # Node ID 182d6c136095daaf0b62d744e883183a98b9edcf # Parent d65ddafbc40487ac87f0ee50826936640b68b4c8 workaround wrong detected memory sizes on G400 cards. patch by ilmari@ping.uio.no (Dagfinn Ilmari Mannsker) diff -r d65ddafbc404 -r 182d6c136095 drivers/mga_vid.c --- a/drivers/mga_vid.c Sun Mar 02 21:09:15 2003 +0000 +++ b/drivers/mga_vid.c Sun Mar 02 21:21:56 2003 +0000 @@ -88,6 +88,18 @@ #define PCI_DEVICE_ID_MATROX_G550 0x2527 #endif +#ifndef PCI_SUBSYSTEM_ID_MATROX_G400_DH_16MB +#define PCI_SUBSYSTEM_ID_MATROX_G400_DH_16MB 0x2159 +#endif + +#ifndef PCI_SUBSYSTEM_ID_MATROX_G400_16MB_SGRAM +#define PCI_SUBSYSTEM_ID_MATROX_G400_16MB_SGRAM 0x19d8 +#endif + +#ifndef PCI_SUBSYSTEM_ID_MATROX_G400_16MB_SDRAM +#define PCI_SUBSYSTEM_ID_MATROX_G400_16MB_SDRAM 0x0328 +#endif + MODULE_AUTHOR("Aaron Holtzman "); #ifdef MODULE_LICENSE MODULE_LICENSE("GPL"); @@ -1366,6 +1378,15 @@ mga_ram_size = 16; printk(KERN_INFO "mga_vid: Couldn't detect RAMSIZE, assuming 16MB!"); } + /* Check for buggy 16MB cards reporting 32 MB */ + if(mga_ram_size != 16 && + (pci_dev->subsystem_device == PCI_SUBSYSTEM_ID_MATROX_G400_16MB_SDRAM || + pci_dev->subsystem_device == PCI_SUBSYSTEM_ID_MATROX_G400_16MB_SGRAM || + pci_dev->subsystem_device == PCI_SUBSYSTEM_ID_MATROX_G400_DH_16MB)) + { + printk(KERN_INFO "mga_vid: Detected 16MB card reporting %d MB RAMSIZE, overriding\n", mga_ram_size); + mga_ram_size = 16; + } }else{ switch((card_option>>10)&0x17){ // case 0x10: