drm/i915: Use pipe config state to control gmch pfit enable/disable
authorDaniel Vetter <daniel.vetter@ffwll.ch>
Wed, 8 May 2013 08:36:31 +0000 (10:36 +0200)
committerDaniel Vetter <daniel.vetter@ffwll.ch>
Tue, 14 May 2013 23:22:15 +0000 (01:22 +0200)
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>
drivers/gpu/drm/i915/intel_display.c

index 33544a256f15b4858e8df70c8000a515e1c7f6c7..7358e4e9761e372a52ff44a094257594cfedf909 100644 (file)
@@ -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)