diff options
author | Daniel Stone <daniel@fooishbar.org> | 2004-12-06 13:27:56 +0000 |
---|---|---|
committer | Daniel Stone <daniel@fooishbar.org> | 2004-12-06 13:27:56 +0000 |
commit | ed217003127028483fd2956851d438977169d154 (patch) | |
tree | 4f5584fdb00b430ad409c66e2d1c6cab27dcaf89 /src | |
parent | 2b8ab42b05b32710fa4f71a25e2f84192e637fbd (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')
-rw-r--r-- | src/radeon_driver.c | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/src/radeon_driver.c b/src/radeon_driver.c index f9374646..4647d78f 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; |