--- a/915resolution.c 2011-04-20 17:45:52.000000000 +0200 +++ b/915resolution.c 2011-06-26 02:34:58.493941231 +0200 @@ -110,12 +110,12 @@ typedef enum { CT_UNKWN, 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_965GM, CT_G33, CT_Q33, CT_Q35, CT_500GMA + CT_946GZ, CT_G965, CT_Q965, CT_965GM, CT_G33, CT_Q33, CT_Q35, CT_500GMA, CT_GM45 } chipset_type; char * chipset_type_names[] = { "UNKNOWN", "830", "845G", "855GM", "865G", "915G", "915GM", "945G", "945GM", "945GME", - "946GZ", "G965", "Q965", "965GM", "G33", "Q33", "Q35", "500GMA" + "946GZ", "G965", "Q965", "965GM", "G33", "Q33", "Q35", "500GMA", "GM45" }; typedef enum { @@ -290,8 +290,12 @@ break; case 0x81008086: - type = CT_500GMA; - break; + type = CT_500GMA; + break; + + case 0x2a408086: + type = CT_GM45; + break; default: type = CT_UNKWN; @@ -531,6 +535,7 @@ case CT_Q35: case CT_Q33: case CT_500GMA: + case CT_GM45: outl(0x80000090, 0xcf8); map->b1 = inb(0xcfd); map->b2 = inb(0xcfe); @@ -577,6 +582,7 @@ case CT_Q35: case CT_Q33: case CT_500GMA: + case CT_GM45: outl(0x80000090, 0xcf8); outb(map->b1, 0xcfd); outb(map->b2, 0xcfe); @@ -840,6 +846,9 @@ else if (!strcmp(argv[index], "500GMA")) { *forced_chipset = CT_500GMA; } + else if (!strcmp(argv[index], "GM45")) { + *forced_chipset = CT_GM45; + } else { *forced_chipset = CT_UNKWN; }