Importing vendor version xf86-012804-2330 on Thu Jan 29 00:06:33 PST 2004
This commit is contained in:
parent
64d7bbf0ac
commit
64b129e800
13
man/i810.man
13
man/i810.man
|
|
@ -1,4 +1,4 @@
|
|||
.\" $XFree86: xc/programs/Xserver/hw/xfree86/drivers/i810/i810.man,v 1.5 2003/10/18 02:27:07 dawes Exp $
|
||||
.\" $XFree86: xc/programs/Xserver/hw/xfree86/drivers/i810/i810.man,v 1.6 2004/01/07 03:43:19 dawes Exp $
|
||||
.\" shorthand for double quote that works everywhere.
|
||||
.ds q \N'34'
|
||||
.TH I810 __drivermansuffix__ __vendorversion__
|
||||
|
|
@ -116,6 +116,13 @@ The following driver
|
|||
.B Options
|
||||
are supported for the 830M and later chipsets:
|
||||
.TP
|
||||
.BI "Option \*qVBERestore\*q \*q" boolean \*q
|
||||
Enable or disable the use of VBE save/restore for saving and restoring
|
||||
the initial text mode. This is disabled by default because it causes
|
||||
lockups on some platforms. However, there are some cases where it must
|
||||
enabled for the correct restoration of the initial video mode. If you are
|
||||
having a problem with that, try enabling this option. Default: Disabled.
|
||||
.TP
|
||||
.BI "Option \*qVideoKey\*q \*q" integer \*q
|
||||
This is the same as the
|
||||
.B \*qColorKey\*q
|
||||
|
|
@ -123,8 +130,8 @@ option described above. It is provided for compatibility with most
|
|||
other drivers.
|
||||
.TP
|
||||
.BI "Option \*qXVideo\*q \*q" boolean \*q
|
||||
Disable or enable XVideo support.
|
||||
Default: XVideo is enabled for configurations where it is supported.
|
||||
Disable or enable XVideo support. Default: XVideo is enabled for
|
||||
configurations where it is supported.
|
||||
|
||||
|
||||
.SH "SEE ALSO"
|
||||
|
|
|
|||
|
|
@ -27,7 +27,7 @@ TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
|
|||
SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
|
||||
**************************************************************************/
|
||||
/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/i810/common.h,v 1.9 2003/09/24 02:43:23 dawes Exp $ */
|
||||
/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/i810/common.h,v 1.10 2004/01/03 02:11:53 dawes Exp $ */
|
||||
|
||||
/*
|
||||
* Authors:
|
||||
|
|
@ -257,8 +257,10 @@ extern void I830DPRINTF_stub(const char *filename, int line,
|
|||
* preprocessor symbol, and equal to zero.
|
||||
*/
|
||||
#if 1
|
||||
#ifndef I810_DEBUG
|
||||
#define I810_DEBUG 0
|
||||
#endif
|
||||
#endif
|
||||
#ifndef I810_DEBUG
|
||||
#warning "Debugging enabled - expect reduced performance"
|
||||
extern int I810_DEBUG;
|
||||
|
|
|
|||
|
|
@ -25,7 +25,7 @@ TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
|
|||
SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
|
||||
**************************************************************************/
|
||||
/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/i810/i810_accel.c,v 1.19 2003/04/24 18:00:24 eich Exp $ */
|
||||
/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/i810/i810_accel.c,v 1.22 2004/01/03 02:11:53 dawes Exp $ */
|
||||
|
||||
/*
|
||||
* Reformatted with GNU indent (2.2.8), using the following options:
|
||||
|
|
@ -48,47 +48,9 @@ SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
|||
|
||||
#include "xf86_ansic.h"
|
||||
#include "xf86.h"
|
||||
|
||||
#include "xaarop.h"
|
||||
#include "i810.h"
|
||||
|
||||
static unsigned int i810Rop[16] = {
|
||||
0x00, /* GXclear */
|
||||
0x88, /* GXand */
|
||||
0x44, /* GXandReverse */
|
||||
0xCC, /* GXcopy */
|
||||
0x22, /* GXandInvert */
|
||||
0xAA, /* GXnoop */
|
||||
0x66, /* GXxor */
|
||||
0xEE, /* GXor */
|
||||
0x11, /* GXnor */
|
||||
0x99, /* GXequiv */
|
||||
0x55, /* GXinvert */
|
||||
0xDD, /* GXorReverse */
|
||||
0x33, /* GXcopyInvert */
|
||||
0xBB, /* GXorInverted */
|
||||
0x77, /* GXnand */
|
||||
0xFF /* GXset */
|
||||
};
|
||||
|
||||
static unsigned int i810PatternRop[16] = {
|
||||
0x00, /* GXclear */
|
||||
0xA0, /* GXand */
|
||||
0x50, /* GXandReverse */
|
||||
0xF0, /* GXcopy */
|
||||
0x0A, /* GXandInvert */
|
||||
0xAA, /* GXnoop */
|
||||
0x5A, /* GXxor */
|
||||
0xFA, /* GXor */
|
||||
0x05, /* GXnor */
|
||||
0xA5, /* GXequiv */
|
||||
0x55, /* GXinvert */
|
||||
0xF5, /* GXorReverse */
|
||||
0x0F, /* GXcopyInvert */
|
||||
0xAF, /* GXorInverted */
|
||||
0x5F, /* GXnand */
|
||||
0xFF /* GXset */
|
||||
};
|
||||
|
||||
static void I810SetupForMono8x8PatternFill(ScrnInfoPtr pScrn,
|
||||
int pattx, int patty,
|
||||
int fg, int bg, int rop,
|
||||
|
|
@ -130,10 +92,7 @@ I810AccelInit(ScreenPtr pScreen)
|
|||
|
||||
pI810->bufferOffset = 0;
|
||||
infoPtr->Flags = LINEAR_FRAMEBUFFER | OFFSCREEN_PIXMAPS;
|
||||
/* There is a bit blt bug in 24 bpp. This is a problem, but
|
||||
* at least without the pixmap cache we can pass the test suite */
|
||||
if (pScrn->depth != 24)
|
||||
infoPtr->Flags |= PIXMAP_CACHE;
|
||||
infoPtr->Flags |= PIXMAP_CACHE;
|
||||
|
||||
/* Sync
|
||||
*/
|
||||
|
|
@ -334,7 +293,7 @@ I810SetupForSolidFill(ScrnInfoPtr pScrn, int color, int rop,
|
|||
|
||||
/* Color blit, p166 */
|
||||
pI810->BR[13] = (BR13_SOLID_PATTERN |
|
||||
(i810PatternRop[rop] << 16) |
|
||||
(XAAPatternROP[rop] << 16) |
|
||||
(pScrn->displayWidth * pI810->cpp));
|
||||
pI810->BR[16] = color;
|
||||
}
|
||||
|
|
@ -380,7 +339,7 @@ I810SetupForScreenToScreenCopy(ScrnInfoPtr pScrn, int xdir, int ydir, int rop,
|
|||
if (xdir == -1)
|
||||
pI810->BR[13] |= BR13_RIGHT_TO_LEFT;
|
||||
|
||||
pI810->BR[13] |= i810Rop[rop] << 16;
|
||||
pI810->BR[13] |= XAACopyROP[rop] << 16;
|
||||
|
||||
pI810->BR[18] = 0;
|
||||
}
|
||||
|
|
@ -401,9 +360,12 @@ I810SubsequentScreenToScreenCopy(ScrnInfoPtr pScrn, int x1, int y1,
|
|||
* This was developed empirically so it may not catch all
|
||||
* cases.
|
||||
*/
|
||||
#define I810_MWIDTH 8
|
||||
|
||||
if ( !(pI810->BR[13] & BR13_RIGHT_TO_LEFT) && (y2 - y1) < 3
|
||||
&& (y2 - y1) >= 0 && (x2 - x1) <= (w + 4) && (w > 4))
|
||||
w = 4;
|
||||
&& (y2 - y1) >= 0 && (x2 - x1) <= (w + I810_MWIDTH)
|
||||
&& (w > I810_MWIDTH))
|
||||
w = I810_MWIDTH;
|
||||
do {
|
||||
|
||||
if (pI810->BR[13] & BR13_PITCH_SIGN_BIT) {
|
||||
|
|
@ -441,7 +403,10 @@ I810SubsequentScreenToScreenCopy(ScrnInfoPtr pScrn, int x1, int y1,
|
|||
break;
|
||||
x2 += w;
|
||||
x1 += w;
|
||||
w = w_back;
|
||||
if (w_back > I810_MWIDTH)
|
||||
w = I810_MWIDTH;
|
||||
else
|
||||
w = w_back;
|
||||
} while (1);
|
||||
}
|
||||
|
||||
|
|
@ -460,9 +425,9 @@ I810SetupForMono8x8PatternFill(ScrnInfoPtr pScrn, int pattx, int patty,
|
|||
pI810->BR[18] = bg;
|
||||
pI810->BR[19] = fg;
|
||||
pI810->BR[13] = (pScrn->displayWidth * pI810->cpp);
|
||||
pI810->BR[13] |= i810PatternRop[rop] << 16;
|
||||
pI810->BR[13] |= XAAPatternROP[rop] << 16;
|
||||
if (bg == -1)
|
||||
pI810->BR[13] |= BR13_MONO_TRANSPCY;
|
||||
pI810->BR[13] |= BR13_MONO_PATN_TRANS;
|
||||
}
|
||||
|
||||
static void
|
||||
|
|
@ -524,7 +489,7 @@ I810SetupForScanlineCPUToScreenColorExpandFill(ScrnInfoPtr pScrn,
|
|||
fg, bg, rop, planemask);
|
||||
|
||||
pI810->BR[13] = (pScrn->displayWidth * pI810->cpp);
|
||||
pI810->BR[13] |= i810Rop[rop] << 16;
|
||||
pI810->BR[13] |= XAACopyROP[rop] << 16;
|
||||
pI810->BR[13] |= (1 << 27);
|
||||
if (bg == -1)
|
||||
pI810->BR[13] |= BR13_MONO_TRANSPCY;
|
||||
|
|
|
|||
|
|
@ -25,7 +25,7 @@ TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
|
|||
SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
|
||||
**************************************************************************/
|
||||
/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/i810/i810_driver.c,v 1.98 2003/12/07 18:28:07 dawes Exp $ */
|
||||
/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/i810/i810_driver.c,v 1.102 2004/01/02 22:16:18 dawes Exp $ */
|
||||
|
||||
/*
|
||||
* Reformatted with GNU indent (2.2.8), using the following options:
|
||||
|
|
@ -244,6 +244,8 @@ const char *I810xaaSymbols[] = {
|
|||
"XAACreateInfoRec",
|
||||
"XAADestroyInfoRec",
|
||||
"XAAInit",
|
||||
"XAACopyROP",
|
||||
"XAAPatternROP",
|
||||
NULL
|
||||
};
|
||||
|
||||
|
|
@ -376,6 +378,7 @@ i810Setup(pointer module, pointer opts, int *errmaj, int *errmin)
|
|||
I810drmSymbols,
|
||||
I810driSymbols,
|
||||
I810shadowSymbols,
|
||||
driShadowFBSymbols,
|
||||
#endif
|
||||
I810vbeSymbols, vbeOptionalSymbols,
|
||||
I810ddcSymbols, I810int10Symbols, NULL);
|
||||
|
|
@ -2219,10 +2222,39 @@ Bool
|
|||
I810SwitchMode(int scrnIndex, DisplayModePtr mode, int flags)
|
||||
{
|
||||
ScrnInfoPtr pScrn = xf86Screens[scrnIndex];
|
||||
I810Ptr pI810 = I810PTR(pScrn);
|
||||
|
||||
if (I810_DEBUG & DEBUG_VERBOSE_CURSOR)
|
||||
ErrorF("I810SwitchMode %p %x\n", (void *)mode, flags);
|
||||
|
||||
#ifdef XF86DRI
|
||||
if (pI810->directRenderingEnabled) {
|
||||
if (I810_DEBUG & DEBUG_VERBOSE_DRI)
|
||||
ErrorF("calling dri lock\n");
|
||||
DRILock(screenInfo.screens[scrnIndex], 0);
|
||||
pI810->LockHeld = 1;
|
||||
}
|
||||
#endif
|
||||
|
||||
if (pI810->AccelInfoRec != NULL) {
|
||||
I810RefreshRing(pScrn);
|
||||
I810Sync(pScrn);
|
||||
pI810->AccelInfoRec->NeedToSync = FALSE;
|
||||
}
|
||||
I810Restore(pScrn);
|
||||
|
||||
#ifdef XF86DRI
|
||||
if (!I810DRIEnter(pScrn)) {
|
||||
return FALSE;
|
||||
}
|
||||
if (pI810->directRenderingEnabled) {
|
||||
if (I810_DEBUG & DEBUG_VERBOSE_DRI)
|
||||
ErrorF("calling dri unlock\n");
|
||||
DRIUnlock(screenInfo.screens[scrnIndex]);
|
||||
pI810->LockHeld = 0;
|
||||
}
|
||||
#endif
|
||||
|
||||
return I810ModeInit(pScrn, mode);
|
||||
}
|
||||
|
||||
|
|
@ -2356,6 +2388,11 @@ I810CloseScreen(int scrnIndex, ScreenPtr pScreen)
|
|||
XAAInfoRecPtr infoPtr = pI810->AccelInfoRec;
|
||||
|
||||
if (pScrn->vtSema == TRUE) {
|
||||
if (pI810->AccelInfoRec != NULL) {
|
||||
I810RefreshRing(pScrn);
|
||||
I810Sync(pScrn);
|
||||
pI810->AccelInfoRec->NeedToSync = FALSE;
|
||||
}
|
||||
I810Restore(pScrn);
|
||||
vgaHWLock(hwp);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/i810/i810_reg.h,v 1.13 2003/02/06 04:18:04 dawes Exp $ */
|
||||
/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/i810/i810_reg.h,v 1.14 2004/01/02 20:22:17 dawes Exp $ */
|
||||
/**************************************************************************
|
||||
|
||||
Copyright 1998-1999 Precision Insight, Inc., Cedar Park, Texas.
|
||||
|
|
@ -497,6 +497,7 @@ SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
|||
#define BR13_RIGHT_TO_LEFT 0x40000000
|
||||
#define BR13_LEFT_TO_RIGHT 0x00000000
|
||||
#define BR13_MONO_TRANSPCY 0x20000000
|
||||
#define BR13_MONO_PATN_TRANS 0x10000000
|
||||
#define BR13_USE_DYN_DEPTH 0x04000000
|
||||
#define BR13_DYN_8BPP 0x00000000
|
||||
#define BR13_DYN_16BPP 0x01000000
|
||||
|
|
|
|||
|
|
@ -27,7 +27,7 @@ TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
|
|||
SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
|
||||
**************************************************************************/
|
||||
/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/i810/i830.h,v 1.11 2003/10/21 04:13:40 dawes Exp $ */
|
||||
/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/i810/i830.h,v 1.12 2004/01/07 03:43:19 dawes Exp $ */
|
||||
|
||||
/*
|
||||
* Authors:
|
||||
|
|
@ -302,6 +302,7 @@ typedef struct _I830Rec {
|
|||
int yoffset;
|
||||
|
||||
int SaveGeneration;
|
||||
Bool vbeRestoreWorkaround;
|
||||
} I830Rec;
|
||||
|
||||
#define I830PTR(p) ((I830Ptr)((p)->driverPrivate))
|
||||
|
|
|
|||
|
|
@ -32,7 +32,7 @@ TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
|
|||
SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
|
||||
**************************************************************************/
|
||||
/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/i810/i830_accel.c,v 1.8 2003/04/24 18:00:24 eich Exp $ */
|
||||
/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/i810/i830_accel.c,v 1.9 2003/12/22 12:27:07 alanh Exp $ */
|
||||
|
||||
/*
|
||||
* Reformatted with GNU indent (2.2.8), using the following options:
|
||||
|
|
@ -55,48 +55,10 @@ SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
|||
|
||||
#include "xf86_ansic.h"
|
||||
#include "xf86.h"
|
||||
|
||||
#include "xaarop.h"
|
||||
#include "i830.h"
|
||||
#include "i810_reg.h"
|
||||
|
||||
static unsigned int i810Rop[16] = {
|
||||
0x00, /* GXclear */
|
||||
0x88, /* GXand */
|
||||
0x44, /* GXandReverse */
|
||||
0xCC, /* GXcopy */
|
||||
0x22, /* GXandInvert */
|
||||
0xAA, /* GXnoop */
|
||||
0x66, /* GXxor */
|
||||
0xEE, /* GXor */
|
||||
0x11, /* GXnor */
|
||||
0x99, /* GXequiv */
|
||||
0x55, /* GXinvert */
|
||||
0xDD, /* GXorReverse */
|
||||
0x33, /* GXcopyInvert */
|
||||
0xBB, /* GXorInverted */
|
||||
0x77, /* GXnand */
|
||||
0xFF /* GXset */
|
||||
};
|
||||
|
||||
static unsigned int i810PatternRop[16] = {
|
||||
0x00, /* GXclear */
|
||||
0xA0, /* GXand */
|
||||
0x50, /* GXandReverse */
|
||||
0xF0, /* GXcopy */
|
||||
0x0A, /* GXandInvert */
|
||||
0xAA, /* GXnoop */
|
||||
0x5A, /* GXxor */
|
||||
0xFA, /* GXor */
|
||||
0x05, /* GXnor */
|
||||
0xA5, /* GXequiv */
|
||||
0x55, /* GXinvert */
|
||||
0xF5, /* GXorReverse */
|
||||
0x0F, /* GXcopyInvert */
|
||||
0xAF, /* GXorInverted */
|
||||
0x5F, /* GXnand */
|
||||
0xFF /* GXset */
|
||||
};
|
||||
|
||||
int
|
||||
I830WaitLpRing(ScrnInfoPtr pScrn, int n, int timeout_millis)
|
||||
{
|
||||
|
|
@ -397,7 +359,7 @@ I830SetupForSolidFill(ScrnInfoPtr pScrn, int color, int rop,
|
|||
ErrorF("I830SetupForFillRectSolid color: %x rop: %x mask: %x\n",
|
||||
color, rop, planemask);
|
||||
|
||||
pI830->BR[13] = ((i810PatternRop[rop] << 16) |
|
||||
pI830->BR[13] = ((XAAPatternROP[rop] << 16) |
|
||||
(pScrn->displayWidth * pI830->cpp));
|
||||
|
||||
pI830->BR[16] = color;
|
||||
|
|
@ -453,7 +415,7 @@ I830SetupForScreenToScreenCopy(ScrnInfoPtr pScrn, int xdir, int ydir, int rop,
|
|||
xdir, ydir, rop, planemask, transparency_color);
|
||||
|
||||
pI830->BR[13] = (pScrn->displayWidth * pI830->cpp);
|
||||
pI830->BR[13] |= i810Rop[rop] << 16;
|
||||
pI830->BR[13] |= XAACopyROP[rop] << 16;
|
||||
|
||||
switch (pScrn->bitsPerPixel) {
|
||||
case 8:
|
||||
|
|
@ -519,7 +481,7 @@ I830SetupForMono8x8PatternFill(ScrnInfoPtr pScrn, int pattx, int patty,
|
|||
pI830->BR[19] = fg;
|
||||
|
||||
pI830->BR[13] = (pScrn->displayWidth * pI830->cpp); /* In bytes */
|
||||
pI830->BR[13] |= i810PatternRop[rop] << 16;
|
||||
pI830->BR[13] |= XAAPatternROP[rop] << 16;
|
||||
if (bg == -1)
|
||||
pI830->BR[13] |= (1 << 28);
|
||||
|
||||
|
|
@ -608,7 +570,7 @@ I830SetupForScanlineCPUToScreenColorExpandFill(ScrnInfoPtr pScrn,
|
|||
|
||||
/* Fill out register values */
|
||||
pI830->BR[13] = (pScrn->displayWidth * pI830->cpp);
|
||||
pI830->BR[13] |= i810Rop[rop] << 16;
|
||||
pI830->BR[13] |= XAACopyROP[rop] << 16;
|
||||
if (bg == -1)
|
||||
pI830->BR[13] |= (1 << 29);
|
||||
|
||||
|
|
@ -697,7 +659,7 @@ I830SetupForScanlineImageWrite(ScrnInfoPtr pScrn, int rop,
|
|||
|
||||
/* Fill out register values */
|
||||
pI830->BR[13] = (pScrn->displayWidth * pI830->cpp);
|
||||
pI830->BR[13] |= i810Rop[rop] << 16;
|
||||
pI830->BR[13] |= XAACopyROP[rop] << 16;
|
||||
|
||||
switch (pScrn->bitsPerPixel) {
|
||||
case 8:
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/i810/i830_driver.c,v 1.47 2003/11/03 14:47:28 alanh Exp $ */
|
||||
/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/i810/i830_driver.c,v 1.49 2004/01/25 16:57:48 dawes Exp $ */
|
||||
/**************************************************************************
|
||||
|
||||
Copyright 2001 VA Linux Systems Inc., Fremont, California.
|
||||
|
|
@ -201,7 +201,8 @@ typedef enum {
|
|||
OPTION_PAGEFLIP,
|
||||
OPTION_XVIDEO,
|
||||
OPTION_VIDEO_KEY,
|
||||
OPTION_COLOR_KEY
|
||||
OPTION_COLOR_KEY,
|
||||
OPTION_VBE_RESTORE
|
||||
} I830Opts;
|
||||
|
||||
static OptionInfoRec I830BIOSOptions[] = {
|
||||
|
|
@ -213,6 +214,7 @@ static OptionInfoRec I830BIOSOptions[] = {
|
|||
{OPTION_XVIDEO, "XVideo", OPTV_BOOLEAN, {0}, TRUE},
|
||||
{OPTION_COLOR_KEY, "ColorKey", OPTV_INTEGER, {0}, FALSE},
|
||||
{OPTION_VIDEO_KEY, "VideoKey", OPTV_INTEGER, {0}, FALSE},
|
||||
{OPTION_VBE_RESTORE, "VBERestore", OPTV_BOOLEAN, {0}, FALSE},
|
||||
{-1, NULL, OPTV_NONE, {0}, FALSE}
|
||||
};
|
||||
/* *INDENT-ON* */
|
||||
|
|
@ -2124,6 +2126,16 @@ I830BIOSPreInit(ScrnInfoPtr pScrn, int flags)
|
|||
VBEFreeVBEInfo(pI830->vbeInfo);
|
||||
vbeFree(pVbe);
|
||||
|
||||
/* Use the VBE mode restore workaround by default. */
|
||||
pI830->vbeRestoreWorkaround = TRUE;
|
||||
from = X_DEFAULT;
|
||||
if (xf86ReturnOptValBool(pI830->Options, OPTION_VBE_RESTORE, FALSE)) {
|
||||
pI830->vbeRestoreWorkaround = FALSE;
|
||||
from = X_CONFIG;
|
||||
}
|
||||
xf86DrvMsg(pScrn->scrnIndex, from, "VBE Restore workaround: %s.\n",
|
||||
pI830->vbeRestoreWorkaround ? "enabled" : "disabled");
|
||||
|
||||
#if defined(XF86DRI)
|
||||
/* Load the dri module if requested. */
|
||||
if (xf86ReturnOptValBool(pI830->Options, OPTION_DRI, FALSE) &&
|
||||
|
|
@ -2329,10 +2341,6 @@ SaveHWState(ScrnInfoPtr pScrn)
|
|||
vgaHWUnlock(hwp);
|
||||
vgaHWSave(pScrn, vgaReg, VGA_SR_FONTS);
|
||||
|
||||
#ifndef I845G_VBE_WORKAROUND
|
||||
#define I845G_VBE_WORKAROUND 1
|
||||
#endif
|
||||
|
||||
pVesa = pI830->vesa;
|
||||
/*
|
||||
* This save/restore method doesn't work for 845G BIOS, or for some
|
||||
|
|
@ -2344,7 +2352,7 @@ SaveHWState(ScrnInfoPtr pScrn)
|
|||
* registers, turning off the irq & breaking the kernel module
|
||||
* behaviour.
|
||||
*/
|
||||
if (!I845G_VBE_WORKAROUND) {
|
||||
if (!pI830->vbeRestoreWorkaround) {
|
||||
CARD16 imr = INREG16(IMR);
|
||||
CARD16 ier = INREG16(IER);
|
||||
CARD16 hwstam = INREG16(HWSTAM);
|
||||
|
|
@ -2539,6 +2547,22 @@ I830VESASetMode(ScrnInfoPtr pScrn, DisplayModePtr pMode)
|
|||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* Test if the extendedRefresh BIOS function is supported.
|
||||
*/
|
||||
if (pI830->useExtendedRefresh && !pI830->vesa->useDefaultRefresh &&
|
||||
(mode & (1 << 11)) && data && data->data && data->block) {
|
||||
if (!SetRefreshRate(pScrn, mode, 60)) {
|
||||
xf86DrvMsg(pScrn->scrnIndex, X_INFO,
|
||||
"BIOS call 0x5f05 not supported, "
|
||||
"setting refresh with VBE 3 method.\n");
|
||||
pI830->useExtendedRefresh = FALSE;
|
||||
pI830->enableDisplays = FALSE;
|
||||
xf86DrvMsg(pScrn->scrnIndex, X_INFO,
|
||||
"Not using BIOS call 0x5f64 to enable displays.\n");
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* The BIOS may not set a scanline pitch that would require more video
|
||||
* memory than it's aware of. We check for this later, and set it
|
||||
|
|
|
|||
Loading…
Reference in New Issue