summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorMark Vojkovich <markv@xfree86.org>2006-06-29 18:41:44 -0700
committerAaron Plattner <aplattner@nvidia.com>2006-06-29 18:41:44 -0700
commit6265b77dc8878e36abd76b73e209a2d76d70ba22 (patch)
tree4dd9882775e9dfef3fa144fc339af6bfc046d7e1 /src
parent5114639dff73c22845451acffed94f1da284a7df (diff)
New chip support and new PCI IDs.
Diffstat (limited to 'src')
-rw-r--r--src/nv_driver.c33
-rw-r--r--src/nv_hw.c15
2 files changed, 39 insertions, 9 deletions
diff --git a/src/nv_driver.c b/src/nv_driver.c
index cc36f38..f094e6b 100644
--- a/src/nv_driver.c
+++ b/src/nv_driver.c
@@ -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.142 2006/01/23 18:35:53 mvojkovi Exp $ */
+/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/nv/nv_driver.c,v 1.144 2006/06/16 00:19:32 mvojkovi Exp $ */
#include "nv_include.h"
@@ -91,7 +91,7 @@ _X_EXPORT DriverRec NV = {
0
};
-/* Known cards as of 2006/04/20 */
+/* Known cards as of 2006/06/16 */
static SymTabRec NVKnownChipsets[] =
{
@@ -228,6 +228,7 @@ static SymTabRec NVKnownChipsets[] =
{ 0x10DE0041, "GeForce 6800" },
{ 0x10DE0042, "GeForce 6800 LE" },
{ 0x10DE0043, "GeForce 6800 XE" },
+ { 0x10DE0044, "GeForce 6800 XT" },
{ 0x10DE0045, "GeForce 6800 GT" },
{ 0x10DE0046, "GeForce 6800 GT" },
{ 0x10DE0047, "GeForce 6800 GS" },
@@ -255,6 +256,7 @@ static SymTabRec NVKnownChipsets[] =
{ 0x10DE0148, "GeForce Go 6600" },
{ 0x10DE0149, "GeForce Go 6600 GT" },
{ 0x10DE014C, "Quadro FX 550" },
+ { 0x10DE014D, "Quadro FX 550" },
{ 0x10DE014E, "Quadro FX 540" },
{ 0x10DE014F, "GeForce 6200" },
@@ -275,6 +277,7 @@ static SymTabRec NVKnownChipsets[] =
{ 0x10DE0218, "GeForce 6800 XT" },
{ 0x10DE0221, "GeForce 6200" },
+ { 0x10DE0222, "GeForce 6200 A-LE" },
{ 0x10DE0090, "GeForce 7800 GTX" },
{ 0x10DE0091, "GeForce 7800 GTX" },
@@ -286,21 +289,34 @@ static SymTabRec NVKnownChipsets[] =
{ 0x10DE009D, "Quadro FX 4500" },
{ 0x10DE01D1, "GeForce 7300 LE" },
+ { 0x10DE01D3, "GeForce 7300 SE" },
{ 0x10DE01D6, "GeForce Go 7200" },
{ 0x10DE01D7, "GeForce Go 7300" },
{ 0x10DE01D8, "GeForce Go 7400" },
+ { 0x10DE01D9, "GeForce Go 7400 GS" },
{ 0x10DE01DA, "Quadro NVS 110M" },
{ 0x10DE01DB, "Quadro NVS 120M" },
{ 0x10DE01DC, "Quadro FX 350M" },
+ { 0x10DE01DD, "GeForce 7500 LE" },
{ 0x10DE01DE, "Quadro FX 350" },
{ 0x10DE01DF, "GeForce 7300 GS" },
+ { 0x10DE0391, "GeForce 7600 GT" },
+ { 0x10DE0392, "GeForce 7600 GS" },
+ { 0x10DE0393, "GeForce 7300 GT" },
+ { 0x10DE0394, "GeForce 7600 LE" },
+ { 0x10DE0395, "GeForce 7300 GT" },
+ { 0x10DE0397, "GeForce Go 7700" },
{ 0x10DE0398, "GeForce Go 7600" },
{ 0x10DE0399, "GeForce Go 7600 GT"},
{ 0x10DE039A, "Quadro NVS 300M" },
+ { 0x10DE039B, "GeForce Go 7900 SE" },
{ 0x10DE039C, "Quadro FX 550M" },
{ 0x10DE039E, "Quadro FX 560" },
+ { 0x10DE0290, "GeForce 7900 GTX" },
+ { 0x10DE0291, "GeForce 7900 GT" },
+ { 0x10DE0292, "GeForce 7900 GS" },
{ 0x10DE0298, "GeForce Go 7900 GS" },
{ 0x10DE0299, "GeForce Go 7900 GTX" },
{ 0x10DE029A, "Quadro FX 2500M" },
@@ -308,6 +324,7 @@ static SymTabRec NVKnownChipsets[] =
{ 0x10DE029C, "Quadro FX 5500" },
{ 0x10DE029D, "Quadro FX 3500" },
{ 0x10DE029E, "Quadro FX 1500" },
+ { 0x10DE029F, "Quadro FX 4500 X2" },
{ 0x10DE0240, "GeForce 6150" },
{ 0x10DE0241, "GeForce 6150 LE" },
@@ -672,8 +689,11 @@ NVProbe(DriverPtr drv, int flags)
int pciid = ((*ppPci)->vendor << 16) | (*ppPci)->chipType;
int token = pciid;
- if((token & 0xfff0) == 0x00F0)
+ if(((token & 0xfff0) == 0x00F0) ||
+ ((token & 0xfff0) == 0x02E0))
+ {
token = NVGetPCIXpressChip(*ppPci);
+ }
while(nvchips->name) {
if(token == nvchips->token)
@@ -713,6 +733,7 @@ NVProbe(DriverPtr drv, int flags)
case 0x0240:
case 0x0290:
case 0x0390:
+ case 0x03D0:
NVChipsets[numUsed].token = pciid;
NVChipsets[numUsed].name = "Unknown NVIDIA chip";
NVPciChipsets[numUsed].numChipset = pciid;
@@ -1069,8 +1090,11 @@ NVPreInit(ScrnInfoPtr pScrn, int flags)
from = X_PROBED;
pNv->Chipset = (pNv->PciInfo->vendor << 16) | pNv->PciInfo->chipType;
- if((pNv->Chipset & 0xfff0) == 0x00F0)
+ if(((pNv->Chipset & 0xfff0) == 0x00F0) ||
+ ((pNv->Chipset & 0xfff0) == 0x02E0))
+ {
pNv->Chipset = NVGetPCIXpressChip(pNv->PciInfo);
+ }
pScrn->chipset = (char *)xf86TokenToString(NVKnownChipsets,
pNv->Chipset);
@@ -1429,6 +1453,7 @@ NVPreInit(ScrnInfoPtr pScrn, int flags)
case 0x0290: /* GeForce 7900 */
case 0x0390: /* GeForce 7600 */
case 0x0240: /* GeForce 6100 */
+ case 0x03D0:
pNv->Architecture = NV_ARCH_40;
break;
default:
diff --git a/src/nv_hw.c b/src/nv_hw.c
index dd4a8f8..ab703f1 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.20 2006/01/21 01:17:59 mvojkovi Exp $ */
+/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/nv/nv_hw.c,v 1.21 2006/06/16 00:19:33 mvojkovi Exp $ */
#ifdef HAVE_CONFIG_H
#include "config.h"
@@ -882,8 +882,10 @@ void NVCalcStateExt (
case NV_ARCH_20:
case NV_ARCH_30:
default:
- if((pNv->Chipset & 0xfff0) == 0x0240) {
- state->arbitration0 = 256;
+ if(((pNv->Chipset & 0xfff0) == 0x0240) ||
+ ((pNv->Chipset & 0xfff0) == 0x03D0))
+ {
+ state->arbitration0 = 128;
state->arbitration1 = 0x0480;
} else
if(((pNv->Chipset & 0xffff) == 0x01A0) ||
@@ -957,7 +959,8 @@ void NVLoadStateExt (
if(((pNv->Chipset & 0xfff0) == 0x0090) ||
((pNv->Chipset & 0xfff0) == 0x01D0) ||
((pNv->Chipset & 0xfff0) == 0x0290) ||
- ((pNv->Chipset & 0xfff0) == 0x0390))
+ ((pNv->Chipset & 0xfff0) == 0x0390) ||
+ ((pNv->Chipset & 0xfff0) == 0x03D0))
{
regions = 15;
}
@@ -1213,6 +1216,7 @@ void NVLoadStateExt (
case 0x0160:
case 0x01D0:
case 0x0240:
+ case 0x03D0:
pNv->PMC[0x1700/4] = pNv->PFB[0x020C/4];
pNv->PMC[0x1704/4] = 0;
pNv->PMC[0x1708/4] = 0;
@@ -1291,7 +1295,8 @@ void NVLoadStateExt (
if(((pNv->Chipset & 0xfff0) == 0x0090) ||
((pNv->Chipset & 0xfff0) == 0x01D0) ||
((pNv->Chipset & 0xfff0) == 0x0290) ||
- ((pNv->Chipset & 0xfff0) == 0x0390))
+ ((pNv->Chipset & 0xfff0) == 0x0390) ||
+ ((pNv->Chipset & 0xfff0) == 0x03D0))
{
for(i = 0; i < 60; i++) {
pNv->PGRAPH[(0x0D00/4) + i] = pNv->PFB[(0x0600/4) + i];