diff options
| author | Antonino A. Daplas <adaplas@gmail.com> | 2007-07-17 07:05:30 -0400 |
|---|---|---|
| committer | Linus Torvalds <torvalds@woody.linux-foundation.org> | 2007-07-17 13:23:11 -0400 |
| commit | ac1ae162c9c400d63e62d9f2878be968b10ceaab (patch) | |
| tree | e9af6679ec144a1155122a83af892623f88a94db /drivers/video/nvidia | |
| parent | b5f2f4d1a6d7efde39cfb5e1d034981c69f2214c (diff) | |
nvidiafb: Add proper support for Geforce 7600 chipset
Add proper support for the Geforce 7600 (device id 0x039x). This also sync's
nvidiafb with the latest Xorg nv driver.
Signed-off-by: Antonino Daplas <adaplas@gmail.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Diffstat (limited to 'drivers/video/nvidia')
| -rw-r--r-- | drivers/video/nvidia/nv_hw.c | 62 | ||||
| -rw-r--r-- | drivers/video/nvidia/nv_setup.c | 12 | ||||
| -rw-r--r-- | drivers/video/nvidia/nv_type.h | 1 | ||||
| -rw-r--r-- | drivers/video/nvidia/nvidia.c | 7 |
4 files changed, 54 insertions, 28 deletions
diff --git a/drivers/video/nvidia/nv_hw.c b/drivers/video/nvidia/nv_hw.c index aff11bbf59a..d1a10549f54 100644 --- a/drivers/video/nvidia/nv_hw.c +++ b/drivers/video/nvidia/nv_hw.c | |||
| @@ -150,8 +150,7 @@ static void nvGetClocks(struct nvidia_par *par, unsigned int *MClk, | |||
| 150 | M = pll & 0xFF; | 150 | M = pll & 0xFF; |
| 151 | N = (pll >> 8) & 0xFF; | 151 | N = (pll >> 8) & 0xFF; |
| 152 | if (((par->Chipset & 0xfff0) == 0x0290) || | 152 | if (((par->Chipset & 0xfff0) == 0x0290) || |
| 153 | ((par->Chipset & 0xfff0) == 0x0390) || | 153 | ((par->Chipset & 0xfff0) == 0x0390)) { |
| 154 | ((par->Chipset & 0xfff0) == 0x02E0)) { | ||
| 155 | MB = 1; | 154 | MB = 1; |
| 156 | NB = 1; | 155 | NB = 1; |
| 157 | } else { | 156 | } else { |
| @@ -161,7 +160,7 @@ static void nvGetClocks(struct nvidia_par *par, unsigned int *MClk, | |||
| 161 | *MClk = ((N * NB * par->CrystalFreqKHz) / (M * MB)) >> P; | 160 | *MClk = ((N * NB * par->CrystalFreqKHz) / (M * MB)) >> P; |
| 162 | 161 | ||
| 163 | pll = NV_RD32(par->PMC, 0x4000); | 162 | pll = NV_RD32(par->PMC, 0x4000); |
| 164 | P = (pll >> 16) & 0x03; | 163 | P = (pll >> 16) & 0x07; |
| 165 | pll = NV_RD32(par->PMC, 0x4004); | 164 | pll = NV_RD32(par->PMC, 0x4004); |
| 166 | M = pll & 0xFF; | 165 | M = pll & 0xFF; |
| 167 | N = (pll >> 8) & 0xFF; | 166 | N = (pll >> 8) & 0xFF; |
| @@ -892,11 +891,17 @@ void NVCalcStateExt(struct nvidia_par *par, | |||
| 892 | state->general = bpp == 16 ? 0x00101100 : 0x00100100; | 891 | state->general = bpp == 16 ? 0x00101100 : 0x00100100; |
| 893 | state->repaint1 = hDisplaySize < 1280 ? 0x04 : 0x00; | 892 | state->repaint1 = hDisplaySize < 1280 ? 0x04 : 0x00; |
| 894 | break; | 893 | break; |
| 894 | case NV_ARCH_40: | ||
| 895 | if (!par->FlatPanel) | ||
| 896 | state->control = NV_RD32(par->PRAMDAC0, 0x0580) & | ||
| 897 | 0xeffffeff; | ||
| 898 | /* fallthrough */ | ||
| 895 | case NV_ARCH_10: | 899 | case NV_ARCH_10: |
| 896 | case NV_ARCH_20: | 900 | case NV_ARCH_20: |
| 897 | case NV_ARCH_30: | 901 | case NV_ARCH_30: |
| 898 | default: | 902 | default: |
| 899 | if ((par->Chipset & 0xfff0) == 0x0240) { | 903 | if ((par->Chipset & 0xfff0) == 0x0240 || |
| 904 | (par->Chipset & 0xfff0) == 0x03d0) { | ||
| 900 | state->arbitration0 = 256; | 905 | state->arbitration0 = 256; |
| 901 | state->arbitration1 = 0x0480; | 906 | state->arbitration1 = 0x0480; |
| 902 | } else if (((par->Chipset & 0xffff) == 0x01A0) || | 907 | } else if (((par->Chipset & 0xffff) == 0x01A0) || |
| @@ -939,7 +944,7 @@ void NVCalcStateExt(struct nvidia_par *par, | |||
| 939 | 944 | ||
| 940 | void NVLoadStateExt(struct nvidia_par *par, RIVA_HW_STATE * state) | 945 | void NVLoadStateExt(struct nvidia_par *par, RIVA_HW_STATE * state) |
| 941 | { | 946 | { |
| 942 | int i; | 947 | int i, j; |
| 943 | 948 | ||
| 944 | NV_WR32(par->PMC, 0x0140, 0x00000000); | 949 | NV_WR32(par->PMC, 0x0140, 0x00000000); |
| 945 | NV_WR32(par->PMC, 0x0200, 0xFFFF00FF); | 950 | NV_WR32(par->PMC, 0x0200, 0xFFFF00FF); |
| @@ -951,7 +956,8 @@ void NVLoadStateExt(struct nvidia_par *par, RIVA_HW_STATE * state) | |||
| 951 | NV_WR32(par->PTIMER, 0x0100 * 4, 0xFFFFFFFF); | 956 | NV_WR32(par->PTIMER, 0x0100 * 4, 0xFFFFFFFF); |
| 952 | 957 | ||
| 953 | if (par->Architecture == NV_ARCH_04) { | 958 | if (par->Architecture == NV_ARCH_04) { |
| 954 | NV_WR32(par->PFB, 0x0200, state->config); | 959 | if (state) |
| 960 | NV_WR32(par->PFB, 0x0200, state->config); | ||
| 955 | } else if ((par->Architecture < NV_ARCH_40) || | 961 | } else if ((par->Architecture < NV_ARCH_40) || |
| 956 | (par->Chipset & 0xfff0) == 0x0040) { | 962 | (par->Chipset & 0xfff0) == 0x0040) { |
| 957 | for (i = 0; i < 8; i++) { | 963 | for (i = 0; i < 8; i++) { |
| @@ -964,8 +970,9 @@ void NVLoadStateExt(struct nvidia_par *par, RIVA_HW_STATE * state) | |||
| 964 | 970 | ||
| 965 | if (((par->Chipset & 0xfff0) == 0x0090) || | 971 | if (((par->Chipset & 0xfff0) == 0x0090) || |
| 966 | ((par->Chipset & 0xfff0) == 0x01D0) || | 972 | ((par->Chipset & 0xfff0) == 0x01D0) || |
| 967 | ((par->Chipset & 0xfff0) == 0x02E0) || | 973 | ((par->Chipset & 0xfff0) == 0x0290) || |
| 968 | ((par->Chipset & 0xfff0) == 0x0290)) | 974 | ((par->Chipset & 0xfff0) == 0x0390) || |
| 975 | ((par->Chipset & 0xfff0) == 0x03D0)) | ||
| 969 | regions = 15; | 976 | regions = 15; |
| 970 | for(i = 0; i < regions; i++) { | 977 | for(i = 0; i < regions; i++) { |
| 971 | NV_WR32(par->PFB, 0x0600 + (i * 0x10), 0); | 978 | NV_WR32(par->PFB, 0x0600 + (i * 0x10), 0); |
| @@ -1206,16 +1213,20 @@ void NVLoadStateExt(struct nvidia_par *par, RIVA_HW_STATE * state) | |||
| 1206 | NV_WR32(par->PGRAPH, 0x0608, 0xFFFFFFFF); | 1213 | NV_WR32(par->PGRAPH, 0x0608, 0xFFFFFFFF); |
| 1207 | } else { | 1214 | } else { |
| 1208 | if (par->Architecture >= NV_ARCH_40) { | 1215 | if (par->Architecture >= NV_ARCH_40) { |
| 1209 | u32 tmp; | ||
| 1210 | |||
| 1211 | NV_WR32(par->PGRAPH, 0x0084, 0x401287c0); | 1216 | NV_WR32(par->PGRAPH, 0x0084, 0x401287c0); |
| 1212 | NV_WR32(par->PGRAPH, 0x008C, 0x60de8051); | 1217 | NV_WR32(par->PGRAPH, 0x008C, 0x60de8051); |
| 1213 | NV_WR32(par->PGRAPH, 0x0090, 0x00008000); | 1218 | NV_WR32(par->PGRAPH, 0x0090, 0x00008000); |
| 1214 | NV_WR32(par->PGRAPH, 0x0610, 0x00be3c5f); | 1219 | NV_WR32(par->PGRAPH, 0x0610, 0x00be3c5f); |
| 1220 | NV_WR32(par->PGRAPH, 0x0bc4, | ||
| 1221 | NV_RD32(par->PGRAPH, 0x0bc4) | | ||
| 1222 | 0x00008000); | ||
| 1215 | 1223 | ||
| 1216 | tmp = NV_RD32(par->REGS, 0x1540) & 0xff; | 1224 | j = NV_RD32(par->REGS, 0x1540) & 0xff; |
| 1217 | for(i = 0; tmp && !(tmp & 1); tmp >>= 1, i++); | 1225 | |
| 1218 | NV_WR32(par->PGRAPH, 0x5000, i); | 1226 | if (j) { |
| 1227 | for (i = 0; !(j & 1); j >>= 1, i++); | ||
| 1228 | NV_WR32(par->PGRAPH, 0x5000, i); | ||
| 1229 | } | ||
| 1219 | 1230 | ||
| 1220 | if ((par->Chipset & 0xfff0) == 0x0040) { | 1231 | if ((par->Chipset & 0xfff0) == 0x0040) { |
| 1221 | NV_WR32(par->PGRAPH, 0x09b0, | 1232 | NV_WR32(par->PGRAPH, 0x09b0, |
| @@ -1250,6 +1261,7 @@ void NVLoadStateExt(struct nvidia_par *par, RIVA_HW_STATE * state) | |||
| 1250 | case 0x0160: | 1261 | case 0x0160: |
| 1251 | case 0x01D0: | 1262 | case 0x01D0: |
| 1252 | case 0x0240: | 1263 | case 0x0240: |
| 1264 | case 0x03D0: | ||
| 1253 | NV_WR32(par->PMC, 0x1700, | 1265 | NV_WR32(par->PMC, 0x1700, |
| 1254 | NV_RD32(par->PFB, 0x020C)); | 1266 | NV_RD32(par->PFB, 0x020C)); |
| 1255 | NV_WR32(par->PMC, 0x1704, 0); | 1267 | NV_WR32(par->PMC, 0x1704, 0); |
| @@ -1269,7 +1281,6 @@ void NVLoadStateExt(struct nvidia_par *par, RIVA_HW_STATE * state) | |||
| 1269 | 0x00000108); | 1281 | 0x00000108); |
| 1270 | break; | 1282 | break; |
| 1271 | case 0x0220: | 1283 | case 0x0220: |
| 1272 | case 0x0230: | ||
| 1273 | NV_WR32(par->PGRAPH, 0x0860, 0); | 1284 | NV_WR32(par->PGRAPH, 0x0860, 0); |
| 1274 | NV_WR32(par->PGRAPH, 0x0864, 0); | 1285 | NV_WR32(par->PGRAPH, 0x0864, 0); |
| 1275 | NV_WR32(par->PRAMDAC, 0x0608, | 1286 | NV_WR32(par->PRAMDAC, 0x0608, |
| @@ -1277,8 +1288,8 @@ void NVLoadStateExt(struct nvidia_par *par, RIVA_HW_STATE * state) | |||
| 1277 | 0x00100000); | 1288 | 0x00100000); |
| 1278 | break; | 1289 | break; |
| 1279 | case 0x0090: | 1290 | case 0x0090: |
| 1280 | case 0x02E0: | ||
| 1281 | case 0x0290: | 1291 | case 0x0290: |
| 1292 | case 0x0390: | ||
| 1282 | NV_WR32(par->PRAMDAC, 0x0608, | 1293 | NV_WR32(par->PRAMDAC, 0x0608, |
| 1283 | NV_RD32(par->PRAMDAC, 0x0608) | | 1294 | NV_RD32(par->PRAMDAC, 0x0608) | |
| 1284 | 0x00100000); | 1295 | 0x00100000); |
| @@ -1355,8 +1366,9 @@ void NVLoadStateExt(struct nvidia_par *par, RIVA_HW_STATE * state) | |||
| 1355 | } else { | 1366 | } else { |
| 1356 | if (((par->Chipset & 0xfff0) == 0x0090) || | 1367 | if (((par->Chipset & 0xfff0) == 0x0090) || |
| 1357 | ((par->Chipset & 0xfff0) == 0x01D0) || | 1368 | ((par->Chipset & 0xfff0) == 0x01D0) || |
| 1358 | ((par->Chipset & 0xfff0) == 0x02E0) || | 1369 | ((par->Chipset & 0xfff0) == 0x0290) || |
| 1359 | ((par->Chipset & 0xfff0) == 0x0290)) { | 1370 | ((par->Chipset & 0xfff0) == 0x0390) || |
| 1371 | ((par->Chipset & 0xfff0) == 0x03D0)) { | ||
| 1360 | for (i = 0; i < 60; i++) { | 1372 | for (i = 0; i < 60; i++) { |
| 1361 | NV_WR32(par->PGRAPH, | 1373 | NV_WR32(par->PGRAPH, |
| 1362 | 0x0D00 + i*4, | 1374 | 0x0D00 + i*4, |
| @@ -1407,8 +1419,8 @@ void NVLoadStateExt(struct nvidia_par *par, RIVA_HW_STATE * state) | |||
| 1407 | } else { | 1419 | } else { |
| 1408 | if ((par->Chipset & 0xfff0) == 0x0090 || | 1420 | if ((par->Chipset & 0xfff0) == 0x0090 || |
| 1409 | (par->Chipset & 0xfff0) == 0x01D0 || | 1421 | (par->Chipset & 0xfff0) == 0x01D0 || |
| 1410 | (par->Chipset & 0xfff0) == 0x02E0 || | 1422 | (par->Chipset & 0xfff0) == 0x0290 || |
| 1411 | (par->Chipset & 0xfff0) == 0x0290) { | 1423 | (par->Chipset & 0xfff0) == 0x0390) { |
| 1412 | NV_WR32(par->PGRAPH, 0x0DF0, | 1424 | NV_WR32(par->PGRAPH, 0x0DF0, |
| 1413 | NV_RD32(par->PFB, 0x0200)); | 1425 | NV_RD32(par->PFB, 0x0200)); |
| 1414 | NV_WR32(par->PGRAPH, 0x0DF4, | 1426 | NV_WR32(par->PGRAPH, 0x0DF4, |
| @@ -1495,6 +1507,12 @@ void NVLoadStateExt(struct nvidia_par *par, RIVA_HW_STATE * state) | |||
| 1495 | NV_WR32(par->PFIFO, 0x0494 * 4, 0x00000001); | 1507 | NV_WR32(par->PFIFO, 0x0494 * 4, 0x00000001); |
| 1496 | NV_WR32(par->PFIFO, 0x0495 * 4, 0x00000001); | 1508 | NV_WR32(par->PFIFO, 0x0495 * 4, 0x00000001); |
| 1497 | NV_WR32(par->PFIFO, 0x0140 * 4, 0x00000001); | 1509 | NV_WR32(par->PFIFO, 0x0140 * 4, 0x00000001); |
| 1510 | |||
| 1511 | if (!state) { | ||
| 1512 | par->CurrentState = NULL; | ||
| 1513 | return; | ||
| 1514 | } | ||
| 1515 | |||
| 1498 | if (par->Architecture >= NV_ARCH_10) { | 1516 | if (par->Architecture >= NV_ARCH_10) { |
| 1499 | if (par->twoHeads) { | 1517 | if (par->twoHeads) { |
| 1500 | NV_WR32(par->PCRTC0, 0x0860, state->head); | 1518 | NV_WR32(par->PCRTC0, 0x0860, state->head); |
| @@ -1566,6 +1584,9 @@ void NVLoadStateExt(struct nvidia_par *par, RIVA_HW_STATE * state) | |||
| 1566 | VGA_WR08(par->PCIO, 0x03D5, state->interlace); | 1584 | VGA_WR08(par->PCIO, 0x03D5, state->interlace); |
| 1567 | 1585 | ||
| 1568 | if (!par->FlatPanel) { | 1586 | if (!par->FlatPanel) { |
| 1587 | if (par->Architecture >= NV_ARCH_40) | ||
| 1588 | NV_WR32(par->PRAMDAC0, 0x0580, state->control); | ||
| 1589 | |||
| 1569 | NV_WR32(par->PRAMDAC0, 0x050C, state->pllsel); | 1590 | NV_WR32(par->PRAMDAC0, 0x050C, state->pllsel); |
| 1570 | NV_WR32(par->PRAMDAC0, 0x0508, state->vpll); | 1591 | NV_WR32(par->PRAMDAC0, 0x0508, state->vpll); |
| 1571 | if (par->twoHeads) | 1592 | if (par->twoHeads) |
| @@ -1631,6 +1652,9 @@ void NVUnloadStateExt(struct nvidia_par *par, RIVA_HW_STATE * state) { | |||
| 1631 | state->scale = NV_RD32(par->PRAMDAC, 0x0848); | 1652 | state->scale = NV_RD32(par->PRAMDAC, 0x0848); |
| 1632 | state->config = NV_RD32(par->PFB, 0x0200); | 1653 | state->config = NV_RD32(par->PFB, 0x0200); |
| 1633 | 1654 | ||
| 1655 | if (par->Architecture >= NV_ARCH_40 && !par->FlatPanel) | ||
| 1656 | state->control = NV_RD32(par->PRAMDAC0, 0x0580); | ||
| 1657 | |||
| 1634 | if (par->Architecture >= NV_ARCH_10) { | 1658 | if (par->Architecture >= NV_ARCH_10) { |
| 1635 | if (par->twoHeads) { | 1659 | if (par->twoHeads) { |
| 1636 | state->head = NV_RD32(par->PCRTC0, 0x0860); | 1660 | state->head = NV_RD32(par->PCRTC0, 0x0860); |
diff --git a/drivers/video/nvidia/nv_setup.c b/drivers/video/nvidia/nv_setup.c index 707e2c8a13e..82579d3a997 100644 --- a/drivers/video/nvidia/nv_setup.c +++ b/drivers/video/nvidia/nv_setup.c | |||
| @@ -166,11 +166,13 @@ u8 NVReadDacData(struct nvidia_par *par) | |||
| 166 | static int NVIsConnected(struct nvidia_par *par, int output) | 166 | static int NVIsConnected(struct nvidia_par *par, int output) |
| 167 | { | 167 | { |
| 168 | volatile u32 __iomem *PRAMDAC = par->PRAMDAC0; | 168 | volatile u32 __iomem *PRAMDAC = par->PRAMDAC0; |
| 169 | u32 reg52C, reg608; | 169 | u32 reg52C, reg608, dac0_reg608 = 0; |
| 170 | int present; | 170 | int present; |
| 171 | 171 | ||
| 172 | if (output) | 172 | if (output) { |
| 173 | PRAMDAC += 0x800; | 173 | dac0_reg608 = NV_RD32(PRAMDAC, 0x0608); |
| 174 | PRAMDAC += 0x800; | ||
| 175 | } | ||
| 174 | 176 | ||
| 175 | reg52C = NV_RD32(PRAMDAC, 0x052C); | 177 | reg52C = NV_RD32(PRAMDAC, 0x052C); |
| 176 | reg608 = NV_RD32(PRAMDAC, 0x0608); | 178 | reg608 = NV_RD32(PRAMDAC, 0x0608); |
| @@ -194,8 +196,8 @@ static int NVIsConnected(struct nvidia_par *par, int output) | |||
| 194 | else | 196 | else |
| 195 | printk("nvidiafb: CRTC%i analog not found\n", output); | 197 | printk("nvidiafb: CRTC%i analog not found\n", output); |
| 196 | 198 | ||
| 197 | NV_WR32(par->PRAMDAC0, 0x0608, NV_RD32(par->PRAMDAC0, 0x0608) & | 199 | if (output) |
| 198 | 0x0000EFFF); | 200 | NV_WR32(par->PRAMDAC0, 0x0608, dac0_reg608); |
| 199 | 201 | ||
| 200 | NV_WR32(PRAMDAC, 0x052C, reg52C); | 202 | NV_WR32(PRAMDAC, 0x052C, reg52C); |
| 201 | NV_WR32(PRAMDAC, 0x0608, reg608); | 203 | NV_WR32(PRAMDAC, 0x0608, reg608); |
diff --git a/drivers/video/nvidia/nv_type.h b/drivers/video/nvidia/nv_type.h index 38f7cc0a233..2fdf77ec39f 100644 --- a/drivers/video/nvidia/nv_type.h +++ b/drivers/video/nvidia/nv_type.h | |||
| @@ -86,6 +86,7 @@ typedef struct _riva_hw_state { | |||
| 86 | u32 timingV; | 86 | u32 timingV; |
| 87 | u32 displayV; | 87 | u32 displayV; |
| 88 | u32 crtcSync; | 88 | u32 crtcSync; |
| 89 | u32 control; | ||
| 89 | } RIVA_HW_STATE; | 90 | } RIVA_HW_STATE; |
| 90 | 91 | ||
| 91 | struct riva_regs { | 92 | struct riva_regs { |
diff --git a/drivers/video/nvidia/nvidia.c b/drivers/video/nvidia/nvidia.c index 8c3a2536023..a7fe214f0f7 100644 --- a/drivers/video/nvidia/nvidia.c +++ b/drivers/video/nvidia/nvidia.c | |||
| @@ -1195,7 +1195,8 @@ static u32 __devinit nvidia_get_chipset(struct fb_info *info) | |||
| 1195 | 1195 | ||
| 1196 | printk(KERN_INFO PFX "Device ID: %x \n", id); | 1196 | printk(KERN_INFO PFX "Device ID: %x \n", id); |
| 1197 | 1197 | ||
| 1198 | if ((id & 0xfff0) == 0x00f0) { | 1198 | if ((id & 0xfff0) == 0x00f0 || |
| 1199 | (id & 0xfff0) == 0x02e0) { | ||
| 1199 | /* pci-e */ | 1200 | /* pci-e */ |
| 1200 | id = NV_RD32(par->REGS, 0x1800); | 1201 | id = NV_RD32(par->REGS, 0x1800); |
| 1201 | 1202 | ||
| @@ -1240,18 +1241,16 @@ static u32 __devinit nvidia_get_arch(struct fb_info *info) | |||
| 1240 | case 0x0040: /* GeForce 6800 */ | 1241 | case 0x0040: /* GeForce 6800 */ |
| 1241 | case 0x00C0: /* GeForce 6800 */ | 1242 | case 0x00C0: /* GeForce 6800 */ |
| 1242 | case 0x0120: /* GeForce 6800 */ | 1243 | case 0x0120: /* GeForce 6800 */ |
| 1243 | case 0x0130: | ||
| 1244 | case 0x0140: /* GeForce 6600 */ | 1244 | case 0x0140: /* GeForce 6600 */ |
| 1245 | case 0x0160: /* GeForce 6200 */ | 1245 | case 0x0160: /* GeForce 6200 */ |
| 1246 | case 0x01D0: /* GeForce 7200, 7300, 7400 */ | 1246 | case 0x01D0: /* GeForce 7200, 7300, 7400 */ |
| 1247 | case 0x02E0: /* GeForce 7300 GT */ | ||
| 1248 | case 0x0090: /* GeForce 7800 */ | 1247 | case 0x0090: /* GeForce 7800 */ |
| 1249 | case 0x0210: /* GeForce 6800 */ | 1248 | case 0x0210: /* GeForce 6800 */ |
| 1250 | case 0x0220: /* GeForce 6200 */ | 1249 | case 0x0220: /* GeForce 6200 */ |
| 1251 | case 0x0230: | ||
| 1252 | case 0x0240: /* GeForce 6100 */ | 1250 | case 0x0240: /* GeForce 6100 */ |
| 1253 | case 0x0290: /* GeForce 7900 */ | 1251 | case 0x0290: /* GeForce 7900 */ |
| 1254 | case 0x0390: /* GeForce 7600 */ | 1252 | case 0x0390: /* GeForce 7600 */ |
| 1253 | case 0x03D0: | ||
| 1255 | arch = NV_ARCH_40; | 1254 | arch = NV_ARCH_40; |
| 1256 | break; | 1255 | break; |
| 1257 | case 0x0020: /* TNT, TNT2 */ | 1256 | case 0x0020: /* TNT, TNT2 */ |
