|
@@ -1962,10 +1962,17 @@ nv50_sor_mode_set(struct drm_encoder *encoder, struct drm_display_mode *umode,
|
|
|
switch (nv_encoder->dcb->type) {
|
|
|
case DCB_OUTPUT_TMDS:
|
|
|
if (nv_encoder->dcb->sorconf.link & 1) {
|
|
|
- if (mode->clock < 165000)
|
|
|
- proto = 0x1;
|
|
|
- else
|
|
|
- proto = 0x5;
|
|
|
+ proto = 0x1;
|
|
|
+ /* Only enable dual-link if:
|
|
|
+ * - Need to (i.e. rate > 165MHz)
|
|
|
+ * - DCB says we can
|
|
|
+ * - Not an HDMI monitor, since there's no dual-link
|
|
|
+ * on HDMI.
|
|
|
+ */
|
|
|
+ if (mode->clock >= 165000 &&
|
|
|
+ nv_encoder->dcb->duallink_possible &&
|
|
|
+ !drm_detect_hdmi_monitor(nv_connector->edid))
|
|
|
+ proto |= 0x4;
|
|
|
} else {
|
|
|
proto = 0x2;
|
|
|
}
|