However this helps. We're missing something.
diff --git a/drivers/gpu/drm/i915/i915_irq.c b/drivers/gpu/drm/i915/i915_irq.c index 76bd40e13391..0d524034abd7 100644 --- a/drivers/gpu/drm/i915/i915_irq.c +++ b/drivers/gpu/drm/i915/i915_irq.c @@ -1827,6 +1827,9 @@ static void ibx_hpd_irq_handler(struct drm_device *dev, u32 hotplug_trigger, dig_hotplug_reg = I915_READ(PCH_PORT_HOTPLUG); I915_WRITE(PCH_PORT_HOTPLUG, dig_hotplug_reg);
+ if (!hotplug_trigger) + return; + intel_get_hpd_pins(&pin_mask, &long_mask, hotplug_trigger, dig_hotplug_reg, hpd, pch_port_hotplug_long_detect); @@ -1934,8 +1937,7 @@ static void cpt_irq_handler(struct drm_device *dev, u32 pch_iir) int pipe; u32 hotplug_trigger = pch_iir & SDE_HOTPLUG_MASK_CPT;
- if (hotplug_trigger) - ibx_hpd_irq_handler(dev, hotplug_trigger, hpd_cpt); + ibx_hpd_irq_handler(dev, hotplug_trigger, hpd_cpt);
if (pch_iir & SDE_AUDIO_POWER_MASK_CPT) { int port = ffs((pch_iir & SDE_AUDIO_POWER_MASK_CPT) >>
However this helps. We're missing something.
diff --git a/drivers/ gpu/drm/ i915/i915_ irq.c b/drivers/ gpu/drm/ i915/i915_ irq.c .0d524034abd7 100644 gpu/drm/ i915/i915_ irq.c gpu/drm/ i915/i915_ irq.c irq_handler( struct drm_device *dev, u32 hotplug_trigger,
dig_hotplug_ reg = I915_READ( PCH_PORT_ HOTPLUG) ;
I915_WRITE( PCH_PORT_ HOTPLUG, dig_hotplug_reg);
index 76bd40e13391.
--- a/drivers/
+++ b/drivers/
@@ -1827,6 +1827,9 @@ static void ibx_hpd_
+ if (!hotplug_trigger)
intel_ get_hpd_ pins(&pin_ mask, &long_mask, hotplug_trigger,
dig_ hotplug_ reg, hpd,
pch_ port_hotplug_ long_detect) ; handler( struct drm_device *dev, u32 pch_iir) MASK_CPT;
+ return;
+
@@ -1934,8 +1937,7 @@ static void cpt_irq_
int pipe;
u32 hotplug_trigger = pch_iir & SDE_HOTPLUG_
- if (hotplug_trigger) irq_handler( dev, hotplug_trigger, hpd_cpt); irq_handler( dev, hotplug_trigger, hpd_cpt);
- ibx_hpd_
+ ibx_hpd_
if (pch_iir & SDE_AUDIO_ POWER_MASK_ CPT) { POWER_MASK_ CPT) >>
int port = ffs((pch_iir & SDE_AUDIO_