Based on the r128 and radeon code, here's a diff for atidri.c that initializes the AGP registers and enables bus mastering in PCI config space (in case it wasn't done on boot). Also, I tried setting GUI_CNTL to 0x00000001 and the dma test worked for me also!
--- atidri.orig.c Fri Oct 19 19:57:55 2001 +++ atidri.c Fri Oct 19 20:29:31 2001 @@ -35,6 +35,7 @@ #include "atistruct.h" #include "ativersion.h" +#include "atimach64io.h" #include "mach64_dri.h" #include "mach64_sarea.h" @@ -607,10 +608,12 @@ "[agp] AGP Texture map mapped at 0x%08lx\n", (unsigned long)pATI->agpTex); - /* Initialize Rage 128's AGP registers */ +#endif + + /* Initialize Mach64's AGP registers */ cntl = inr( AGP_CNTL ); cntl &= ~AGP_APER_SIZE_MASK; - switch ( pATI->agpSize ) { + switch ( pATIDRIServer->agpSize ) { case 256: cntl |= AGP_APER_SIZE_256MB; break; case 128: cntl |= AGP_APER_SIZE_128MB; break; case 64: cntl |= AGP_APER_SIZE_64MB; break; @@ -621,12 +624,16 @@ default: xf86DrvMsg( pScreen->myNum, X_ERROR, "[agp] Illegal aperture size %d kB\n", - pATI->agpSize*1024 ); + pATIDRIServer->agpSize*1024 ); return FALSE; } - outr( AGP_BASE, pATIDRIServer->agpHandle ); + + /* Vertex buffers start at AGP offset 0 */ + outr( AGP_BASE, pATIDRIServer->bufferHandle ); outr( AGP_CNTL, cntl ); -#endif + + /* Enable bus mastering in PCI config space */ + xf86EnablePciBusMaster(pATI->PCIInfo, TRUE); return TRUE; } -- Leif Delgass _______________________________________________ Dri-devel mailing list [EMAIL PROTECTED] https://lists.sourceforge.net/lists/listinfo/dri-devel