diff -Naur 915resolution-0.5.3/915resolution.c 915resolution-0.5.3-patched20120521/915resolution.c --- 915resolution-0.5.3/915resolution.c 2007-04-15 18:46:56.000000000 +0800 +++ 915resolution-0.5.3-patched20120521/915resolution.c 2014-11-27 15:36:39.000000000 +0800 @@ -14,6 +14,12 @@ * * This source code is into the public domain. */ +/* This source has been patched by tempestuous in 2008, from 0.5.3. +I BK added 500GMA and 945GME support (adapted from an arch patch), dec 2009. +tempestuous adds device 2a408086 "GM45" Dec 12 2009. +20120521: tempestuous: more patches, refer: +http://www.murga-linux.com/puppy/viewtopic.php?t=32462 +*/ #include #include @@ -55,13 +61,13 @@ typedef unsigned int cardinal; typedef enum { - CT_UNKWN, CT_830, CT_845G, CT_855GM, CT_865G, CT_915G, CT_915GM, CT_945G, CT_945GM, - CT_946GZ, CT_G965, CT_Q965 + CT_UNKWN, CT_500GMA, CT_830, CT_845G, CT_855GM, CT_865G, CT_915G, CT_915GM, CT_945G, CT_945GM, + CT_945GME, CT_946GZ, CT_G965, CT_Q965, CT_GM965, CT_G33, CT_GM45, CT_GMA3150, CT_HDGraphics } chipset_type; char * chipset_type_names[] = { - "UNKNOWN", "830", "845G", "855GM", "865G", "915G", "915GM", "945G", "945GM", - "946GZ", "G965", "Q965" + "UNKNOWN", "500GMA", "830", "845G", "855GM", "865G", "915G", "915GM", "945G", "945GM", + "945GME", "946GZ", "G965", "Q965", "GM965", "G33", "GM45", "GMA3150", "HDGraphics" }; typedef enum { @@ -181,6 +187,10 @@ chipset_type type; switch (id) { + case 0x81008086: + type = CT_500GMA; + break; + case 0x35758086: type = CT_830; break; @@ -213,6 +223,10 @@ type = CT_945GM; break; + case 0x27ac8086: + type = CT_945GME; + break; + case 0x29708086: type = CT_946GZ; break; @@ -225,6 +239,46 @@ type = CT_Q965; break; + case 0x2a008086: + type = CT_GM965; + break; + + case 0x2a018086: + type = CT_GM965; + break; + + case 0x2a028086: + type = CT_GM965; + break; + + case 0x29b08086: + type = CT_G33; + break; + + case 0x29c08086: + type = CT_G33; + break; + + case 0x2a408086: + type = CT_GM45; + break; + + case 0xa0008086: + type = CT_GMA3150; + break; + + case 0xa0108086: + type = CT_GMA3150; + break; + + case 0x00408086: + type = CT_HDGraphics; + break; + + case 0x00448086: + type = CT_HDGraphics; + break; + default: type = CT_UNKWN; break; @@ -502,15 +556,22 @@ outl(0x8000005a, 0xcf8); outb(0x33, 0xcfe); break; + case CT_500GMA: case CT_845G: case CT_865G: case CT_915G: case CT_915GM: case CT_945G: case CT_945GM: + case CT_945GME: case CT_946GZ: case CT_G965: case CT_Q965: + case CT_GM965: + case CT_G33: + case CT_GM45: + case CT_GMA3150: + case CT_HDGraphics: outl(0x80000090, 0xcf8); map->b1 = inb(0xcfd); map->b2 = inb(0xcfe); @@ -542,15 +603,22 @@ outl(0x8000005a, 0xcf8); outb(map->b1, 0xcfe); break; + case CT_500GMA: case CT_845G: case CT_865G: case CT_915G: case CT_915GM: case CT_945G: case CT_945GM: + case CT_945GME: case CT_946GZ: case CT_G965: case CT_Q965: + case CT_GM965: + case CT_G33: + case CT_GM45: + case CT_GMA3150: + case CT_HDGraphics: outl(0x80000090, 0xcf8); outb(map->b1, 0xcfd); outb(map->b2, 0xcfe); @@ -782,7 +850,10 @@ return 0; } - if (!strcmp(argv[index], "845")) { + else if (!strcmp(argv[index], "500GMA")) { + *forced_chipset = CT_500GMA; + } + else if (!strcmp(argv[index], "845")) { *forced_chipset = CT_845G; } else if (!strcmp(argv[index], "855")) { @@ -803,6 +874,9 @@ else if (!strcmp(argv[index], "945GM")) { *forced_chipset = CT_945GM; } + else if (!strcmp(argv[index], "945GME")) { + *forced_chipset = CT_945GME; + } else if (!strcmp(argv[index], "946GZ")) { *forced_chipset = CT_946GZ; } @@ -812,6 +886,21 @@ else if (!strcmp(argv[index], "Q965")) { *forced_chipset = CT_Q965; } + else if (!strcmp(argv[index], "GM965")) { + *forced_chipset = CT_GM965; + } + else if (!strcmp(argv[index], "G33")) { + *forced_chipset = CT_G33; + } + else if (!strcmp(argv[index], "GM45")) { + *forced_chipset = CT_GM45; + } + else if (!strcmp(argv[index], "GMA3150")) { + *forced_chipset = CT_GMA3150; + } + else if (!strcmp(argv[index], "HDGraphics")) { + *forced_chipset = CT_HDGraphics; + } else { *forced_chipset = CT_UNKWN; }