summaryrefslogtreecommitdiff
path: root/src/radeon_driver.c
diff options
context:
space:
mode:
authorDaniel Stone <daniel@fooishbar.org>2004-12-06 13:27:56 +0000
committerDaniel Stone <daniel@fooishbar.org>2004-12-06 13:27:56 +0000
commited217003127028483fd2956851d438977169d154 (patch)
tree4f5584fdb00b430ad409c66e2d1c6cab27dcaf89 /src/radeon_driver.c
parent2b8ab42b05b32710fa4f71a25e2f84192e637fbd (diff)
Apply Debian patch to re-POST via VBE if driver thinks it has no video
memory (a symptom of incompletely coming up from D3 power state), which fixes some Dell laptops (closes: #1890).
Diffstat (limited to 'src/radeon_driver.c')
-rw-r--r--src/radeon_driver.c14
1 files changed, 14 insertions, 0 deletions
diff --git a/src/radeon_driver.c b/src/radeon_driver.c
index f937464..4647d78 100644
--- a/src/radeon_driver.c
+++ b/src/radeon_driver.c
@@ -381,6 +381,7 @@ static const char *int10Symbols[] = {
"xf86InitInt10",
"xf86FreeInt10",
"xf86int10Addr",
+ "xf86ExecX86int10",
NULL
};
@@ -7297,9 +7298,22 @@ Bool RADEONEnterVT(int scrnIndex, int flags)
{
ScrnInfoPtr pScrn = xf86Screens[scrnIndex];
RADEONInfoPtr info = RADEONPTR(pScrn);
+ unsigned char *RADEONMMIO = info->MMIO;
RADEONTRACE(("RADEONEnterVT\n"));
+ if (INREG(RADEON_CONFIG_MEMSIZE) == 0) { /* Softboot V_BIOS */
+ xf86Int10InfoPtr pInt;
+ xf86DrvMsg(pScrn->scrnIndex, X_WARNING,
+ "zero MEMSIZE, probably at D3cold. Re-POSTing via int10.\n");
+ pInt = xf86InitInt10 (info->pEnt->index);
+ if (pInt) {
+ pInt->num = 0xe6;
+ xf86ExecX86int10 (pInt);
+ xf86FreeInt10 (pInt);
+ }
+ }
+
if (info->FBDev) {
unsigned char *RADEONMMIO = info->MMIO;
if (!fbdevHWEnterVT(scrnIndex,flags)) return FALSE;