From: Ville Syrjälä <ville.syrj...@linux.intel.com>

The atomic check() hook is interested in the staged new configuration,
so it must use the intel_encoder::new_crtc pointer when checking if
a CRTC is in use or not.

Signed-off-by: Ville Syrjälä <ville.syrj...@linux.intel.com>
---
 drivers/gpu/drm/i915/intel_atomic.c |   16 ++++++++++++++--
 1 files changed, 14 insertions(+), 2 deletions(-)

diff --git a/drivers/gpu/drm/i915/intel_atomic.c 
b/drivers/gpu/drm/i915/intel_atomic.c
index 3f093d6..ec79354 100644
--- a/drivers/gpu/drm/i915/intel_atomic.c
+++ b/drivers/gpu/drm/i915/intel_atomic.c
@@ -150,6 +150,18 @@ static void update_encoders_bitmask(struct intel_crtc 
*intel_crtc,
        }
 }
 
+static bool intel_crtc_in_use(struct intel_crtc *intel_crtc)
+{
+       struct drm_device *dev = intel_crtc->base.dev;
+       struct intel_encoder *intel_encoder;
+
+       list_for_each_entry(intel_encoder, &dev->mode_config.encoder_list, 
base.head)
+               if (intel_encoder->new_crtc == intel_crtc)
+                       return true;
+
+       return false;
+}
+
 static bool intel_encoder_in_use(struct intel_encoder *intel_encoder)
 {
        struct drm_device *dev = intel_encoder->base.dev;
@@ -1246,12 +1258,12 @@ static int check_crtc(struct intel_crtc_state *s)
        if (crtc->enabled) {
                if (!fb)
                        return -EINVAL;
-               if (!drm_helper_crtc_in_use(crtc))
+               if (!intel_crtc_in_use(intel_crtc))
                        return -EINVAL;
        } else {
                if (fb)
                        return -EINVAL;
-               if (drm_helper_crtc_in_use(crtc))
+               if (intel_crtc_in_use(intel_crtc))
                        return -EINVAL;
        }
 
-- 
1.7.8.6

_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/intel-gfx

Reply via email to