drm/i915: More checks for psr.enabled
authorDaniel Vetter <daniel.vetter@ffwll.ch>
Fri, 11 Jul 2014 17:30:14 +0000 (10:30 -0700)
committerDaniel Vetter <daniel.vetter@ffwll.ch>
Wed, 23 Jul 2014 05:05:18 +0000 (07:05 +0200)
We need to make sure that no one else is using this in the
enable function and also that the work item hasn't raced
with the disabled function.

v2: Improve bisectability by moving one hunk to an earlier patch.

v3: added missing dev_priv declaration (Rodrigo)

Reviewed-by: Rodrigo Vivi <rodrigo.vivi@intel.com>
Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch> (v2)
Signed-off-by: Rodrigo Vivi <rodrigo.vivi@intel.com>
Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
drivers/gpu/drm/i915/intel_dp.c

index f630c23a7bd60775ec914191e7c13ad111a04973..fd92a813865b70388e625b3427cda53ca05375d0 100644 (file)
@@ -1850,6 +1850,7 @@ static void intel_edp_psr_do_enable(struct intel_dp *intel_dp)
 void intel_edp_psr_enable(struct intel_dp *intel_dp)
 {
        struct drm_device *dev = intel_dp_to_dev(intel_dp);
+       struct drm_i915_private *dev_priv = dev->dev_private;
 
        if (!HAS_PSR(dev)) {
                DRM_DEBUG_KMS("PSR not supported on this platform\n");
@@ -1861,6 +1862,11 @@ void intel_edp_psr_enable(struct intel_dp *intel_dp)
                return;
        }
 
+       if (dev_priv->psr.enabled) {
+               DRM_DEBUG_KMS("PSR already in use\n");
+               return;
+       }
+
        /* Setup PSR once */
        intel_edp_psr_setup(intel_dp);