summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorAaron Plattner <aplattner@nvidia.com>2008-05-09 18:31:07 -0700
committerAaron Plattner <aplattner@nvidia.com>2008-05-09 18:31:07 -0700
commitcb83fbdfa22aa408e6692256cd44b78fef53e801 (patch)
tree209c126fcd04c841f39190ca24288d840016501f /src
parent8db2d4e63508f59299098e092ae85e543cf61d03 (diff)
Add an option to allow validation of dual-link DVI modes.
These modes don't work at bootup (i.e. power saving) configuration on all GPUs, so they're still disabled by default. This option allows users to enable them in case they actually work.
Diffstat (limited to 'src')
-rw-r--r--src/g80_driver.c13
-rw-r--r--src/g80_sor.c7
-rw-r--r--src/g80_type.h1
3 files changed, 13 insertions, 8 deletions
diff --git a/src/g80_driver.c b/src/g80_driver.c
index 99ea737..a0182a1 100644
--- a/src/g80_driver.c
+++ b/src/g80_driver.c
@@ -106,14 +106,16 @@ typedef enum {
OPTION_NOACCEL,
OPTION_ACCEL_METHOD,
OPTION_FP_DITHER,
+ OPTION_ALLOW_DUAL_LINK,
} G80Opts;
static const OptionInfoRec G80Options[] = {
- { OPTION_HW_CURSOR, "HWCursor", OPTV_BOOLEAN, {0}, FALSE },
- { OPTION_NOACCEL, "NoAccel", OPTV_BOOLEAN, {0}, FALSE },
- { OPTION_ACCEL_METHOD, "AccelMethod", OPTV_STRING, {0}, FALSE },
- { OPTION_FP_DITHER, "FPDither", OPTV_BOOLEAN, {0}, FALSE },
- { -1, NULL, OPTV_NONE, {0}, FALSE }
+ { OPTION_HW_CURSOR, "HWCursor", OPTV_BOOLEAN, {0}, FALSE },
+ { OPTION_NOACCEL, "NoAccel", OPTV_BOOLEAN, {0}, FALSE },
+ { OPTION_ACCEL_METHOD, "AccelMethod", OPTV_STRING, {0}, FALSE },
+ { OPTION_FP_DITHER, "FPDither", OPTV_BOOLEAN, {0}, FALSE },
+ { OPTION_ALLOW_DUAL_LINK, "AllowDualLinkModes", OPTV_BOOLEAN, {0}, FALSE },
+ { -1, NULL, OPTV_NONE, {0}, FALSE }
};
static Bool
@@ -331,6 +333,7 @@ G80PreInit(ScrnInfoPtr pScrn, int flags)
}
pNv->Dither = xf86ReturnOptValBool(pNv->Options, OPTION_FP_DITHER, FALSE);
+ pNv->AllowDualLink = xf86ReturnOptValBool(pNv->Options, OPTION_ALLOW_DUAL_LINK, FALSE);
/* Set the bits per RGB for 8bpp mode */
if(pScrn->depth == 8)
diff --git a/src/g80_sor.c b/src/g80_sor.c
index 02a5f3b..202e838 100644
--- a/src/g80_sor.c
+++ b/src/g80_sor.c
@@ -69,9 +69,10 @@ G80SorDPMSSet(xf86OutputPtr output, int mode)
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)
+ G80Ptr pNv = G80PTR(output->scrn);
+
+ // Disable dual-link modes unless enabled in the config file.
+ if (mode->Clock > 165000 && !pNv->AllowDualLink)
return MODE_CLOCK_HIGH;
return G80OutputModeValid(output, mode);
diff --git a/src/g80_type.h b/src/g80_type.h
index 5f4ee08..30ef3fe 100644
--- a/src/g80_type.h
+++ b/src/g80_type.h
@@ -67,6 +67,7 @@ typedef struct G80Rec {
Bool NoAccel;
AccelMethod AccelMethod;
Bool Dither;
+ Bool AllowDualLink;
/* XAA */
XAAInfoRecPtr xaa;