summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--man/nv.man4
-rw-r--r--src/g80_driver.c13
-rw-r--r--src/g80_sor.c7
-rw-r--r--src/g80_type.h1
4 files changed, 17 insertions, 8 deletions
diff --git a/man/nv.man b/man/nv.man
index 7a08823..19816bd 100644
--- a/man/nv.man
+++ b/man/nv.man
@@ -162,6 +162,10 @@ Default: XAA.
Enable or disable flat panel dithering by default.
Dithering can also be enabled or disabled using the RandR 1.2 \*qdither\*q output property.
Default: off.
+.TP
+.BI "Option \*qAllowDualLinkModes\*q \*q" boolean \*q
+Allow validation of dual-link DVI modes.
+Not all GPUs are configured at boot time to be able to handle dual-link modes, so they are disabled by default.
.
.\" RandR 1.2
.PP
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;