diff options
-rw-r--r-- | man/nv.man | 22 | ||||
-rw-r--r-- | src/nv_driver.c | 33 | ||||
-rw-r--r-- | src/nv_hw.c | 15 |
3 files changed, 49 insertions, 21 deletions
@@ -1,4 +1,4 @@ -.\" $XFree86: xc/programs/Xserver/hw/xfree86/drivers/nv/nv.man,v 1.29 2006/01/21 01:17:59 mvojkovi Exp $ +.\" $XFree86: xc/programs/Xserver/hw/xfree86/drivers/nv/nv.man,v 1.30 2006/06/16 00:19:32 mvojkovi Exp $ .\" shorthand for double quote that works everywhere. .ds q \N'34' .TH NV __drivermansuffix__ __vendorversion__ @@ -24,7 +24,7 @@ the Riva128 which only supports TrueColor in the higher depths. .SH SUPPORTED HARDWARE The .B nv -driver supports PCI and AGP video cards based on the following NVIDIA chips: +driver supports PCI, PCI-Express and AGP video cards based on the following NVIDIA chips: .TP 22 .B RIVA 128 NV3 @@ -78,13 +78,12 @@ Enable or disable the HW cursor. Default: on. Disable or enable acceleration. Default: acceleration is enabled. .TP .BI "Option \*qUseFBDev\*q \*q" boolean \*q -Enable or disable use of on OS-specific fb interface (and is not supported +Enable or disable use of an OS-specific fb interface (and is not supported on all OSs). See fbdevhw(__drivermansuffix__) for further information. Default: off. .TP .BI "Option \*qCrtcNumber\*q \*q" integer \*q -GeForce2 MX, nForce2, Quadro4, GeForce4, Quadro FX and GeForce FX -may have two video outputs. +Many graphics cards with NVIDIA chips have two video outputs. The driver attempts to autodetect which one the monitor is connected to. In the case that autodetection picks the wrong one, this option may be used to force usage of a particular output. @@ -95,22 +94,21 @@ Default: autodetected. The driver usually can autodetect the presence of a digital flat panel. In the case that this fails, this option can be used to force the driver to treat the attached device as a digital flat panel. With this -driver, a digital flat panel will only work if it was POSTed by the BIOS, -that is, the -machine must have booted to the panel. If you have a dual head card +driver, a digital flat panel will work only if it was POSTed by the BIOS, +that is, the computer +must have booted to the panel. If you have a dual head card you may also need to set the option CrtcNumber described above. -Default: off. +Default: autodetected. .TP .BI "Option \*qFPDither\*q \*q" boolean \*q Many digital flat panels (particularly ones on laptops) have only 6 bits per component color resolution. This option tells the driver to dither from 8 bits per component to 6 before -the flat panel truncates it. This is only supported in depth 24 on GeForce2 MX, -nForce2, GeForce4, Quadro4, Geforce FX and Quadro FX. +the flat panel truncates it. Default: off. .TP .BI "Option \*qFPScale\*q \*q" boolean \*q -Supported only on GeForce4, Quadro4, Geforce FX and Quadro FX. This option +Supported only on GeForce4 and newer chips, this option tells to the driver to scale lower resolutions up to the flat panel's native resolution. Default: on. .TP 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]; |