On Fri, 09 Jan 2015, ville.syrjala@xxxxxxxxxxxxxxx wrote: > From: Ville Syrjälä <ville.syrjala@xxxxxxxxxxxxxxx> > > The dev_priv->display.hpd_irq_setup hook is optional, so we can move the > I915_HAS_HOTPLUG() check out of i915_hpd_irq_setup() and only set up the > hook when hotplug support is present. > > Signed-off-by: Ville Syrjälä <ville.syrjala@xxxxxxxxxxxxxxx> Reviewed-by: Jani Nikula <jani.nikula@xxxxxxxxx> > --- > drivers/gpu/drm/i915/i915_irq.c | 42 ++++++++++++++++++++--------------------- > 1 file changed, 20 insertions(+), 22 deletions(-) > > diff --git a/drivers/gpu/drm/i915/i915_irq.c b/drivers/gpu/drm/i915/i915_irq.c > index 1d52ae9..8fe5a87 100644 > --- a/drivers/gpu/drm/i915/i915_irq.c > +++ b/drivers/gpu/drm/i915/i915_irq.c > @@ -4145,26 +4145,24 @@ static void i915_hpd_irq_setup(struct drm_device *dev) > > assert_spin_locked(&dev_priv->irq_lock); > > - if (I915_HAS_HOTPLUG(dev)) { > - hotplug_en = I915_READ(PORT_HOTPLUG_EN); > - hotplug_en &= ~HOTPLUG_INT_EN_MASK; > - /* Note HDMI and DP share hotplug bits */ > - /* enable bits are the same for all generations */ > - for_each_intel_encoder(dev, intel_encoder) > - if (dev_priv->hpd_stats[intel_encoder->hpd_pin].hpd_mark == HPD_ENABLED) > - hotplug_en |= hpd_mask_i915[intel_encoder->hpd_pin]; > - /* Programming the CRT detection parameters tends > - to generate a spurious hotplug event about three > - seconds later. So just do it once. > - */ > - if (IS_G4X(dev)) > - hotplug_en |= CRT_HOTPLUG_ACTIVATION_PERIOD_64; > - hotplug_en &= ~CRT_HOTPLUG_VOLTAGE_COMPARE_MASK; > - hotplug_en |= CRT_HOTPLUG_VOLTAGE_COMPARE_50; > - > - /* Ignore TV since it's buggy */ > - I915_WRITE(PORT_HOTPLUG_EN, hotplug_en); > - } > + hotplug_en = I915_READ(PORT_HOTPLUG_EN); > + hotplug_en &= ~HOTPLUG_INT_EN_MASK; > + /* Note HDMI and DP share hotplug bits */ > + /* enable bits are the same for all generations */ > + for_each_intel_encoder(dev, intel_encoder) > + if (dev_priv->hpd_stats[intel_encoder->hpd_pin].hpd_mark == HPD_ENABLED) > + hotplug_en |= hpd_mask_i915[intel_encoder->hpd_pin]; > + /* Programming the CRT detection parameters tends > + to generate a spurious hotplug event about three > + seconds later. So just do it once. > + */ > + if (IS_G4X(dev)) > + hotplug_en |= CRT_HOTPLUG_ACTIVATION_PERIOD_64; > + hotplug_en &= ~CRT_HOTPLUG_VOLTAGE_COMPARE_MASK; > + hotplug_en |= CRT_HOTPLUG_VOLTAGE_COMPARE_50; > + > + /* Ignore TV since it's buggy */ > + I915_WRITE(PORT_HOTPLUG_EN, hotplug_en); > } > > static irqreturn_t i965_irq_handler(int irq, void *arg) > @@ -4428,14 +4426,14 @@ void intel_irq_init(struct drm_i915_private *dev_priv) > dev->driver->irq_postinstall = i915_irq_postinstall; > dev->driver->irq_uninstall = i915_irq_uninstall; > dev->driver->irq_handler = i915_irq_handler; > - dev_priv->display.hpd_irq_setup = i915_hpd_irq_setup; > } else { > dev->driver->irq_preinstall = i965_irq_preinstall; > dev->driver->irq_postinstall = i965_irq_postinstall; > dev->driver->irq_uninstall = i965_irq_uninstall; > dev->driver->irq_handler = i965_irq_handler; > - dev_priv->display.hpd_irq_setup = i915_hpd_irq_setup; > } > + if (I915_HAS_HOTPLUG(dev_priv)) > + dev_priv->display.hpd_irq_setup = i915_hpd_irq_setup; > dev->driver->enable_vblank = i915_enable_vblank; > dev->driver->disable_vblank = i915_disable_vblank; > } > -- > 2.0.5 > > _______________________________________________ > Intel-gfx mailing list > Intel-gfx@xxxxxxxxxxxxxxxxxxxxx > http://lists.freedesktop.org/mailman/listinfo/intel-gfx -- Jani Nikula, Intel Open Source Technology Center _______________________________________________ Intel-gfx mailing list Intel-gfx@xxxxxxxxxxxxxxxxxxxxx http://lists.freedesktop.org/mailman/listinfo/intel-gfx