drm/nouveau/kms/nv50-: Get rid of bogus nouveau_conn_mode_valid()
[linux-2.6-microblaze.git] / drivers / gpu / drm / nouveau / nouveau_dp.c
index 7b640e0..93e3751 100644 (file)
@@ -232,12 +232,14 @@ nv50_dp_mode_valid(struct drm_connector *connector,
                   unsigned *out_clock)
 {
        const unsigned min_clock = 25000;
-       unsigned max_clock, ds_clock, clock;
-       enum drm_mode_status ret;
+       unsigned max_clock, ds_clock, clock = mode->clock;
 
        if (mode->flags & DRM_MODE_FLAG_INTERLACE && !outp->caps.dp_interlace)
                return MODE_NO_INTERLACE;
 
+       if ((mode->flags & DRM_MODE_FLAG_3D_MASK) == DRM_MODE_FLAG_3D_FRAME_PACKING)
+               clock *= 2;
+
        max_clock = outp->dp.link_nr * outp->dp.link_bw;
        ds_clock = drm_dp_downstream_max_dotclock(outp->dp.dpcd,
                                                  outp->dp.downstream_ports);
@@ -245,9 +247,13 @@ nv50_dp_mode_valid(struct drm_connector *connector,
                max_clock = min(max_clock, ds_clock);
 
        clock = mode->clock * (connector->display_info.bpc * 3) / 10;
-       ret = nouveau_conn_mode_clock_valid(mode, min_clock, max_clock,
-                                           &clock);
+       if (clock < min_clock)
+               return MODE_CLOCK_LOW;
+       if (clock > max_clock)
+               return MODE_CLOCK_HIGH;
+
        if (out_clock)
                *out_clock = clock;
-       return ret;
+
+       return MODE_OK;
 }