diff options
author | Aaron Plattner <aplattner@nvidia.com> | 2008-04-27 16:23:28 -0700 |
---|---|---|
committer | Aaron Plattner <aplattner@nvidia.com> | 2008-04-28 14:45:11 -0700 |
commit | 4aa43a2b66e473f9154f1582f5cf0e4b4596e485 (patch) | |
tree | 01d6985512e6a6712bb53b8575e288593b80de22 | |
parent | 0ddee2347109e8c64bd2cb4693b97c3fa3aab94b (diff) |
Fix a few startup bugs.
-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) { |