summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-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) {