Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit b1f1c2c1 authored by Ville Syrjälä's avatar Ville Syrjälä
Browse files

drm/i915: Fix glk/cnl display w/a #1175



The workaround was supposed to look at the plane destination
coordinates. Currently it's looking at some mixture of src
and dst coordinates that doesn't make sense. Fix it up.

Signed-off-by: default avatarVille Syrjälä <ville.syrjala@linux.intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20180719182214.4323-2-ville.syrjala@linux.intel.com


Fixes: 394676f0 (drm/i915: Add WA for planes ending close to left screen edge)
Reviewed-by: default avatarImre Deak <imre.deak@intel.com>
parent 1aeb1b5f
Loading
Loading
Loading
Loading
+4 −3
Original line number Diff line number Diff line
@@ -2988,6 +2988,7 @@ static int skl_check_main_surface(const struct intel_crtc_state *crtc_state,
	int w = drm_rect_width(&plane_state->base.src) >> 16;
	int h = drm_rect_height(&plane_state->base.src) >> 16;
	int dst_x = plane_state->base.dst.x1;
	int dst_w = drm_rect_width(&plane_state->base.dst);
	int pipe_src_w = crtc_state->pipe_src_w;
	int max_width = skl_max_plane_width(fb, 0, rotation);
	int max_height = 4096;
@@ -3009,10 +3010,10 @@ static int skl_check_main_surface(const struct intel_crtc_state *crtc_state,
	 * screen may cause FIFO underflow and display corruption.
	 */
	if ((IS_GEMINILAKE(dev_priv) || IS_CANNONLAKE(dev_priv)) &&
	    (dst_x + w < 4 || dst_x > pipe_src_w - 4)) {
	    (dst_x + dst_w < 4 || dst_x > pipe_src_w - 4)) {
		DRM_DEBUG_KMS("requested plane X %s position %d invalid (valid range %d-%d)\n",
			      dst_x + w < 4 ? "end" : "start",
			      dst_x + w < 4 ? dst_x + w : dst_x,
			      dst_x + dst_w < 4 ? "end" : "start",
			      dst_x + dst_w < 4 ? dst_x + dst_w : dst_x,
			      4, pipe_src_w - 4);
		return -ERANGE;
	}