summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAaron Plattner <aplattner@nvidia.com>2007-07-08 00:53:00 -0700
committerAaron Plattner <aaron@weasel.nvidia.com>2007-07-08 00:53:00 -0700
commit42dffde988176a3f85b0586ecb8d672b74050760 (patch)
treebb5ee1027673f17fe5b364f3d50d8c7fe8358f21
parentbc439899f323410b0549068cd88348e7fb62866b (diff)
Work around more MacBook wackiness.
Turn off more corrupt the framebuffer mode. Don't mess with the pixel clock for LVDS as long as we're trusting the VBIOS-programmed timings.
-rw-r--r--src/g80_driver.c1
-rw-r--r--src/g80_output.c3
-rw-r--r--src/g80_sor.c5
3 files changed, 6 insertions, 3 deletions
diff --git a/src/g80_driver.c b/src/g80_driver.c
index 0f97a2d..7801602 100644
--- a/src/g80_driver.c
+++ b/src/g80_driver.c
@@ -829,6 +829,7 @@ G80ScreenInit(int scrnIndex, ScreenPtr pScreen, int argc, char **argv)
AvailFBArea.y2 = pNv->offscreenHeight;
xf86InitFBManager(pScreen, &AvailFBArea);
+ pNv->reg[0x00001708/4] = 0;
for(i = 0; i < 8; i++)
pNv->reg[0x00001900/4 + i] = 0;
diff --git a/src/g80_output.c b/src/g80_output.c
index 11bdb25..448864f 100644
--- a/src/g80_output.c
+++ b/src/g80_output.c
@@ -158,7 +158,8 @@ void
G80OutputSetPClk(xf86OutputPtr output, int pclk)
{
G80OutputPrivPtr pPriv = output->driver_private;
- pPriv->set_pclk(output, pclk);
+ if(pPriv->set_pclk)
+ pPriv->set_pclk(output, pclk);
}
int
diff --git a/src/g80_sor.c b/src/g80_sor.c
index 2ab9f2e..5ff7318 100644
--- a/src/g80_sor.c
+++ b/src/g80_sor.c
@@ -38,7 +38,7 @@ G80SorSetPClk(xf86OutputPtr output, int pclk)
G80Ptr pNv = G80PTR(output->scrn);
G80OutputPrivPtr pPriv = output->driver_private;
const int orOff = 0x800 * pPriv->or;
- const int limit = pPriv->panelType == LVDS ? 112000 : 165000;
+ const int limit = 165000;
pNv->reg[(0x00614300+orOff)/4] = (pclk > limit) ? 0x101 : 0;
}
@@ -284,7 +284,8 @@ G80CreateSor(ScrnInfoPtr pScrn, ORNum or, PanelType panelType)
pPriv->or = or;
pPriv->panelType = panelType;
pPriv->cached_status = XF86OutputStatusUnknown;
- pPriv->set_pclk = G80SorSetPClk;
+ if(panelType == TMDS)
+ pPriv->set_pclk = G80SorSetPClk;
output->driver_private = pPriv;
output->interlaceAllowed = TRUE;
output->doubleScanAllowed = TRUE;