drm/i915: fixup overlay checks for interlaced modes
authorDaniel Vetter <daniel.vetter@ffwll.ch>
Sat, 28 Jan 2012 22:48:46 +0000 (23:48 +0100)
committerDaniel Vetter <daniel.vetter@ffwll.ch>
Fri, 10 Feb 2012 16:43:49 +0000 (17:43 +0100)
The drm core _really_ likes to frob around with the crtc timings and
put halfed vertical timings (in fields) in there. Which confuses the
overlay code, resulting in it's refusal to display anything at the
lower half of an interlaced pipe.

Tested-by: Christopher Egert <cme3000@gmail.com>
Reviewed-by: Eugeni Dodonov <eugeni.dodonov@intel.com>
Signed-Off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
drivers/gpu/drm/i915/intel_overlay.c

index 5542e9006f966e32fba157cfe3858fae4f74d061..91d294e74ac8a68ee8185352643ab41b28b3f32c 100644 (file)
@@ -937,10 +937,10 @@ static int check_overlay_dst(struct intel_overlay *overlay,
 {
        struct drm_display_mode *mode = &overlay->crtc->base.mode;
 
-       if (rec->dst_x < mode->crtc_hdisplay &&
-           rec->dst_x + rec->dst_width <= mode->crtc_hdisplay &&
-           rec->dst_y < mode->crtc_vdisplay &&
-           rec->dst_y + rec->dst_height <= mode->crtc_vdisplay)
+       if (rec->dst_x < mode->hdisplay &&
+           rec->dst_x + rec->dst_width <= mode->hdisplay &&
+           rec->dst_y < mode->vdisplay &&
+           rec->dst_y + rec->dst_height <= mode->vdisplay)
                return 0;
        else
                return -EINVAL;