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();