drm/i915: Check some transcoder timing minimum limits
authorVille Syrjälä <ville.syrjala@linux.intel.com>
Thu, 18 Jul 2019 14:43:40 +0000 (17:43 +0300)
committerVille Syrjälä <ville.syrjala@linux.intel.com>
Mon, 21 Oct 2019 18:09:57 +0000 (21:09 +0300)
On ILK+ the documented min hdisplay is 64, min hblank is 32, and min
vblank is 5. On earlier platforms min hblank is also 32, and min
vblank is 3. Make sure the mode satisfies those limits.

There are further limits for HDMI and pfit use cases, but we'll check
for those in a more specific location.

Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20190718144340.1114-2-ville.syrjala@linux.intel.com
Reviewed-by: Manasi Navare <manasi.d.navare@intel.com>
drivers/gpu/drm/i915/display/intel_display.c

index 2912abd..236fdf1 100644 (file)
@@ -16294,6 +16294,21 @@ intel_mode_valid(struct drm_device *dev,
            mode->vtotal > vtotal_max)
                return MODE_V_ILLEGAL;
 
+       if (INTEL_GEN(dev_priv) >= 5) {
+               if (mode->hdisplay < 64 ||
+                   mode->htotal - mode->hdisplay < 32)
+                       return MODE_H_ILLEGAL;
+
+               if (mode->vtotal - mode->vdisplay < 5)
+                       return MODE_V_ILLEGAL;
+       } else {
+               if (mode->htotal - mode->hdisplay < 32)
+                       return MODE_H_ILLEGAL;
+
+               if (mode->vtotal - mode->vdisplay < 3)
+                       return MODE_V_ILLEGAL;
+       }
+
        return MODE_OK;
 }