gpu: host1x: Use a signed return type for do_relocs()
[cascardo/linux.git] / drivers / gpu / drm / nouveau / nv50_display.c
index 44e1952..ea39216 100644 (file)
 #include <drm/drm_fb_helper.h>
 
 #include <nvif/class.h>
+#include <nvif/cl0002.h>
+#include <nvif/cl5070.h>
+#include <nvif/cl507a.h>
+#include <nvif/cl507b.h>
+#include <nvif/cl507c.h>
+#include <nvif/cl507d.h>
+#include <nvif/cl507e.h>
 
 #include "nouveau_drm.h"
 #include "nouveau_dma.h"
@@ -774,7 +781,6 @@ nv50_crtc_set_scale(struct nouveau_crtc *nv_crtc, bool update)
         */
        if (nv_connector && ( nv_connector->underscan == UNDERSCAN_ON ||
                             (nv_connector->underscan == UNDERSCAN_AUTO &&
-                             nv_connector->edid &&
                              drm_detect_hdmi_monitor(nv_connector->edid)))) {
                u32 bX = nv_connector->underscan_hborder;
                u32 bY = nv_connector->underscan_vborder;
@@ -1962,10 +1968,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;
                }