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: