plan 9 kernel history: overview | file list | diff list

2000/0820/pc/vgas3.c (diff list | history)

2000/0820/sys/src/9/pc/vgas3.c:12,172000/0903/sys/src/9/pc/vgas3.c:12,39 (short | long | prev | next)
1999/0119    
#include <cursor.h> 
1994/0803    
#include "screen.h" 
 
2000/0903    
enum { 
	PCIS3		= 0x5333,		/* PCI VID */ 
 
	SAVAGE3D	= 0x8A20,	/* PCI DID */ 
	SAVAGE3DMV	= 0x8A21, 
	SAVAGE4		= 0x8A22, 
	SAVAGEMXMV	= 0x8C10, 
	SAVAGEMX	= 0x8C11, 
	SAVAGEIXMV	= 0x8C12, 
	SAVAGEIX	= 0x8C13, 
	SAVAGE2000	= 0x9102, 
 
	VIRGE		= 0x5631, 
	VIRGEGX2	= 0x8A10, 
	VIRGEDXGX	= 0x8A01, 
	VIRGEVX		= 0x883D, 
	VIRGEMX		= 0x8C01, 
	VIRGEMXP	= 0x8C03, 
 
	AURORA64VPLUS	= 0x8812, 
}; 
 
1997/1101    
static int 
s3pageset(VGAscr* scr, int page) 
1994/0803    
{ 
2000/0820/sys/src/9/pc/vgas3.c:50,562000/0903/sys/src/9/pc/vgas3.c:72,78
2000/0803    
	id = (vgaxi(Crtx, 0x2D)<<8)|vgaxi(Crtx, 0x2E); 
1998/0116    
	switch(id){ 
 
2000/0803    
	case 0x8A10:				/* ViRGE/GX2 */ 
2000/0903    
	case VIRGEGX2: 
1998/0116    
		break; 
 
	default: 
2000/0820/sys/src/9/pc/vgas3.c:78,842000/0903/sys/src/9/pc/vgas3.c:100,106
2000/0612    
	mmiosize = 0; 
	mmiobase = 0; 
	mmioname = nil; 
1997/1101    
	if(p = pcimatch(nil, 0x5333, 0)){ 
2000/0903    
	if(p = pcimatch(nil, PCIS3, 0)){ 
2000/0611    
		for(i=0; i<nelem(p->mem); i++){ 
			if(p->mem[i].size >= *size 
			&& ((p->mem[i].bar & ~0x0F) & (*align-1)) == 0) 
2000/0820/sys/src/9/pc/vgas3.c:92,982000/0903/sys/src/9/pc/vgas3.c:114,120
2000/0611    
		*size = p->mem[i].size; 
2000/0612    
 
2000/0803    
		id = (vgaxi(Crtx, 0x2D)<<8)|vgaxi(Crtx, 0x2E); 
		if(id == 0x8A22){		/* find Savage4 mmio */ 
2000/0903    
		if(id == SAVAGE4){		/* find Savage4 mmio */ 
2000/0612    
			/* 
			 * We could assume that the MMIO registers 
			 * will be in the screen segment and just use 
2000/0820/sys/src/9/pc/vgas3.c:108,1132000/0903/sys/src/9/pc/vgas3.c:130,136
2000/0612    
				if(p->mem[j].size==512*1024 || p->mem[j].size==16*1024*1024){ 
					mmiobase = p->mem[j].bar & ~0x0F; 
					mmiosize = 512*1024; 
2000/0903    
					scr->mmio = (ulong*)upamalloc(mmiobase, mmiosize, 16*1024*1024); 
2000/0612    
					mmioname = "savage4mmio"; 
					break; 
				} 
2000/0820/sys/src/9/pc/vgas3.c:196,2072000/0903/sys/src/9/pc/vgas3.c:219,230
2000/0809    
	id = (vgaxi(Crtx, 0x2D)<<8)|vgaxi(Crtx, 0x2E); 
1998/0116    
	switch(id){ 
1994/0803    
 
2000/0803    
	case 0x5631:				/* ViRGE */ 
	case 0x8A01:				/* ViRGE/[DG]X */ 
	case 0x8A10:				/* ViRGE/GX2 */ 
	case 0x883D:				/* ViRGE/VX */ 
2000/0820    
	case 0x8C12:				/* Savage4/IX-MV */ 
2000/0803    
	case 0x8A22:				/* Savage4 */ 
2000/0903    
	case VIRGE: 
	case VIRGEDXGX: 
	case VIRGEGX2: 
	case VIRGEVX:	 
	case SAVAGEIXMV: 
	case SAVAGE4: 
1998/0116    
		p += scr->storage; 
		break; 
 
2000/0820/sys/src/9/pc/vgas3.c:244,2552000/0903/sys/src/9/pc/vgas3.c:267,278
1994/0803    
 
1998/0116    
	switch(id){ 
 
2000/0803    
	case 0x5631:				/* ViRGE */ 
	case 0x8A01:				/* ViRGE/[DG]X */ 
	case 0x8A10:				/* ViRGE/GX2 */ 
	case 0x883D:				/* ViRGE/VX */ 
2000/0820    
	case 0x8C12:				/* Savage4/IX-MV */ 
2000/0803    
	case 0x8A22:				/* Savage4 */ 
2000/0903    
	case VIRGE: 
	case VIRGEDXGX: 
	case VIRGEGX2: 
	case VIRGEVX:	 
	case SAVAGEIXMV: 
	case SAVAGE4: 
1998/0116    
		break; 
 
	default: 
2000/0820/sys/src/9/pc/vgas3.c:526,5342000/0903/sys/src/9/pc/vgas3.c:549,559
2000/0326    
	vgaxo(Seqx, CursorSyncCtl, x); 
} 
 
2000/0903    
 
2000/0326    
static void 
1999/1005    
s3drawinit(VGAscr *scr) 
{ 
2000/0903    
	extern void savageinit(VGAscr*);	/* vgasavage.c */ 
1999/1005    
	ulong id; 
 
2000/0809    
	id = (vgaxi(Crtx, 0x2D)<<8)|vgaxi(Crtx, 0x2E); 
2000/0820/sys/src/9/pc/vgas3.c:542,5542000/0903/sys/src/9/pc/vgas3.c:567,583
1999/1005    
	 * above. 
	 */ 
	switch(id){ 
2000/0803    
	case 0x5631:				/* ViRGE */ 
	case 0x883D:				/* ViRGE/VX */ 
	case 0x8A10:				/* ViRGE/GX2 */ 
2000/0903    
	case VIRGE:				/* ViRGE */ 
	case VIRGEVX:				/* ViRGE/VX */ 
	case VIRGEGX2:				/* ViRGE/GX2 */ 
1999/1005    
		scr->mmio = (ulong*)(scr->aperture+0x1000000); 
		scr->fill = hwfill; 
		scr->scroll = hwscroll; 
2000/0326    
		/* scr->blank = hwblank; */ 
2000/0903    
		break; 
	case SAVAGE4: 
		savageinit(scr); 
		break; 
1999/1005    
	} 
} 
 


source code copyright © 1990-2005 Lucent Technologies; see license
Plan 9 distribution
comments to russ cox (rsc@swtch.com)