Writing to PCH_PORT_HOTPLUG for each interrupt is not required.
Handle it only if hpd has actually occurred like we handle other
interrupts.
v2: Make few variables local to if block (Ville)

Signed-off-by: Sonika Jindal <sonika.jin...@intel.com>
---
 drivers/gpu/drm/i915/i915_irq.c |   14 ++++++++------
 1 file changed, 8 insertions(+), 6 deletions(-)

diff --git a/drivers/gpu/drm/i915/i915_irq.c b/drivers/gpu/drm/i915/i915_irq.c
index a6fbe64..cd504dc 100644
--- a/drivers/gpu/drm/i915/i915_irq.c
+++ b/drivers/gpu/drm/i915/i915_irq.c
@@ -1757,14 +1757,16 @@ static void cpt_irq_handler(struct drm_device *dev, u32 
pch_iir)
        struct drm_i915_private *dev_priv = dev->dev_private;
        int pipe;
        u32 hotplug_trigger = pch_iir & SDE_HOTPLUG_MASK_CPT;
-       u32 dig_hotplug_reg;
-       u32 pin_mask, long_mask;
 
-       dig_hotplug_reg = I915_READ(PCH_PORT_HOTPLUG);
-       I915_WRITE(PCH_PORT_HOTPLUG, dig_hotplug_reg);
+       if (hotplug_trigger) {
+               u32 dig_hotplug_reg, pin_mask, long_mask;
 
-       pch_get_hpd_pins(&pin_mask, &long_mask, hotplug_trigger, 
dig_hotplug_reg, hpd_cpt);
-       intel_hpd_irq_handler(dev, pin_mask, long_mask);
+               dig_hotplug_reg = I915_READ(PCH_PORT_HOTPLUG);
+               I915_WRITE(PCH_PORT_HOTPLUG, dig_hotplug_reg);
+               pch_get_hpd_pins(&pin_mask, &long_mask, hotplug_trigger,
+                                               dig_hotplug_reg, hpd_cpt);
+               intel_hpd_irq_handler(dev, pin_mask, long_mask);
+       }
 
        if (pch_iir & SDE_AUDIO_POWER_MASK_CPT) {
                int port = ffs((pch_iir & SDE_AUDIO_POWER_MASK_CPT) >>
-- 
1.7.10.4

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

Reply via email to