[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Bug#594684: new patch



let  sm712  not run  inb()  outb() .
--- /smi_driver.c	2012-10-08 06:25:02.055529217 +0800
+++ src/smi_driver.c	2012-10-08 06:25:05.847529217 +0800
@@ -1309,6 +1309,11 @@
 	return (FALSE);
     }
 
+    if (IOPortBase == NULL) {
+        IOPortBase=pSmi->MapBase;
+	xf86DrvMsg(pScrn->scrnIndex, X_DEFAULT, "IOPortBase=%x\n",IOPortBase);
+    }
+
     switch (pSmi->Chipset) {
 	case SMI_COUGAR3DR:
 	    pSmi->DPRBase = pSmi->MapBase + 0x000000;
@@ -2047,7 +2052,7 @@
 
     ENTER();
 
-    if (!IS_MSOC(pSmi)) {
+    if (!IS_MSOC(pSmi) && pSmi->Chipset != SMI_LYNXEMplus ) {
 	vgaHWPtr hwp = VGAHWPTR(pScrn);
 	CARD8 tmp;
 
@@ -2058,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();
@@ -2080,18 +2083,18 @@
 
     ENTER();
 
-    if (!IS_MSOC(pSmi)) {
+    if (!IS_MSOC(pSmi) && pSmi->Chipset != SMI_LYNXEMplus ) {
 	vgaHWPtr hwp = VGAHWPTR(pScrn);
 
 	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();

Reply to: