summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAaron Plattner <aplattner@nvidia.com>2008-04-27 16:23:28 -0700
committerAaron Plattner <aplattner@nvidia.com>2008-04-28 14:45:11 -0700
commit4aa43a2b66e473f9154f1582f5cf0e4b4596e485 (patch)
tree01d6985512e6a6712bb53b8575e288593b80de22
parent0ddee2347109e8c64bd2cb4693b97c3fa3aab94b (diff)
Fix a few startup bugs.
-rw-r--r--src/g80_display.c2
-rw-r--r--src/g80_driver.c3
-rw-r--r--src/g80_output.c4
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) {