drm/i915: fold the no-irq check into intel_hpd_irq_handler
authorDaniel Vetter <daniel.vetter@ffwll.ch>
Thu, 27 Jun 2013 15:52:14 +0000 (17:52 +0200)
committerDaniel Vetter <daniel.vetter@ffwll.ch>
Mon, 1 Jul 2013 09:14:58 +0000 (11:14 +0200)
The usual pattern for our sub-function irq_handlers is that they check
for the no-irq case themselves. This results in more streamlined code
in the upper irq handlers.

v2: Rebase on top of the i965g/gm sdvo hpd fix.

Cc: Egbert Eich <eich@suse.de>
Reviewed-by: Egbert Eich <eich@suse.de>
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 531df31..b29b76f 100644 (file)
@@ -881,6 +881,9 @@ static inline void intel_hpd_irq_handler(struct drm_device *dev,
        int i;
        bool storm_detected = false;
 
+       if (!hotplug_trigger)
+               return;
+
        spin_lock_irqsave(&dev_priv->irq_lock, irqflags);
 
        for (i = 1; i < HPD_NUM_PINS; i++) {
@@ -1018,9 +1021,9 @@ static irqreturn_t valleyview_irq_handler(int irq, void *arg)
 
                        DRM_DEBUG_DRIVER("hotplug event received, stat 0x%08x\n",
                                         hotplug_status);
-                       if (hotplug_trigger) {
-                               intel_hpd_irq_handler(dev, hotplug_trigger, hpd_status_i915);
-                       }
+
+                       intel_hpd_irq_handler(dev, hotplug_trigger, hpd_status_i915);
+
                        I915_WRITE(PORT_HOTPLUG_STAT, hotplug_status);
                        I915_READ(PORT_HOTPLUG_STAT);
                }
@@ -1046,9 +1049,8 @@ static void ibx_irq_handler(struct drm_device *dev, u32 pch_iir)
        int pipe;
        u32 hotplug_trigger = pch_iir & SDE_HOTPLUG_MASK;
 
-       if (hotplug_trigger) {
-               intel_hpd_irq_handler(dev, hotplug_trigger, hpd_ibx);
-       }
+       intel_hpd_irq_handler(dev, hotplug_trigger, hpd_ibx);
+
        if (pch_iir & SDE_AUDIO_POWER_MASK) {
                int port = ffs((pch_iir & SDE_AUDIO_POWER_MASK) >>
                               SDE_AUDIO_POWER_SHIFT);
@@ -1149,9 +1151,8 @@ 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) {
-               intel_hpd_irq_handler(dev, hotplug_trigger, hpd_cpt);
-       }
+       intel_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) >>
                               SDE_AUDIO_POWER_SHIFT_CPT);
@@ -3225,9 +3226,9 @@ static irqreturn_t i915_irq_handler(int irq, void *arg)
 
                        DRM_DEBUG_DRIVER("hotplug event received, stat 0x%08x\n",
                                  hotplug_status);
-                       if (hotplug_trigger) {
-                               intel_hpd_irq_handler(dev, hotplug_trigger, hpd_status_i915);
-                       }
+
+                       intel_hpd_irq_handler(dev, hotplug_trigger, hpd_status_i915);
+
                        I915_WRITE(PORT_HOTPLUG_STAT, hotplug_status);
                        POSTING_READ(PORT_HOTPLUG_STAT);
                }
@@ -3463,10 +3464,10 @@ static irqreturn_t i965_irq_handler(int irq, void *arg)
 
                        DRM_DEBUG_DRIVER("hotplug event received, stat 0x%08x\n",
                                  hotplug_status);
-                       if (hotplug_trigger) {
-                               intel_hpd_irq_handler(dev, hotplug_trigger,
-                                                     IS_G4X(dev) ? hpd_status_gen4 : hpd_status_i915);
-                       }
+
+                       intel_hpd_irq_handler(dev, hotplug_trigger,
+                                             IS_G4X(dev) ? hpd_status_gen4 : hpd_status_i915);
+
                        I915_WRITE(PORT_HOTPLUG_STAT, hotplug_status);
                        I915_READ(PORT_HOTPLUG_STAT);
                }