drm/i915: Allow fuzzy matching in intel_compare_link_m_n
authorMaarten Lankhorst <maarten.lankhorst@linux.intel.com>
Wed, 6 Jan 2016 12:54:43 +0000 (13:54 +0100)
committerMaarten Lankhorst <maarten.lankhorst@linux.intel.com>
Wed, 6 Jan 2016 13:20:30 +0000 (14:20 +0100)
This prevents a unnecessary modeset on a dell XPS 13 (2016).

N is always a power of 2, which means that for fuzzy matching we should
compare for inequality on the n values, then do fuzzy matching on the m
values.

Signed-off-by: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
Tested-by: Kenneth Graunke <kenneth@whitecape.org>
Reviewed-by: Daniel Vetter <daniel.vetter@ffwll.ch>
Link: http://patchwork.freedesktop.org/patch/msgid/568D0E93.304@linux.intel.com
drivers/gpu/drm/i915/intel_display.c

index 043adfa65203a54ab39cd76140709526431de96f..ab0b406ee8caa88af3e08bb92db28d2d09eb0c1b 100644 (file)
@@ -12577,19 +12577,22 @@ intel_compare_m_n(unsigned int m, unsigned int n,
 
        BUILD_BUG_ON(DATA_LINK_M_N_MASK > INT_MAX);
 
-       if (m > m2) {
-               while (m > m2) {
+       if (n > n2) {
+               while (n > n2) {
                        m2 <<= 1;
                        n2 <<= 1;
                }
-       } else if (m < m2) {
-               while (m < m2) {
+       } else if (n < n2) {
+               while (n < n2) {
                        m <<= 1;
                        n <<= 1;
                }
        }
 
-       return m == m2 && n == n2;
+       if (n != n2)
+               return false;
+
+       return intel_fuzzy_clock_check(m, m2);
 }
 
 static bool