aboutsummaryrefslogtreecommitdiffstats
path: root/x11-servers/xorg-server-snap/files/patch-nv-update.diff
diff options
context:
space:
mode:
Diffstat (limited to 'x11-servers/xorg-server-snap/files/patch-nv-update.diff')
-rw-r--r--x11-servers/xorg-server-snap/files/patch-nv-update.diff268
1 files changed, 268 insertions, 0 deletions
diff --git a/x11-servers/xorg-server-snap/files/patch-nv-update.diff b/x11-servers/xorg-server-snap/files/patch-nv-update.diff
new file mode 100644
index 00000000000..177ea467576
--- /dev/null
+++ b/x11-servers/xorg-server-snap/files/patch-nv-update.diff
@@ -0,0 +1,268 @@
+Index: nv_driver.c
+===================================================================
+RCS file: /cvs/xorg/xc/programs/Xserver/hw/xfree86/drivers/nv/nv_driver.c,v
+retrieving revision 1.16
+retrieving revision 1.18
+diff -u -u -r1.16 -r1.18
+--- programs/Xserver/hw/xfree86/drivers/nv/nv_driver.c 11 Jul 2005 02:29:57 -0000 1.16
++++ programs/Xserver/hw/xfree86/drivers/nv/nv_driver.c 29 Sep 2005 21:47:29 -0000 1.18
+@@ -1,4 +1,4 @@
+-/* $XdotOrg: xc/programs/Xserver/hw/xfree86/drivers/nv/nv_driver.c,v 1.16 2005/07/11 02:29:57 ajax Exp $ */
++/* $XdotOrg: xc/programs/Xserver/hw/xfree86/drivers/nv/nv_driver.c,v 1.18 2005/09/29 21:47:29 aplattner Exp $ */
+ /* $XConsortium: nv_driver.c /main/3 1996/10/28 05:13:37 kaleb $ */
+ /*
+ * Copyright 1996-1997 David J. McKay
+@@ -87,6 +87,8 @@
+ 0
+ };
+
++/* Known cards as of 2005/09/21 */
++
+ static SymTabRec NVKnownChipsets[] =
+ {
+ { 0x12D20018, "RIVA 128" },
+@@ -205,7 +207,7 @@
+ #else
+ { 0x10DE0329, "0x0329" },
+ #endif
+- { 0x10DE032A, "Quadro NVS 280 PCI" },
++ { 0x10DE032A, "Quadro NVS 55/280 PCI" },
+ { 0x10DE032B, "Quadro FX 500/600 PCI" },
+ { 0x10DE032C, "GeForce FX Go53xx Series" },
+ { 0x10DE032D, "GeForce FX Go5100" },
+@@ -238,12 +240,14 @@
+ { 0x10DE0043, "0x0043" },
+ { 0x10DE0045, "GeForce 6800 GT" },
+ { 0x10DE0046, "GeForce 6800 GT" },
++ { 0x10DE0048, "GeForce 6800 XT" },
+ { 0x10DE0049, "0x0049" },
+ { 0x10DE004E, "Quadro FX 4000" },
+
+ { 0x10DE00C0, "0x00C0" },
+ { 0x10DE00C1, "GeForce 6800" },
+ { 0x10DE00C2, "GeForce 6800 LE" },
++ { 0x10DE00C3, "GeForce 6800 XT" },
+ { 0x10DE00C8, "GeForce Go 6800" },
+ { 0x10DE00C9, "GeForce Go 6800 Ultra" },
+ { 0x10DE00CC, "Quadro FX Go1400" },
+@@ -266,16 +270,16 @@
+ { 0x10DE014E, "Quadro FX 540" },
+ { 0x10DE014F, "GeForce 6200" },
+
+- { 0x10DE0160, "0x0160" },
++ { 0x10DE0160, "GeForce 6500" },
+ { 0x10DE0161, "GeForce 6200 TurboCache(TM)" },
+ { 0x10DE0162, "GeForce 6200SE TurboCache(TM)" },
+- { 0x10DE0163, "0x0163" },
++ { 0x10DE0163, "GeForce 6200 LE" },
+ { 0x10DE0164, "GeForce Go 6200" },
+ { 0x10DE0165, "Quadro NVS 285" },
+ { 0x10DE0166, "GeForce Go 6400" },
+ { 0x10DE0167, "GeForce Go 6200" },
+ { 0x10DE0168, "GeForce Go 6400" },
+- { 0x10DE0169, "0x0169" },
++ { 0x10DE0169, "GeForce 6250" },
+ { 0x10DE016B, "0x016B" },
+ { 0x10DE016C, "0x016C" },
+ { 0x10DE016D, "0x016D" },
+@@ -293,10 +297,10 @@
+
+ { 0x10DE0090, "0x0090" },
+ { 0x10DE0091, "GeForce 7800 GTX" },
+- { 0x10DE0092, "0x0092" },
++ { 0x10DE0092, "GeForce 7800 GT" },
+ { 0x10DE0093, "0x0093" },
+ { 0x10DE0094, "0x0094" },
+- { 0x10DE0098, "0x0098" },
++ { 0x10DE0098, "GeForce Go 7800" },
+ { 0x10DE0099, "GeForce Go 7800 GTX" },
+ { 0x10DE009C, "0x009C" },
+ { 0x10DE009D, "Quadro FX 4500" },
+@@ -699,6 +703,8 @@
+ case 0x0210:
+ case 0x0220:
+ case 0x0230:
++ case 0x0290:
++ case 0x0390:
+ NVChipsets[numUsed].token = pciid;
+ NVChipsets[numUsed].name = "Unknown NVIDIA chip";
+ NVPciChipsets[numUsed].numChipset = pciid;
+@@ -1389,6 +1395,8 @@
+ case 0x0210:
+ case 0x0220:
+ case 0x0230:
++ case 0x0290:
++ case 0x0390:
+ pNv->Architecture = NV_ARCH_40;
+ break;
+ default:
+@@ -1425,9 +1433,13 @@
+ }
+ }
+
+- pNv->FbUsableSize = pNv->FbMapSize - (128 * 1024);
++ if(pNv->Architecture >= NV_ARCH_40)
++ pNv->FbUsableSize = pNv->FbMapSize - (560 * 1024);
++ else
++ pNv->FbUsableSize = pNv->FbMapSize - (128 * 1024);
+ pNv->ScratchBufferSize = (pNv->Architecture < NV_ARCH_10) ? 8192 : 16384;
+ pNv->ScratchBufferStart = pNv->FbUsableSize - pNv->ScratchBufferSize;
++ pNv->CursorStart = pNv->FbUsableSize + (32 * 1024);
+
+ /*
+ * Setup the ClockRanges, which describe what clock ranges are available,
+Index: nv_hw.c
+===================================================================
+RCS file: /cvs/xorg/xc/programs/Xserver/hw/xfree86/drivers/nv/nv_hw.c,v
+retrieving revision 1.7
+retrieving revision 1.11
+diff -u -u -r1.7 -r1.11
+--- programs/Xserver/hw/xfree86/drivers/nv/nv_hw.c 11 Jul 2005 02:29:58 -0000 1.7
++++ programs/Xserver/hw/xfree86/drivers/nv/nv_hw.c 29 Sep 2005 21:47:29 -0000 1.11
+@@ -919,7 +919,7 @@
+ RIVA_HW_STATE *state
+ )
+ {
+- int i;
++ int i, j;
+
+ pNv->PMC[0x0140/4] = 0x00000000;
+ pNv->PMC[0x0200/4] = 0xFFFF00FF;
+@@ -932,16 +932,28 @@
+
+ if(pNv->Architecture == NV_ARCH_04) {
+ pNv->PFB[0x0200/4] = state->config;
+- } else if ((pNv->Chipset & 0xfff0) == 0x0090) {
+- for(i = 0; i < 15; i++) {
+- pNv->PFB[(0x0600 + (i * 0x10))/4] = 0;
+- pNv->PFB[(0x0604 + (i * 0x10))/4] = pNv->FbMapSize - 1;
+- }
+- } else {
++ } else
++ if((pNv->Architecture < NV_ARCH_40) ||
++ ((pNv->Chipset & 0xfff0) == 0x0040))
++ {
+ for(i = 0; i < 8; i++) {
+ pNv->PFB[(0x0240 + (i * 0x10))/4] = 0;
+ pNv->PFB[(0x0244 + (i * 0x10))/4] = pNv->FbMapSize - 1;
+ }
++ } else {
++ int regions = 12;
++
++ if(((pNv->Chipset & 0xfff0) == 0x0090) ||
++ ((pNv->Chipset & 0xfff0) == 0x01D0) ||
++ ((pNv->Chipset & 0xfff0) == 0x0290))
++ {
++ regions = 15;
++ }
++
++ for(i = 0; i < regions; i++) {
++ pNv->PFB[(0x0600 + (i * 0x10))/4] = 0;
++ pNv->PFB[(0x0604 + (i * 0x10))/4] = pNv->FbMapSize - 1;
++ }
+ }
+
+ if(pNv->Architecture >= NV_ARCH_40) {
+@@ -1160,6 +1172,12 @@
+ pNv->PGRAPH[0x0090/4] = 0x00008000;
+ pNv->PGRAPH[0x0610/4] = 0x00be3c5f;
+
++ j = pNv->REGS[0x1540/4] & 0xff;
++ if(j) {
++ for(i = 0; !(j & 1); j >>= 1, i++);
++ pNv->PGRAPH[0x5000/4] = i;
++ }
++
+ if((pNv->Chipset & 0xfff0) == 0x0040) {
+ pNv->PGRAPH[0x09b0/4] = 0x83280fff;
+ pNv->PGRAPH[0x09b4/4] = 0x000000a0;
+@@ -1176,6 +1194,7 @@
+ pNv->PFB[0x033C/4] &= 0xffff7fff;
+ break;
+ case 0x00C0:
++ case 0x0120:
+ pNv->PGRAPH[0x0828/4] = 0x007596ff;
+ pNv->PGRAPH[0x082C/4] = 0x00000108;
+ break;
+@@ -1200,6 +1219,7 @@
+ pNv->PRAMDAC[0x0608/4] |= 0x00100000;
+ break;
+ case 0x0090:
++ case 0x0290:
+ pNv->PRAMDAC[0x0608/4] |= 0x00100000;
+ pNv->PGRAPH[0x0828/4] = 0x07830610;
+ pNv->PGRAPH[0x082C/4] = 0x0000016A;
+@@ -1247,12 +1267,32 @@
+ }
+ }
+
+- if((pNv->Chipset & 0xfff0) == 0x0090) {
+- for(i = 0; i < 60; i++)
+- pNv->PGRAPH[(0x0D00/4) + i] = pNv->PFB[(0x0600/4) + i];
+- } else {
+- for(i = 0; i < 32; i++)
++ if((pNv->Architecture < NV_ARCH_40) ||
++ ((pNv->Chipset & 0xfff0) == 0x0040))
++ {
++ for(i = 0; i < 32; i++) {
+ pNv->PGRAPH[(0x0900/4) + i] = pNv->PFB[(0x0240/4) + i];
++ pNv->PGRAPH[(0x6900/4) + i] = pNv->PFB[(0x0240/4) + i];
++ }
++ } else {
++ if(((pNv->Chipset & 0xfff0) == 0x0090) ||
++ ((pNv->Chipset & 0xfff0) == 0x01D0) ||
++ ((pNv->Chipset & 0xfff0) == 0x0290))
++ {
++ for(i = 0; i < 60; i++) {
++ pNv->PGRAPH[(0x0D00/4) + i] = pNv->PFB[(0x0600/4) + i];
++ pNv->PGRAPH[(0x6900/4) + i] = pNv->PFB[(0x0600/4) + i];
++ }
++ } else {
++ 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->PGRAPH[(0x6900/4) + i] = pNv->PFB[(0x0600/4) + i];
++ }
++ }
++ }
+ }
+
+ if(pNv->Architecture >= NV_ARCH_40) {
+@@ -1267,7 +1307,10 @@
+ pNv->PGRAPH[0x0864/4] = pNv->FbMapSize - 1;
+ pNv->PGRAPH[0x0868/4] = pNv->FbMapSize - 1;
+ } else {
+- if((pNv->Chipset & 0xfff0) == 0x0090) {
++ if(((pNv->Chipset & 0xfff0) == 0x0090) ||
++ ((pNv->Chipset & 0xfff0) == 0x01D0) ||
++ ((pNv->Chipset & 0xfff0) == 0x0290))
++ {
+ pNv->PGRAPH[0x0DF0/4] = pNv->PFB[0x0200/4];
+ pNv->PGRAPH[0x0DF4/4] = pNv->PFB[0x0204/4];
+ } else {
+Index: nv_setup.c
+===================================================================
+RCS file: /cvs/xorg/xc/programs/Xserver/hw/xfree86/drivers/nv/nv_setup.c,v
+retrieving revision 1.8
+retrieving revision 1.10
+diff -u -u -r1.8 -r1.10
+--- programs/Xserver/hw/xfree86/drivers/nv/nv_setup.c 5 Aug 2005 03:52:28 -0000 1.8
++++ programs/Xserver/hw/xfree86/drivers/nv/nv_setup.c 29 Sep 2005 21:47:29 -0000 1.10
+@@ -317,7 +317,6 @@
+ pNv->CrystalFreqKHz = 27000;
+ }
+
+- pNv->CursorStart = (pNv->RamAmountKBytes - 96) * 1024;
+ pNv->CURSOR = NULL; /* can't set this here */
+ pNv->MinVClockFreqKHz = 12000;
+ pNv->MaxVClockFreqKHz = pNv->twoStagePLL ? 400000 : 350000;
+@@ -448,6 +447,7 @@
+ case 0x0144:
+ case 0x0146:
+ case 0x0148:
++ case 0x0098:
+ case 0x0099:
+ mobile = TRUE;
+ break;