Browse Source

Plan 9 from Bell Labs 2003-06-02

David du Colombier 21 years ago
parent
commit
a4359e1a09
3 changed files with 35 additions and 12 deletions
  1. 1 1
      dist/replica/plan9.db
  2. 1 0
      dist/replica/plan9.log
  3. 33 11
      sys/src/cmd/aux/vga/nvidia.c

+ 1 - 1
dist/replica/plan9.db

@@ -6729,7 +6729,7 @@ sys/src/cmd/aux/vga/mga4xx.c - 664 sys sys 1014925010 35895
 sys/src/cmd/aux/vga/mkfile - 664 sys sys 1048636613 905
 sys/src/cmd/aux/vga/neomagic.c - 664 sys sys 1014925010 8801
 sys/src/cmd/aux/vga/notes.txt - 664 sys sys 1028334647 14376
-sys/src/cmd/aux/vga/nvidia.c - 664 sys sys 1048636618 11638
+sys/src/cmd/aux/vga/nvidia.c - 664 sys sys 1054479635 12043
 sys/src/cmd/aux/vga/palette.c - 664 sys sys 1014925010 2201
 sys/src/cmd/aux/vga/pci.c - 664 sys sys 1014925011 8659
 sys/src/cmd/aux/vga/pci.h - 664 sys sys 1014925011 3290

+ 1 - 0
dist/replica/plan9.log

@@ -12035,3 +12035,4 @@
 1054089063 0 c sys/src/9/pc/sdata.c - 664 sys sys 1054088388 46387
 1054391577 0 c sys/src/9/ip/devip.c - 664 sys sys 1054391399 24207
 1054391577 1 c sys/src/9/ip/ip.h - 664 sys sys 1054391400 16066
+1054479750 0 c sys/src/cmd/aux/vga/nvidia.c - 664 sys sys 1054479635 12043

+ 33 - 11
sys/src/cmd/aux/vga/nvidia.c

@@ -107,6 +107,24 @@ snarf(Vga* vga, Ctlr* ctlr)
 		vga->m[1] = 13;
 	}
 
+	switch(nv->pci->did & 0x0ff0) {
+	case 0x0170:
+	case 0x0180:
+	case 0x01F0:
+	case 0x0250:
+	case 0x0280:
+	case 0x0300:
+	case 0x0310:
+	case 0x0320:
+	case 0x0330:
+	case 0x0340:
+		if(nv->pextdev[0x00000000] & (1 << 22))
+			nv->crystalfreq = 27000000;
+		break;
+	default:
+		break;
+	}
+
 	if (nv->arch == 4) {
 		tmp = nv->pfb[0x00000000];
 		if (tmp & 0x0100) {
@@ -436,27 +454,32 @@ load(Vga* vga, Ctlr* ctlr)
 			nv->pgraph[0x670/4+i] = nv->pitch[i];	
 	} 
 	if(nv->arch == 20) {
+		for(i = 0; i < 4; i++)
+			nv->pgraph[0x864/4+i] = 0x01ffffff;
 		for(i = 0; i < 4; i++)
 			nv->pgraph[0x820/4+i] = nv->offset[i];
-		for(i = 0; i < 6; i++)
+		for(i = 0; i < 4; i++)
 			nv->pgraph[0x850/4+i] = nv->pitch[i];
 
 		nv->pgraph[0x9A4/4] = nv->pfb[0x200/4];
 		nv->pgraph[0x9A8/4] = nv->pfb[0x204/4];
-		nv->pramdac[0x052C/4] = 0x101;
-		nv->pramdac[0x252C/4] = 0x1;
 	}
 		
 
+	if(nv->arch == 10 || nv->arch == 20){
+		nv->pramdac[0x00000404/4] |= (1 << 25);
 
-	nv->pmc[0x8704/4] = 1;
-	nv->pmc[0x8140/4] = 0;
-	nv->pmc[0x8920/4] = 0;
-	nv->pmc[0x8924/4] = 0;
-	nv->pmc[0x8908/4] = 0x01FFFFFF;
-	nv->pmc[0x890C/4] = 0x01FFFFFF;
+		nv->pmc[0x8704/4] = 1;
+		nv->pmc[0x8140/4] = 0;
+		nv->pmc[0x8920/4] = 0;
+		nv->pmc[0x8924/4] = 0;
+		nv->pmc[0x8908/4] = 0x01FFFFFF;
+		nv->pmc[0x890C/4] = 0x01FFFFFF;
+		nv->pmc[0x1588/4] = 0;
+
+		for(i=0; i<8; i++)
+			nv->pfb[0x240/4+(i * 4)] = 0;
 
-	if(nv->arch == 10 || nv->arch == 20){
 		for(i=0; i<0x7C/4; i++)
 			nv->pgraph[0xB00/4+i] = nv->pfb[0x240/4+i];
 
@@ -554,4 +577,3 @@ Ctlr nvidiahwgc = {
 	0,				/* load */
 	0,				/* dump */
 };
-