summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog8
-rw-r--r--man/nv.man7
-rw-r--r--src/nv_driver.c124
-rw-r--r--src/nv_hw.c36
4 files changed, 99 insertions, 76 deletions
diff --git a/ChangeLog b/ChangeLog
index 9843f9d..88c79fa 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,11 @@
+2006-01-22 Aaron Plattner <aplattner@nvidia.com>
+
+ * man/nv.man:
+ * src/nv_driver.c: (NVProbe), (NVPreInit):
+ * src/nv_hw.c: (nvGetClocks), (NVCalcStateExt), (NVLoadStateExt):
+ New chip support from Mark Vojkovich's 2006-01-20 and 2006-01-21 XFree86 CVS
+ updates.
+
2006-01-01 Aaron Plattner <aplattner@nvidia.com>
* man/nv.man:
diff --git a/man/nv.man b/man/nv.man
index c63cb66..9747bc4 100644
--- a/man/nv.man
+++ b/man/nv.man
@@ -1,4 +1,4 @@
-.\" $XFree86: xc/programs/Xserver/hw/xfree86/drivers/nv/nv.man,v 1.27 2005/07/09 00:52:59 mvojkovi Exp $
+.\" $XFree86: xc/programs/Xserver/hw/xfree86/drivers/nv/nv.man,v 1.29 2006/01/21 01:17:59 mvojkovi Exp $
.\" shorthand for double quote that works everywhere.
.ds q \N'34'
.TH NV __drivermansuffix__ __vendorversion__
@@ -54,10 +54,11 @@ NV17, NV18, NV25, NV28
NV30, NV31, NV34, NV35, NV36, NV37, NV38
.TP 22
.B GeForce 6XXX
-NV40, NV41, NV43, NV44, NV45
+NV40, NV41, NV43, NV44, NV45, C51
.TP 22
.B GeForce 7XXX
-G70
+G70, G71, G72, G73
+
.SH CONFIGURATION DETAILS
Please refer to __xconfigfile__(__filemansuffix__) for general configuration
details. This section only covers configuration details specific to this
diff --git a/src/nv_driver.c b/src/nv_driver.c
index 8e19c01..d08f8d5 100644
--- a/src/nv_driver.c
+++ b/src/nv_driver.c
@@ -1,4 +1,4 @@
-/* $XdotOrg: driver/xf86-video-nv/src/nv_driver.c,v 1.18 2005/09/29 21:47:29 aplattner Exp $ */
+/* $XdotOrg: driver/xf86-video-nv/src/nv_driver.c,v 1.19 2006/01/02 01:54:19 aplattner Exp $ */
/* $XConsortium: nv_driver.c /main/3 1996/10/28 05:13:37 kaleb $ */
/*
* Copyright 1996-1997 David J. McKay
@@ -29,7 +29,7 @@
/* Hacked together from mga driver and 3.3.4 NVIDIA driver by Jarno Paananen
<jpaana@s2.org> */
-/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/nv/nv_driver.c,v 1.137 2005/09/14 02:28:03 mvojkovi Exp $ */
+/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/nv/nv_driver.c,v 1.141 2006/01/21 01:17:59 mvojkovi Exp $ */
#include "nv_include.h"
@@ -91,7 +91,7 @@ _X_EXPORT DriverRec NV = {
0
};
-/* Known cards as of 2005/09/21 */
+/* Known cards as of 2006/01/12 */
static SymTabRec NVKnownChipsets[] =
{
@@ -137,7 +137,7 @@ static SymTabRec NVKnownChipsets[] =
#else
{ 0x10DE0179, "GeForce4 440 Go 64M" },
#endif
- { 0x10DE017A, "Quadro4 NVS" },
+ { 0x10DE017A, "Quadro NVS" },
{ 0x10DE017C, "Quadro4 500 GoGL" },
{ 0x10DE017D, "GeForce4 410 Go 16M" },
@@ -151,7 +151,7 @@ static SymTabRec NVKnownChipsets[] =
#if defined(__powerpc__)
{ 0x10DE0189, "GeForce4 MX with AGP8X (Mac)" },
#endif
- { 0x10DE018A, "Quadro4 280 NVS" },
+ { 0x10DE018A, "Quadro4 NVS 280 SD" },
{ 0x10DE018B, "Quadro4 380 XGL" },
{ 0x10DE018C, "Quadro NVS 50 PCI" },
{ 0x10DE018D, "GeForce4 448 Go" },
@@ -165,7 +165,6 @@ static SymTabRec NVKnownChipsets[] =
{ 0x10DE0250, "GeForce4 Ti 4600" },
{ 0x10DE0251, "GeForce4 Ti 4400" },
- { 0x10DE0252, "0x0252" },
{ 0x10DE0253, "GeForce4 Ti 4200" },
{ 0x10DE0258, "Quadro4 900 XGL" },
{ 0x10DE0259, "Quadro4 750 XGL" },
@@ -186,21 +185,15 @@ static SymTabRec NVKnownChipsets[] =
{ 0x10DE0311, "GeForce FX 5600 Ultra" },
{ 0x10DE0312, "GeForce FX 5600" },
- { 0x10DE0313, "0x0313"},
- { 0x10DE0314, "GeForce FX 5600SE" },
- { 0x10DE0316, "0x0316" },
- { 0x10DE0317, "0x0317" },
+ { 0x10DE0314, "GeForce FX 5600XT" },
{ 0x10DE031A, "GeForce FX Go5600" },
{ 0x10DE031B, "GeForce FX Go5650" },
{ 0x10DE031C, "Quadro FX Go700" },
- { 0x10DE031D, "0x031D" },
- { 0x10DE031E, "0x031E" },
- { 0x10DE031F, "0x031F" },
{ 0x10DE0320, "GeForce FX 5200" },
{ 0x10DE0321, "GeForce FX 5200 Ultra" },
{ 0x10DE0322, "GeForce FX 5200" },
- { 0x10DE0323, "GeForce FX 5200SE" },
+ { 0x10DE0323, "GeForce FX 5200LE" },
{ 0x10DE0324, "GeForce FX Go5200" },
{ 0x10DE0325, "GeForce FX Go5250" },
{ 0x10DE0326, "GeForce FX 5500" },
@@ -208,47 +201,40 @@ static SymTabRec NVKnownChipsets[] =
{ 0x10DE0328, "GeForce FX Go5200 32M/64M" },
#if defined(__powerpc__)
{ 0x10DE0329, "GeForce FX 5200 (Mac)" },
-#else
- { 0x10DE0329, "0x0329" },
#endif
{ 0x10DE032A, "Quadro NVS 55/280 PCI" },
{ 0x10DE032B, "Quadro FX 500/600 PCI" },
{ 0x10DE032C, "GeForce FX Go53xx Series" },
{ 0x10DE032D, "GeForce FX Go5100" },
- { 0x10DE032F, "0x032F" },
{ 0x10DE0330, "GeForce FX 5900 Ultra" },
{ 0x10DE0331, "GeForce FX 5900" },
{ 0x10DE0332, "GeForce FX 5900XT" },
{ 0x10DE0333, "GeForce FX 5950 Ultra" },
- { 0x10DE033F, "Quadro FX 700" },
{ 0x10DE0334, "GeForce FX 5900ZT" },
{ 0x10DE0338, "Quadro FX 3000" },
+ { 0x10DE033F, "Quadro FX 700" },
{ 0x10DE0341, "GeForce FX 5700 Ultra" },
{ 0x10DE0342, "GeForce FX 5700" },
{ 0x10DE0343, "GeForce FX 5700LE" },
{ 0x10DE0344, "GeForce FX 5700VE" },
- { 0x10DE0345, "0x0345" },
{ 0x10DE0347, "GeForce FX Go5700" },
{ 0x10DE0348, "GeForce FX Go5700" },
- { 0x10DE0349, "0x0349" },
- { 0x10DE034B, "0x034B" },
{ 0x10DE034C, "Quadro FX Go1000" },
{ 0x10DE034E, "Quadro FX 1100" },
- { 0x10DE034F, "0x034F" },
{ 0x10DE0040, "GeForce 6800 Ultra" },
{ 0x10DE0041, "GeForce 6800" },
{ 0x10DE0042, "GeForce 6800 LE" },
- { 0x10DE0043, "0x0043" },
+ { 0x10DE0043, "GeForce 6800 XE" },
{ 0x10DE0045, "GeForce 6800 GT" },
{ 0x10DE0046, "GeForce 6800 GT" },
+ { 0x10DE0047, "GeForce 6800 GS" },
{ 0x10DE0048, "GeForce 6800 XT" },
- { 0x10DE0049, "0x0049" },
{ 0x10DE004E, "Quadro FX 4000" },
- { 0x10DE00C0, "0x00C0" },
+ { 0x10DE00C0, "GeForce 6800 GS" },
{ 0x10DE00C1, "GeForce 6800" },
{ 0x10DE00C2, "GeForce 6800 LE" },
{ 0x10DE00C3, "GeForce 6800 XT" },
@@ -261,16 +247,13 @@ static SymTabRec NVKnownChipsets[] =
{ 0x10DE0140, "GeForce 6600 GT" },
{ 0x10DE0141, "GeForce 6600" },
{ 0x10DE0142, "GeForce 6600 LE" },
- { 0x10DE0143, "0x0143" },
+ { 0x10DE0143, "GeForce 6600 VE" },
{ 0x10DE0144, "GeForce Go 6600" },
{ 0x10DE0145, "GeForce 6610 XL" },
{ 0x10DE0146, "GeForce Go 6600 TE/6200 TE" },
{ 0x10DE0147, "GeForce 6700 XL" },
{ 0x10DE0148, "GeForce Go 6600" },
{ 0x10DE0149, "GeForce Go 6600 GT" },
- { 0x10DE014B, "0x014B" },
- { 0x10DE014C, "0x014C" },
- { 0x10DE014D, "0x014D" },
{ 0x10DE014E, "Quadro FX 540" },
{ 0x10DE014F, "GeForce 6200" },
@@ -284,32 +267,49 @@ static SymTabRec NVKnownChipsets[] =
{ 0x10DE0167, "GeForce Go 6200" },
{ 0x10DE0168, "GeForce Go 6400" },
{ 0x10DE0169, "GeForce 6250" },
- { 0x10DE016B, "0x016B" },
- { 0x10DE016C, "0x016C" },
- { 0x10DE016D, "0x016D" },
- { 0x10DE016E, "0x016E" },
- { 0x10DE0210, "0x0210" },
{ 0x10DE0211, "GeForce 6800" },
{ 0x10DE0212, "GeForce 6800 LE" },
{ 0x10DE0215, "GeForce 6800 GT" },
+ { 0x10DE0218, "GeForce 6800 XT" },
- { 0x10DE0220, "0x0220" },
{ 0x10DE0221, "GeForce 6200" },
- { 0x10DE0222, "0x0222" },
- { 0x10DE0228, "0x0228" },
- { 0x10DE0090, "0x0090" },
+ { 0x10DE0090, "GeForce 7800 GTX" },
{ 0x10DE0091, "GeForce 7800 GTX" },
{ 0x10DE0092, "GeForce 7800 GT" },
- { 0x10DE0093, "0x0093" },
- { 0x10DE0094, "0x0094" },
+ { 0x10DE0093, "GeForce 7800 GS" },
+ { 0x10DE0095, "GeForce 7800 SLI" },
{ 0x10DE0098, "GeForce Go 7800" },
{ 0x10DE0099, "GeForce Go 7800 GTX" },
- { 0x10DE009C, "0x009C" },
{ 0x10DE009D, "Quadro FX 4500" },
- { 0x10DE009E, "0x009E" },
-
+
+ { 0x10DE01D1, "GeForce 7300 LE" },
+ { 0x10DE01D6, "GeForce Go 7200" },
+ { 0x10DE01D7, "GeForce Go 7300" },
+ { 0x10DE01D8, "GeForce Go 7400" },
+ { 0x10DE01DA, "Quadro NVS 110M" },
+ { 0x10DE01DB, "Quadro NVS 120M" },
+ { 0x10DE01DC, "Quadro FX 350M" },
+ { 0x10DE01DE, "Quadro FX 350" },
+ { 0x10DE01DF, "GeForce 7300 GS" },
+
+ { 0x10DE0398, "GeForce Go 7600" },
+ { 0x10DE0399, "GeForce Go 7600 GT"},
+ { 0x10DE039A, "Quadro NVS 300M" },
+ { 0x10DE039C, "Quadro FX 550M" },
+
+ { 0x10DE0298, "GeForce Go 7900 GS" },
+ { 0x10DE0299, "GeForce Go 7900 GTX" },
+ { 0x10DE029A, "Quadro FX 2500M" },
+ { 0x10DE029B, "Quadro FX 1500M" },
+
+ { 0x10DE0240, "GeForce 6150" },
+ { 0x10DE0241, "GeForce 6150 LE" },
+ { 0x10DE0241, "GeForce 6100" },
+ { 0x10DE0244, "GeForce Go 6150" },
+ { 0x10DE0247, "GeForce Go 6100" },
+
{-1, NULL}
};
@@ -701,12 +701,11 @@ NVProbe(DriverPtr drv, int flags)
case 0x0120:
case 0x0140:
case 0x0160:
- case 0x0130:
case 0x01D0:
case 0x0090:
case 0x0210:
case 0x0220:
- case 0x0230:
+ case 0x0240:
case 0x0290:
case 0x0390:
NVChipsets[numUsed].token = pciid;
@@ -1398,26 +1397,25 @@ NVPreInit(ScrnInfoPtr pScrn, int flags)
case 0x0280: /* GeForce4 Ti (8x AGP) */
pNv->Architecture = NV_ARCH_20;
break;
- case 0x0300: /* GeForceFX 5800 */
- case 0x0310: /* GeForceFX 5600 */
- case 0x0320: /* GeForceFX 5200 */
- case 0x0330: /* GeForceFX 5900 */
- case 0x0340: /* GeForceFX 5700 */
+ case 0x0300: /* GeForce FX 5800 */
+ case 0x0310: /* GeForce FX 5600 */
+ case 0x0320: /* GeForce FX 5200 */
+ case 0x0330: /* GeForce FX 5900 */
+ case 0x0340: /* GeForce FX 5700 */
pNv->Architecture = NV_ARCH_30;
break;
- case 0x0040:
- case 0x00C0:
- case 0x0120:
- case 0x0130:
- case 0x0140:
- case 0x0160:
- case 0x01D0:
- case 0x0090:
- case 0x0210:
- case 0x0220:
- case 0x0230:
- case 0x0290:
- case 0x0390:
+ case 0x0040: /* GeForce 6800 */
+ case 0x00C0: /* GeForce 6800 */
+ case 0x0120: /* GeForce 6800 */
+ case 0x0140: /* GeForce 6600 */
+ case 0x0160: /* GeForce 6200 */
+ case 0x01D0: /* GeForce 7200, 7300, 7400 */
+ case 0x0090: /* GeForce 7800 */
+ case 0x0210: /* GeForce 6800 */
+ case 0x0220: /* GeForce 6200 */
+ case 0x0290: /* GeForce 7900 */
+ case 0x0390: /* GeForce 7600 */
+ case 0x0240: /* GeForce 6100 */
pNv->Architecture = NV_ARCH_40;
break;
default:
diff --git a/src/nv_hw.c b/src/nv_hw.c
index 4fcdc79..dd4a8f8 100644
--- a/src/nv_hw.c
+++ b/src/nv_hw.c
@@ -36,7 +36,7 @@
|* those rights set forth herein. *|
|* *|
\***************************************************************************/
-/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/nv/nv_hw.c,v 1.17 2005/09/22 20:34:42 mvojkovi Exp $ */
+/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/nv/nv_hw.c,v 1.20 2006/01/21 01:17:59 mvojkovi Exp $ */
#ifdef HAVE_CONFIG_H
#include "config.h"
@@ -144,16 +144,23 @@ static void nvGetClocks(NVPtr pNv, unsigned int *MClk, unsigned int *NVClk)
if(pNv->Architecture >= NV_ARCH_40) {
pll = pNv->PMC[0x4020/4];
- P = (pll >> 16) & 0x03;
+ P = (pll >> 16) & 0x07;
pll = pNv->PMC[0x4024/4];
M = pll & 0xFF;
N = (pll >> 8) & 0xFF;
- MB = (pll >> 16) & 0xFF;
- NB = (pll >> 24) & 0xFF;
+ if(((pNv->Chipset & 0xfff0) == 0x0290) ||
+ ((pNv->Chipset & 0xfff0) == 0x0390))
+ {
+ MB = 1;
+ NB = 1;
+ } else {
+ MB = (pll >> 16) & 0xFF;
+ NB = (pll >> 24) & 0xFF;
+ }
*MClk = ((N * NB * pNv->CrystalFreqKHz) / (M * MB)) >> P;
pll = pNv->PMC[0x4000/4];
- P = (pll >> 16) & 0x03;
+ P = (pll >> 16) & 0x07;
pll = pNv->PMC[0x4004/4];
M = pll & 0xFF;
N = (pll >> 8) & 0xFF;
@@ -875,6 +882,10 @@ void NVCalcStateExt (
case NV_ARCH_20:
case NV_ARCH_30:
default:
+ if((pNv->Chipset & 0xfff0) == 0x0240) {
+ state->arbitration0 = 256;
+ state->arbitration1 = 0x0480;
+ } else
if(((pNv->Chipset & 0xffff) == 0x01A0) ||
((pNv->Chipset & 0xffff) == 0x01f0))
{
@@ -945,7 +956,8 @@ void NVLoadStateExt (
if(((pNv->Chipset & 0xfff0) == 0x0090) ||
((pNv->Chipset & 0xfff0) == 0x01D0) ||
- ((pNv->Chipset & 0xfff0) == 0x0290))
+ ((pNv->Chipset & 0xfff0) == 0x0290) ||
+ ((pNv->Chipset & 0xfff0) == 0x0390))
{
regions = 15;
}
@@ -1200,6 +1212,7 @@ void NVLoadStateExt (
break;
case 0x0160:
case 0x01D0:
+ case 0x0240:
pNv->PMC[0x1700/4] = pNv->PFB[0x020C/4];
pNv->PMC[0x1704/4] = 0;
pNv->PMC[0x1708/4] = 0;
@@ -1213,13 +1226,13 @@ void NVLoadStateExt (
pNv->PGRAPH[0x082C/4] = 0x00000108;
break;
case 0x0220:
- case 0x0230:
pNv->PGRAPH[0x0860/4] = 0;
pNv->PGRAPH[0x0864/4] = 0;
pNv->PRAMDAC[0x0608/4] |= 0x00100000;
break;
case 0x0090:
case 0x0290:
+ case 0x0390:
pNv->PRAMDAC[0x0608/4] |= 0x00100000;
pNv->PGRAPH[0x0828/4] = 0x07830610;
pNv->PGRAPH[0x082C/4] = 0x0000016A;
@@ -1277,7 +1290,8 @@ void NVLoadStateExt (
} else {
if(((pNv->Chipset & 0xfff0) == 0x0090) ||
((pNv->Chipset & 0xfff0) == 0x01D0) ||
- ((pNv->Chipset & 0xfff0) == 0x0290))
+ ((pNv->Chipset & 0xfff0) == 0x0290) ||
+ ((pNv->Chipset & 0xfff0) == 0x0390))
{
for(i = 0; i < 60; i++) {
pNv->PGRAPH[(0x0D00/4) + i] = pNv->PFB[(0x0600/4) + i];
@@ -1287,7 +1301,8 @@ void NVLoadStateExt (
for(i = 0; i < 48; i++) {
pNv->PGRAPH[(0x0900/4) + i] = pNv->PFB[(0x0600/4) + i];
if(((pNv->Chipset & 0xfff0) != 0x0160) &&
- ((pNv->Chipset & 0xfff0) != 0x0220))
+ ((pNv->Chipset & 0xfff0) != 0x0220) &&
+ ((pNv->Chipset & 0xfff0) != 0x0240))
{
pNv->PGRAPH[(0x6900/4) + i] = pNv->PFB[(0x0600/4) + i];
}
@@ -1309,7 +1324,8 @@ void NVLoadStateExt (
} else {
if(((pNv->Chipset & 0xfff0) == 0x0090) ||
((pNv->Chipset & 0xfff0) == 0x01D0) ||
- ((pNv->Chipset & 0xfff0) == 0x0290))
+ ((pNv->Chipset & 0xfff0) == 0x0290) ||
+ ((pNv->Chipset & 0xfff0) == 0x0390))
{
pNv->PGRAPH[0x0DF0/4] = pNv->PFB[0x0200/4];
pNv->PGRAPH[0x0DF4/4] = pNv->PFB[0x0204/4];