drm/i915/bxt: clear hpd status sticky bits earlier
authorJani Nikula <jani.nikula@intel.com>
Thu, 28 May 2015 12:43:54 +0000 (15:43 +0300)
committerDaniel Vetter <daniel.vetter@ffwll.ch>
Fri, 29 May 2015 08:15:31 +0000 (10:15 +0200)
The hotplug status is cached in hp_control, and will be passed on to
bottom halves through intel_hpd_irq_handler(), so we can clear the
sticky bits earlier.

While at it, drop the redundant logging of the hotplug status, which
will also be logged by pch_get_hpd_pins().

Signed-off-by: Jani Nikula <jani.nikula@intel.com>
Reviewed-by: Paulo Zanoni <paulo.r.zanoni@intel.com>
Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
drivers/gpu/drm/i915/i915_irq.c

index d401c863aeee04b4cdcecaf9e594f8b6d4755401..e4260b0924f1fd0fcf47ece96d0f44c2dbffd204 100644 (file)
@@ -2241,21 +2241,11 @@ static void bxt_hpd_handler(struct drm_device *dev, uint32_t iir_status)
                return;
        }
 
-       DRM_DEBUG_DRIVER("hotplug event received, stat 0x%08x\n",
-               hp_control & BXT_HOTPLUG_CTL_MASK);
+       /* Clear sticky bits in hpd status */
+       I915_WRITE(BXT_HOTPLUG_CTL, hp_control);
 
-       /* Check for HPD storm and schedule bottom half */
        pch_get_hpd_pins(&pin_mask, &long_mask, hp_trigger, hp_control, hpd_bxt);
        intel_hpd_irq_handler(dev, pin_mask, long_mask);
-
-       /*
-        * FIXME: Save the hot plug status for bottom half before
-        * clearing the sticky status bits, else the status will be
-        * lost.
-        */
-
-       /* Clear sticky bits in hpd status */
-       I915_WRITE(BXT_HOTPLUG_CTL, hp_control);
 }
 
 static irqreturn_t gen8_irq_handler(int irq, void *arg)