--- /dev/null
+--- 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() { \