diff options
author | Aaron Plattner <aplattner@nvidia.com> | 2007-06-07 18:28:56 -0700 |
---|---|---|
committer | Aaron Plattner <aplattner@nvidia.com> | 2007-06-07 18:28:56 -0700 |
commit | 4e56465a79587c4df6bf1dfd7cc87a4f22707a8f (patch) | |
tree | eff61c1256b9ac23241e1ba91e96253e98c1848b /src | |
parent | 6b71721439802bffd715602af3036083ff442449 (diff) |
G80: Mode validation.
Disable LVDS modes larger than the native resolution.
Disable dual-link TMDS modes for now since they don't work reliably.
Diffstat (limited to 'src')
-rw-r--r-- | src/g80_output.c | 6 | ||||
-rw-r--r-- | src/g80_sor.c | 28 |
2 files changed, 30 insertions, 4 deletions
diff --git a/src/g80_output.c b/src/g80_output.c index 6a2723b..11bdb25 100644 --- a/src/g80_output.c +++ b/src/g80_output.c @@ -164,8 +164,10 @@ G80OutputSetPClk(xf86OutputPtr output, int pclk) int G80OutputModeValid(xf86OutputPtr output, DisplayModePtr mode) { - if(mode->Clock > 400000 || mode->Clock < 25000) - return MODE_CLOCK_RANGE; + if(mode->Clock > 400000) + return MODE_CLOCK_HIGH; + if(mode->Clock < 25000) + return MODE_CLOCK_LOW; return MODE_OK; } diff --git a/src/g80_sor.c b/src/g80_sor.c index a51e5e0..2ab9f2e 100644 --- a/src/g80_sor.c +++ b/src/g80_sor.c @@ -65,6 +65,30 @@ G80SorDPMSSet(xf86OutputPtr output, int mode) while((pNv->reg[(0x61C030+off)/4] & 0x10000000)); } +static int +G80TMDSModeValid(xf86OutputPtr output, DisplayModePtr mode) +{ + // Disable dual-link modes until I can find a way to make them work + // reliably. + if (mode->Clock > 165000) + return MODE_CLOCK_HIGH; + + return G80OutputModeValid(output, mode); +} + +static int +G80LVDSModeValid(xf86OutputPtr output, DisplayModePtr mode) +{ + G80OutputPrivPtr pPriv = output->driver_private; + DisplayModePtr native = pPriv->nativeMode; + + // Ignore modes larger than the native res. + if (mode->HDisplay > native->HDisplay || mode->VDisplay > native->VDisplay) + return MODE_PANEL; + + return G80OutputModeValid(output, mode); +} + static void G80SorModeSet(xf86OutputPtr output, DisplayModePtr mode, DisplayModePtr adjusted_mode) @@ -180,7 +204,7 @@ static const xf86OutputFuncsRec G80SorTMDSOutputFuncs = { .dpms = G80SorDPMSSet, .save = NULL, .restore = NULL, - .mode_valid = G80OutputModeValid, + .mode_valid = G80TMDSModeValid, .mode_fixup = G80OutputModeFixup, .prepare = G80OutputPrepare, .commit = G80OutputCommit, @@ -194,7 +218,7 @@ static const xf86OutputFuncsRec G80SorLVDSOutputFuncs = { .dpms = G80SorDPMSSet, .save = NULL, .restore = NULL, - .mode_valid = G80OutputModeValid, + .mode_valid = G80LVDSModeValid, .mode_fixup = G80SorModeFixupScale, .prepare = G80OutputPrepare, .commit = G80OutputCommit, |