[PATCH v15 19/19] drm/i915: Disable scaler during plane disable and pre_plane_update
Vidya Srinivas
vidya.srinivas at intel.com
Wed Mar 21 04:57:18 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