drm: make mode comparison more betterer.
authorDave Airlie <airlied@redhat.com>
Wed, 4 Jun 2008 00:34:34 +0000 (10:34 +1000)
committerDave Airlie <airlied@redhat.com>
Wed, 4 Jun 2008 00:36:58 +0000 (10:36 +1000)
This compares the clocks after converting to fb pico timings so we
get the same answer if the X and fb modes are the same.

linux-core/drm_modes.c

index bf0d85e..3ed427f 100644 (file)
@@ -276,8 +276,15 @@ EXPORT_SYMBOL(drm_mode_duplicate);
  */
 bool drm_mode_equal(struct drm_display_mode *mode1, struct drm_display_mode *mode2)
 {
-       if (mode1->clock == mode2->clock &&
-           mode1->hdisplay == mode2->hdisplay &&
+       /* do clock check convert to PICOS so fb modes get matched
+        * the same */
+       if (mode1->clock && mode2->clock) {
+               if (KHZ2PICOS(mode1->clock) != KHZ2PICOS(mode2->clock))
+                       return false;
+       } else if (mode1->clock != mode2->clock)
+               return false;
+
+       if (mode1->hdisplay == mode2->hdisplay &&
            mode1->hsync_start == mode2->hsync_start &&
            mode1->hsync_end == mode2->hsync_end &&
            mode1->htotal == mode2->htotal &&