diff options
-rw-r--r-- | src/g80_display.c | 2 | ||||
-rw-r--r-- | src/g80_driver.c | 3 | ||||
-rw-r--r-- | src/g80_output.c | 4 |
3 files changed, 7 insertions, 2 deletions
diff --git a/src/g80_display.c b/src/g80_display.c index 2e97e92..8b97b8a 100644 --- a/src/g80_display.c +++ b/src/g80_display.c @@ -407,7 +407,7 @@ G80CrtcBlankScreen(xf86CrtcPtr crtc, Bool blank) C(0x00000860 + headOff, 0); C(0x00000864 + headOff, 0); pNv->reg[0x00610380/4] = 0; - pNv->reg[0x00610384/4] = pNv->RamAmountKBytes * 1024 - 1; + pNv->reg[0x00610384/4] = pNv->videoRam * 1024 - 1; pNv->reg[0x00610388/4] = 0x150000; pNv->reg[0x0061038C/4] = 0; C(0x00000884 + headOff, (pNv->videoRam << 2) - 0x40); diff --git a/src/g80_driver.c b/src/g80_driver.c index 1a83544..99ea737 100644 --- a/src/g80_driver.c +++ b/src/g80_driver.c @@ -367,7 +367,8 @@ G80PreInit(ScrnInfoPtr pScrn, int flags) } pNv->architecture = pNv->reg[0] >> 20 & 0x1ff; - pNv->videoRam = pNv->RamAmountKBytes = (pNv->reg[0x0010020C/4] & 0xFFF00000) >> 10; + tmp = pNv->reg[0x0010020C/4]; + pNv->videoRam = pNv->RamAmountKBytes = tmp >> 10 | (tmp & 1) << 22; /* Determine the size of BAR1 */ /* Some configs have BAR1 < total RAM < 256 MB */ diff --git a/src/g80_output.c b/src/g80_output.c index 05b907b..1cf4669 100644 --- a/src/g80_output.c +++ b/src/g80_output.c @@ -106,6 +106,10 @@ static Bool G80ReadPortMapping(int scrnIndex, G80Ptr pNv) port = (b >> 4) & 0xf; or = ffs((b >> 24) & 0xf) - 1; + if(b & 0x300000) + /* Can't handle this type of output yet */ + continue; + if(type == 0xe) break; switch(type) { |