drm/i915: pipe config quirk infrastructure plus sdvo mode.flags fix
[deliverable/linux.git] / drivers / gpu / drm / i915 / intel_sdvo.c
index 5c816dd75becb0fde8e77fc0b7e91043bb908e88..960358d8e3369764b7a1e74be83ed5b2d19c81d3 100644 (file)
@@ -1324,19 +1324,21 @@ static void intel_sdvo_get_config(struct intel_encoder *encoder,
 
        ret = intel_sdvo_get_input_timing(intel_sdvo, &dtd);
        if (!ret) {
+               /* Some sdvo encoders are not spec compliant and don't
+                * implement the mandatory get_timings function. */
                DRM_DEBUG_DRIVER("failed to retrieve SDVO DTD\n");
-               return;
-       }
-
-       if (dtd.part2.dtd_flags & DTD_FLAG_HSYNC_POSITIVE)
-               flags |= DRM_MODE_FLAG_PHSYNC;
-       else
-               flags |= DRM_MODE_FLAG_NHSYNC;
+               pipe_config->quirks |= PIPE_CONFIG_QUIRK_MODE_SYNC_FLAGS;
+       } else {
+               if (dtd.part2.dtd_flags & DTD_FLAG_HSYNC_POSITIVE)
+                       flags |= DRM_MODE_FLAG_PHSYNC;
+               else
+                       flags |= DRM_MODE_FLAG_NHSYNC;
 
-       if (dtd.part2.dtd_flags & DTD_FLAG_VSYNC_POSITIVE)
-               flags |= DRM_MODE_FLAG_PVSYNC;
-       else
-               flags |= DRM_MODE_FLAG_NVSYNC;
+               if (dtd.part2.dtd_flags & DTD_FLAG_VSYNC_POSITIVE)
+                       flags |= DRM_MODE_FLAG_PVSYNC;
+               else
+                       flags |= DRM_MODE_FLAG_NVSYNC;
+       }
 
        pipe_config->adjusted_mode.flags |= flags;
 
This page took 0.029391 seconds and 5 git commands to generate.