--- a/src/ast_vgatool.c Thu Apr 28 20:39:59 2016
+++ b/src/ast_vgatool.c Thu Apr 28 20:41:39 2016
@@ -1075,16 +1075,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
@@ -1091,7 +1104,7 @@
};
static UCHAR ExtRegInfo_AST2300A0[] = {
- 0x0F,
+ 0x7F,
0x04,
0x1C,
0xFF
@@ -1098,7 +1111,7 @@
};
static UCHAR ExtRegInfo_AST2300[] = {
- 0x0F,
+ 0x7F,
0x04,
0x1F,
0xFF