--- a/src/ast_vgatool.c Wed Nov 12 12:52:46 2014
+++ b/src/ast_vgatool.c Wed Nov 12 12:53:51 2014
@@ -1076,16 +1076,29 @@
static void vEnableVGA(ScrnInfoPtr pScrn)
{
ASTRecPtr pAST;
+ UCHAR miscout;
pAST = ASTPTR(pScrn);
SetReg(VGA_ENABLE_PORT, 0x01);
- SetReg(MISC_PORT_WRITE, 0x01);
+ /*
+ * Only set the Input/Output Address bit in the Miscellaneous
+ * output register, as clearing others bits and accessing the
+ * frame buffer caused non-resumable errors on sparc.
+ */
+ miscout = GetReg(MISC_PORT_READ);
+ SetReg(MISC_PORT_WRITE, miscout | 0x01);
}
+/*
+ * Leave video memory enabled in PCI Control Register #1 (0xa0), as
+ * accessing the frame buffer with it disabled caused non-resumable
+ * errors on sparc.
+ */
+
static UCHAR ExtRegInfo[] = {
- 0x0F,
+ 0x7F,
0x04,
0x1C,
0xFF
@@ -1092,7 +1105,7 @@
};
static UCHAR ExtRegInfo_AST2300A0[] = {
- 0x0F,
+ 0x7F,
0x04,
0x1C,
0xFF
@@ -1099,7 +1112,7 @@
};
static UCHAR ExtRegInfo_AST2300[] = {
- 0x0F,
+ 0x7F,
0x04,
0x1F,
0xFF