From 1003bcbe4381201f1d7b34dc1af72f57b2943b67 Mon Sep 17 00:00:00 2001 From: Aaron Plattner Date: Sat, 13 Oct 2007 14:36:49 -0700 Subject: G80 bug #12637: Unwedge the hardware if the BIOS left it stuck. --- src/g80_display.c | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/src/g80_display.c b/src/g80_display.c index 6c95773..dda1c7f 100644 --- a/src/g80_display.c +++ b/src/g80_display.c @@ -250,6 +250,7 @@ Bool G80DispInit(ScrnInfoPtr pScrn) { G80Ptr pNv = G80PTR(pScrn); + CARD32 val; if(pNv->reg[0x00610024/4] & 0x100) { pNv->reg[0x00610024/4] = 0x100; @@ -258,7 +259,15 @@ G80DispInit(ScrnInfoPtr pScrn) } pNv->reg[0x00610200/4] = 0x2b00; - while((pNv->reg[0x00610200/4] & 0x1e0000) != 0); + do { + val = pNv->reg[0x00610200/4]; + + if ((val & 0x9f0000) == 0x20000) + pNv->reg[0x00610200/4] = val | 0x800000; + + if ((val & 0x3f0000) == 0x30000) + pNv->reg[0x00610200/4] = val | 0x200000; + } while ((val & 0x1e0000) != 0); pNv->reg[0x00610300/4] = 1; pNv->reg[0x00610200/4] = 0x1000b03; while(!(pNv->reg[0x00610200/4] & 0x40000000)); -- cgit v1.2.3