[PATCH v15 19/19] drm/i915: Disable scaler during plane disable and pre_plane_update

Vidya Srinivas vidya.srinivas at intel.com
Thu Mar 22 04:39:15 UTC 2018


Adding disable of scaler during plane disable
and pre_plane_update.

Signed-off-by: Vidya Srinivas <vidya.srinivas at intel.com>
---
 drivers/gpu/drm/i915/intel_display.c | 12 ++++++++++++
 drivers/gpu/drm/i915/intel_sprite.c  |  4 ++++
 2 files changed, 16 insertions(+)

diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c
index 837c5d7..02e1a85 100644
--- a/drivers/gpu/drm/i915/intel_display.c
+++ b/drivers/gpu/drm/i915/intel_display.c
@@ -5150,6 +5150,16 @@ static bool hsw_post_update_enable_ips(const struct intel_crtc_state *old_crtc_s
 	return !old_crtc_state->ips_enabled;
 }
 
+static void
+skl_disable_scaler(struct intel_crtc *intel_crtc,
+		   struct intel_plane_state *old_primary_state)
+{
+	struct drm_i915_private *dev_priv = to_i915(intel_crtc->base.dev);
+	int scaler_id = old_primary_state->scaler_id;
+
+	I915_WRITE(SKL_PS_CTRL(intel_crtc->pipe, scaler_id), 0);
+}
+
 static void intel_post_plane_update(struct intel_crtc_state *old_crtc_state)
 {
 	struct intel_crtc *crtc = to_intel_crtc(old_crtc_state->base.crtc);
@@ -5179,6 +5189,8 @@ static void intel_post_plane_update(struct intel_crtc_state *old_crtc_state)
 			to_intel_plane_state(old_pri_state);
 		struct drm_framebuffer *fb = primary_state->base.fb;
 
+		skl_disable_scaler(crtc, old_primary_state);
+
 		intel_fbc_post_update(crtc);
 
 		if (primary_state->base.visible &&
diff --git a/drivers/gpu/drm/i915/intel_sprite.c b/drivers/gpu/drm/i915/intel_sprite.c
index 3651fe4..6dc953a 100644
--- a/drivers/gpu/drm/i915/intel_sprite.c
+++ b/drivers/gpu/drm/i915/intel_sprite.c
@@ -315,10 +315,14 @@ skl_disable_plane(struct intel_plane *plane, struct intel_crtc *crtc)
 	enum plane_id plane_id = plane->id;
 	enum pipe pipe = plane->pipe;
 	unsigned long irqflags;
+	struct intel_plane_state *plane_state =
+		to_intel_plane_state(plane->base.state);
+	int scaler_id = plane_state->scaler_id;
 
 	spin_lock_irqsave(&dev_priv->uncore.lock, irqflags);
 
 	I915_WRITE_FW(PLANE_CTL(pipe, plane_id), 0);
+	I915_WRITE_FW(SKL_PS_CTRL(pipe, scaler_id), 0);
 
 	I915_WRITE_FW(PLANE_SURF(pipe, plane_id), 0);
 	POSTING_READ_FW(PLANE_SURF(pipe, plane_id));
-- 
2.7.4



More information about the Intel-gfx-trybot mailing list