| From 10675524e7a7ae39415ff4574b80a61a38327c2f Mon Sep 17 00:00:00 2001 |
| From: Daniel Vetter <daniel.vetter@ffwll.ch> |
| Date: Wed, 8 May 2013 10:36:31 +0200 |
| Subject: drm/i915: Use pipe config state to control gmch pfit enable/disable |
| |
| Allows us to rip out a few fragile checks (which are duplicated in the |
| hw state readout now, too). Also prepares us a bit for more than one |
| panel/pfit. |
| |
| Reviewed-by: Mika Kuoppala <mika.kuoppala@intel.com> |
| Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch> |
| (cherry picked from commit 328d8e829b9a05814af4722c1091d62c5533c4f8) |
| Signed-off-by: Darren Hart <dvhart@linux.intel.com> |
| --- |
| drivers/gpu/drm/i915/intel_display.c | 20 +++++++------------- |
| 1 file changed, 7 insertions(+), 13 deletions(-) |
| |
| diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c |
| index bb4c50f9243e..957dd91803fa 100644 |
| --- a/drivers/gpu/drm/i915/intel_display.c |
| +++ b/drivers/gpu/drm/i915/intel_display.c |
| @@ -3624,8 +3624,7 @@ static void i9xx_pfit_enable(struct intel_crtc *crtc) |
| struct drm_i915_private *dev_priv = dev->dev_private; |
| struct intel_crtc_config *pipe_config = &crtc->config; |
| |
| - if (!(intel_pipe_has_type(&crtc->base, INTEL_OUTPUT_EDP) || |
| - intel_pipe_has_type(&crtc->base, INTEL_OUTPUT_LVDS))) |
| + if (!crtc->config.gmch_pfit.control) |
| return; |
| |
| WARN_ON(I915_READ(PFIT_CONTROL) & PFIT_ENABLE); |
| @@ -3744,20 +3743,15 @@ static void i9xx_pfit_disable(struct intel_crtc *crtc) |
| { |
| struct drm_device *dev = crtc->base.dev; |
| struct drm_i915_private *dev_priv = dev->dev_private; |
| - enum pipe pipe; |
| - uint32_t pctl = I915_READ(PFIT_CONTROL); |
| |
| - assert_pipe_disabled(dev_priv, crtc->pipe); |
| + if (!crtc->config.gmch_pfit.control) |
| + return; |
| |
| - if (INTEL_INFO(dev)->gen >= 4) |
| - pipe = (pctl & PFIT_PIPE_MASK) >> PFIT_PIPE_SHIFT; |
| - else |
| - pipe = PIPE_B; |
| + assert_pipe_disabled(dev_priv, crtc->pipe); |
| |
| - if (pipe == crtc->pipe) { |
| - DRM_DEBUG_DRIVER("disabling pfit, current: 0x%08x\n", pctl); |
| - I915_WRITE(PFIT_CONTROL, 0); |
| - } |
| + DRM_DEBUG_DRIVER("disabling pfit, current: 0x%08x\n", |
| + I915_READ(PFIT_CONTROL)); |
| + I915_WRITE(PFIT_CONTROL, 0); |
| } |
| |
| static void i9xx_crtc_disable(struct drm_crtc *crtc) |
| -- |
| 1.8.5.rc3 |
| |