
http://bugs.debian.org/594684
http://bugs.debian.org/601119

the inb() and outb()  need IOPortBase  ,   

use VGAOUT8_INDEX() and VGAIN8_INDEX() replace its.

                          liushiwei@gmail.com

--- a/src/smi_driver.c	2012-03-24 10:49:32.000000000 +0800
+++ b/src/smi_driver.c	2012-10-08 04:43:40.287528795 +0800
@@ -1277,6 +1277,11 @@
 	return (FALSE);
     }
 
+    if (IOPortBase == NULL) {
+        IOPortBase=pSmi->MapBase;
+	xf86DrvMsg(pScrn->scrnIndex, X_DEFAULT, "IOPortBase=%x",IOPortBase);
+    }
+
     switch (pSmi->Chipset) {
 	case SMI_COUGAR3DR:
 	    pSmi->DPRBase = pSmi->MapBase + 0x000000;
@@ -2021,16 +2063,14 @@
 	vgaHWSetStdFuncs(hwp);
 
 	/* Enable linear mode */
-	outb(pSmi->PIOBase + VGA_SEQ_INDEX, 0x18);
-	tmp = inb(pSmi->PIOBase + VGA_SEQ_DATA);
+	tmp = VGAIN8_INDEX(pSmi, VGA_SEQ_INDEX, VGA_SEQ_DATA,0x18);
 	pSmi->SR18Value = tmp;					/* PDR#521 */
-	outb(pSmi->PIOBase + VGA_SEQ_DATA, tmp | 0x11);
+        VGAOUT8_INDEX(pSmi, VGA_SEQ_INDEX, VGA_SEQ_DATA, 0x18, tmp | 0x11);
 
 	/* Enable 2D/3D Engine and Video Processor */
-	outb(pSmi->PIOBase + VGA_SEQ_INDEX, 0x21);
-	tmp = inb(pSmi->PIOBase + VGA_SEQ_DATA);
+	tmp = VGAIN8_INDEX(pSmi, VGA_SEQ_INDEX, VGA_SEQ_DATA,0x21);
 	pSmi->SR21Value = tmp;					/* PDR#521 */
-	outb(pSmi->PIOBase + VGA_SEQ_DATA, tmp & ~0x03);
+        VGAOUT8_INDEX(pSmi, VGA_SEQ_INDEX, VGA_SEQ_DATA, 0x21, tmp & ~0x03);
     }
 
     LEAVE();
@@ -2049,12 +2089,12 @@
 	vgaHWSetStdFuncs(hwp);
 
 	/* Disable 2D/3D Engine and Video Processor */
-	outb(pSmi->PIOBase + VGA_SEQ_INDEX, 0x21);
-	outb(pSmi->PIOBase + VGA_SEQ_DATA, pSmi->SR21Value);	/* PDR#521 */
+	/* PDR#521 */
+        VGAOUT8_INDEX(pSmi, VGA_SEQ_INDEX, VGA_SEQ_DATA, 0x21, pSmi->SR21Value);
 
 	/* Disable linear mode */
-	outb(pSmi->PIOBase + VGA_SEQ_INDEX, 0x18);
-	outb(pSmi->PIOBase + VGA_SEQ_DATA, pSmi->SR18Value);	/* PDR#521 */
+	/* PDR#521 */
+        VGAOUT8_INDEX(pSmi, VGA_SEQ_INDEX, VGA_SEQ_DATA, 0x18, pSmi->SR18Value);
     }
 
     LEAVE();
