--- XFree86-4.2.1/xc42/programs/Xserver/hw/xfree86/drivers/i740/i740.h Fri May 4 15:05:39 2001 +++ XFree86-4.2.1/xc/programs/Xserver/hw/xfree86/drivers/i740/i740.h Fri Jan 25 16:56:02 2002 @@ -56,12 +56,13 @@ typedef struct _I740Rec *I740Ptr; -typedef void (*I740WriteIndexedByteFunc)(I740Ptr pI740, int addr, +typedef void (*I740WriteIndexedByteFunc)(I740Ptr pI740, IOADDRESS addr, unsigned char index, char value); -typedef char (*I740ReadIndexedByteFunc)(I740Ptr pI740, int addr, +typedef char (*I740ReadIndexedByteFunc)(I740Ptr pI740, IOADDRESS addr, unsigned char index); -typedef void (*I740WriteByteFunc)(I740Ptr pI740, int addr, unsigned char value); -typedef char (*I740ReadByteFunc)(I740Ptr pI740, int addr); +typedef void (*I740WriteByteFunc)(I740Ptr pI740, IOADDRESS addr, + unsigned char value); +typedef char (*I740ReadByteFunc)(I740Ptr pI740, IOADDRESS addr); typedef struct { unsigned char DisplayControl; @@ -114,6 +115,7 @@ I740WriteByteFunc writeStandard; I740ReadByteFunc readStandard; OptionInfoPtr Options; + IOADDRESS ioBase; } I740Rec; #define I740PTR(p) ((I740Ptr)((p)->driverPrivate)) --- XFree86-4.2.1/xc42/programs/Xserver/hw/xfree86/drivers/i740/i740_accel.c Sat Mar 3 17:26:12 2001 +++ XFree86-4.2.1/xc/programs/Xserver/hw/xfree86/drivers/i740/i740_accel.c Fri Jan 25 16:56:02 2002 @@ -192,6 +192,7 @@ static void I740SyncPIO(ScrnInfoPtr pScrn) { + I740Ptr pI740 = I740PTR(pScrn); WAIT_ENGINE_IDLE_PIO(); } --- XFree86-4.2.1/xc42/programs/Xserver/hw/xfree86/drivers/i740/i740_driver.c Fri Jan 4 16:22:31 2002 +++ XFree86-4.2.1/xc/programs/Xserver/hw/xfree86/drivers/i740/i740_driver.c Fri Jan 25 16:56:02 2002 @@ -501,6 +501,8 @@ /* Allocate a vgaHWRec */ if (!vgaHWGetHWRec(pScrn)) return FALSE; + hwp = VGAHWPTR(pScrn); + pI740->ioBase = hwp->PIOOffset; pI740->PciInfo = xf86GetPciInfoForEntity(pI740->pEnt->index); pI740->PciTag = pciTag(pI740->PciInfo->bus, pI740->PciInfo->device, @@ -571,7 +573,6 @@ /* We use a programmable clock */ pScrn->progClock = TRUE; - hwp = VGAHWPTR(pScrn); pI740->cpp = pScrn->bitsPerPixel/8; /* We have to use PIO to probe, because we haven't mappend yet */ @@ -1736,11 +1737,6 @@ static Bool I740SaveScreen(ScreenPtr pScreen, int mode) { -#if 0 - Bool unblack = xf86IsUnblank(mode); - if (unblack) outw(SRX, 0x0300); - else outw(SRX, 0x0100); -#endif return vgaHWSaveScreen(pScreen, mode); } --- XFree86-4.2.1/xc42/programs/Xserver/hw/xfree86/drivers/i740/i740_io.c Tue Feb 22 23:47:14 2000 +++ XFree86-4.2.1/xc/programs/Xserver/hw/xfree86/drivers/i740/i740_io.c Fri Jan 25 16:56:03 2002 @@ -39,53 +39,76 @@ #include "i740.h" -static void I740WriteControlPIO(I740Ptr pI740, int addr, unsigned char index, char val) { +static void +I740WriteControlPIO(I740Ptr pI740, IOADDRESS addr, + unsigned char index, char val) +{ + addr += pI740->ioBase; outb(addr, index); outb(addr+1, val); } -static char I740ReadControlPIO(I740Ptr pI740, int addr, unsigned char index) { +static char +I740ReadControlPIO(I740Ptr pI740, IOADDRESS addr, unsigned char index) +{ + addr += pI740->ioBase; outb(addr, index); return inb(addr+1); } -static void I740WriteStandardPIO(I740Ptr pI740, int addr, unsigned char val) { - outb(addr, val); +static void +I740WriteStandardPIO(I740Ptr pI740, IOADDRESS addr, unsigned char val) +{ + outb(pI740->ioBase + addr, val); } -static char I740ReadStandardPIO(I740Ptr pI740, int addr) { - return inb(addr); +static char +I740ReadStandardPIO(I740Ptr pI740, IOADDRESS addr) +{ + return inb(pI740->ioBase + addr); } -void I740SetPIOAccess(I740Ptr pI740) { +void +I740SetPIOAccess(I740Ptr pI740) +{ pI740->writeControl=I740WriteControlPIO; pI740->readControl=I740ReadControlPIO; pI740->writeStandard=I740WriteStandardPIO; pI740->readStandard=I740ReadStandardPIO; } -static void I740WriteControlMMIO(I740Ptr pI740, int addr, unsigned char index, char val) { +static void +I740WriteControlMMIO(I740Ptr pI740, IOADDRESS addr, + unsigned char index, char val) +{ moutb(addr, index); moutb(addr+1, val); } -static char I740ReadControlMMIO(I740Ptr pI740, int addr, unsigned char index) { +static char +I740ReadControlMMIO(I740Ptr pI740, IOADDRESS addr, unsigned char index) +{ moutb(addr, index); return minb(addr+1); } -static void I740WriteStandardMMIO(I740Ptr pI740, int addr, unsigned char val) { +static void +I740WriteStandardMMIO(I740Ptr pI740, IOADDRESS addr, unsigned char val) +{ moutb(addr, val); } -static char I740ReadStandardMMIO(I740Ptr pI740, int addr) { +static char +I740ReadStandardMMIO(I740Ptr pI740, IOADDRESS addr) +{ return minb(addr); } -void I740SetMMIOAccess(I740Ptr pI740) { +void +I740SetMMIOAccess(I740Ptr pI740) +{ pI740->writeControl=I740WriteControlMMIO; pI740->readControl=I740ReadControlMMIO; pI740->writeStandard=I740WriteStandardMMIO; pI740->readStandard=I740ReadStandardMMIO; } - --- XFree86-4.2.1/xc42/programs/Xserver/hw/xfree86/drivers/i740/i740_macros.h Tue Feb 22 23:47:14 2000 +++ XFree86-4.2.1/xc/programs/Xserver/hw/xfree86/drivers/i740/i740_macros.h Fri Jan 25 16:56:03 2002 @@ -34,9 +34,9 @@ */ #define WAIT_ENGINE_IDLE_PIO() { \ - outb(XRX, BITBLT_CNTL); \ - while (inb(XRX+1) & BITBLT_STATUS) \ - outb(XRX, BITBLT_CNTL); \ + outb(pI740->ioBase + XRX, BITBLT_CNTL); \ + while (inb(pI740->ioBase + XRX + 1) & BITBLT_STATUS) \ + outb(pI740->ioBase + XRX, BITBLT_CNTL); \ } #define WAIT_ENGINE_IDLE_MMIO() { \