Browse Source

vganvidia builds

Signed-off-by: Graham MacDonald <grahamamacdonald@gmail.com>
Graham MacDonald 5 years ago
parent
commit
8f47ad1d94
3 changed files with 35 additions and 33 deletions
  1. 2 1
      sys/src/9/386/386.json
  2. 31 31
      sys/src/9/386/vganvidia.c
  3. 2 1
      sys/src/9/amd64/build.json

+ 2 - 1
sys/src/9/386/386.json

@@ -11,7 +11,8 @@
 			"../386/pci.c",
 			"../386/uarti8250.c",
 			"../386/uartpci.c",
+			"../386/vganvidia.c",
 			"../386/vgavesa.c"
 		]
 	}
-]
+]

+ 31 - 31
sys/src/9/386/vganvidia.c

@@ -69,7 +69,7 @@ enum {
 #define SKIPS 8
 
 struct {
-	ulong	*dmabase;
+	uint32_t	*dmabase;
 	int		dmacurrent;
 	int		dmaput;
 	int		dmafree;
@@ -90,7 +90,7 @@ nvidiapci(void)
 }
 
 static void
-nvidialinear(VGAscr*, int, int)
+nvidialinear(VGAscr* scr, int size, int align)
 {
 }
 
@@ -98,7 +98,7 @@ static void
 nvidiaenable(VGAscr* scr)
 {
 	Pcidev *p;
-	ulong *q;
+	uint32_t *q;
 	int tmp;
 
 	if(scr->mmio)
@@ -122,7 +122,7 @@ nvidiaenable(VGAscr* scr)
 	switch (scr->id & 0x0ff0) {
 	case 0x0020:
 	case 0x00A0:
-		q = (void*)((uchar*)scr->mmio + Pfb);
+		q = (void*)((uint8_t*)scr->mmio + Pfb);
 		tmp = *q;
 		if (tmp & 0x0100) {
 			scr->storage = ((tmp >> 12) & 0x0F) * 1024 + 1024 * 2;
@@ -145,7 +145,7 @@ nvidiaenable(VGAscr* scr)
 		scr->storage = (((tmp >> 4) & 127) + 1) * 1024 * 1024;
 		break;
 	default:
-		q = (void*)((uchar*)scr->mmio + Pfb + 0x020C);
+		q = (void*)((uint8_t*)scr->mmio + Pfb + 0x020C);
 		tmp = (*q >> 20) & 0xFFF;
 		if (tmp == 0)
 			tmp = 16;
@@ -167,10 +167,10 @@ nvidiacurdisable(VGAscr* scr)
 static void
 nvidiacurload(VGAscr* scr, Cursor* curs)
 {
-	ulong*	p;
+	uint32_t*	p;
 	int	i,j;
-	ushort	c,s;
-	ulong	tmp;
+	uint16_t	c,s;
+	uint32_t	tmp;
 
 	if(scr->mmio == 0)
 		return;
@@ -180,7 +180,7 @@ nvidiacurload(VGAscr* scr, Cursor* curs)
 	switch (scr->id & 0x0ff0) {
 	case 0x0020:
 	case 0x00A0:
-		p = (void*)((uchar*)scr->mmio + Pramin + 0x1E00 * 4);
+		p = (void*)((uint8_t*)scr->mmio + Pramin + 0x1E00 * 4);
 		break;
 	default:
 		/*
@@ -189,7 +189,7 @@ nvidiacurload(VGAscr* scr, Cursor* curs)
 		 * expected.
 		 */
 		tmp = scr->apsize - 96*1024;
-		p = (void*)((uchar*)scr->vaddr + tmp);
+		p = (void*)((uint8_t*)scr->vaddr + tmp);
 		vgaxo(Crtx, 0x30, 0x80|(tmp>>17));
 		vgaxo(Crtx, 0x31, (tmp>>11)<<2);
 		vgaxo(Crtx, 0x2F, tmp>>24);
@@ -220,7 +220,7 @@ nvidiacurload(VGAscr* scr, Cursor* curs)
 	for (i=0; i<256; i++)
 		*p++ = 0;
 
-	scr->offset = curs->offset;
+	scr->Cursor.offset = curs->offset;
 	vgaxo(Crtx, 0x31, vgaxi(Crtx, 0x31) | 0x01);
 
 	return;
@@ -229,13 +229,13 @@ nvidiacurload(VGAscr* scr, Cursor* curs)
 static int
 nvidiacurmove(VGAscr* scr, Point p)
 {
-	ulong*	cursorpos;
+	uint32_t*	cursorpos;
 
 	if(scr->mmio == 0)
 		return 1;
 
-	cursorpos = (void*)((uchar*)scr->mmio + hwCurPos);
-	*cursorpos = ((p.y+scr->offset.y)<<16)|((p.x+scr->offset.x) & 0xFFFF);
+	cursorpos = (void*)((uint8_t*)scr->mmio + hwCurPos);
+	*cursorpos = ((p.y+scr->Cursor.offset.y)<<16)|((p.x+scr->Cursor.offset.x) & 0xFFFF);
 
 	return 0;
 }
@@ -258,23 +258,23 @@ nvidiacurenable(VGAscr* scr)
 void
 writeput(VGAscr *scr, int data)
 {
-	uchar	*p, scratch;
-	ulong	*fifo;
+	uint8_t	*p, scratch;
+	uint32_t	*fifo;
 
 	outb(0x3D0,0);
 	p = scr->vaddr;
 	scratch = *p;
-	fifo = (void*)((uchar*)scr->mmio + Fifo);
+	fifo = (void*)((uint8_t*)scr->mmio + Fifo);
 	fifo[0x10] = (data << 2);
 	USED(scratch);
 }
 
-ulong
+uint32_t
 readget(VGAscr *scr)
 {
-	ulong	*fifo;
+	uint32_t	*fifo;
 
-	fifo = (void*)((uchar*)scr->mmio + Fifo);
+	fifo = (void*)((uint8_t*)scr->mmio + Fifo);
 	return (fifo[0x0011] >> 2);
 }
 
@@ -288,7 +288,7 @@ nvdmakickoff(VGAscr *scr)
 }
 
 static void
-nvdmanext(ulong data)
+nvdmanext(uint32_t data)
 {
 	nv.dmabase[nv.dmacurrent++] = data;
 }
@@ -324,7 +324,7 @@ nvdmawait(VGAscr *scr, int size)
 
 
 static void
-nvdmastart(VGAscr *scr, ulong tag, int size)
+nvdmastart(VGAscr *scr, uint32_t tag, int size)
 {
 	if (nv.dmafree <= size)
 		nvdmawait(scr, size);
@@ -335,29 +335,29 @@ nvdmastart(VGAscr *scr, ulong tag, int size)
 static void
 waitforidle(VGAscr *scr)
 {
-	ulong*	pgraph;
+	uint32_t*	pgraph;
 	int x;
 
-	pgraph = (void*)((uchar*)scr->mmio + Pgraph);
+	pgraph = (void*)((uint8_t*)scr->mmio + Pgraph);
 
 	x = 0;
 	while((readget(scr) != nv.dmaput) && x++ < 1000000)
 		;
 	if(x >= 1000000)
-		iprint("idle stat %lud put %d scr %#p pc %#p\n", readget(scr), nv.dmaput, scr, getcallerpc(&scr));
+		iprint("idle stat %lud put %d scr %#p pc %#p\n", readget(scr), nv.dmaput, scr, getcallerpc());
 
 	x = 0;
 	while(pgraph[0x00000700/4] & 0x01 && x++ < 1000000)
 		;
 
 	if(x >= 1000000)
-		iprint("idle stat %lud scrio %#p scr %#p pc %#p\n", *pgraph, scr->mmio, scr, getcallerpc(&scr));
+		iprint("idle stat %lud scrio %#p scr %#p pc %#p\n", *pgraph, scr->mmio, scr, getcallerpc());
 }
 
 static void
 nvresetgraphics(VGAscr *scr)
 {
-	ulong	surfaceFormat, patternFormat, rectFormat, lineFormat;
+	uint32_t	surfaceFormat, patternFormat, rectFormat, lineFormat;
 	int		pitch, i;
 
 	pitch = scr->gscreen->width*BY2WD;
@@ -368,7 +368,7 @@ nvresetgraphics(VGAscr *scr)
 	 */
 	if(nv.dmabase == nil){
 		if(scr->storage <= scr->apsize)
-			nv.dmabase = (ulong*)((uchar*)scr->vaddr + scr->storage - 128*1024);
+			nv.dmabase = (uint32_t*)((uint8_t*)scr->vaddr + scr->storage - 128*1024);
 		else{
 			nv.dmabase = (void*)vmap(scr->paddr + scr->storage - 128*1024, 128*1024);
 			if(nv.dmabase == 0){
@@ -458,7 +458,7 @@ nvresetgraphics(VGAscr *scr)
 
 
 static int
-nvidiahwfill(VGAscr *scr, Rectangle r, ulong sval)
+nvidiahwfill(VGAscr *scr, Rectangle r, uint32_t sval)
 {
 	nvdmastart(scr, RECT_SOLID_COLOR, 1);
 	nvdmanext(sval);
@@ -492,9 +492,9 @@ nvidiahwscroll(VGAscr *scr, Rectangle r, Rectangle sr)
 }
 
 void
-nvidiablank(VGAscr*, int blank)
+nvidiablank(VGAscr* scr, int blank)
 {
-	uchar seq1, crtc1A;
+	uint8_t seq1, crtc1A;
 
 	seq1 = vgaxi(Seqx, 1) & ~0x20;
 	crtc1A = vgaxi(Crtx, 0x1A) & ~0xC0;

+ 2 - 1
sys/src/9/amd64/build.json

@@ -83,6 +83,7 @@
 					"pci"
 				],
 				"VGA": [
+					"vganvidia",
 					"vgavesa"
 				]
 			},
@@ -138,4 +139,4 @@
 			"vgax.c"
 		]
 	}
-]
+]