提交 9ace0433 编写于 作者: J Jani Nikula 提交者: Daniel Vetter

drm/i915: merge the two hpd loops in intel_hpd_irq_handler to one

Nothing in the two consecutive loops over hpd pins depends on state in a
larger context than the single hpd pin. If we skip the rest of the loop
on short hpd pulses, we can merge the two loops into one.
Signed-off-by: NJani Nikula <jani.nikula@intel.com>
Reviewed-by: NPaulo Zanoni <paulo.r.zanoni@intel.com>
Signed-off-by: NDaniel Vetter <daniel.vetter@ffwll.ch>
上级 ab68d5bb
...@@ -1463,23 +1463,18 @@ static void intel_hpd_irq_handler(struct drm_device *dev, ...@@ -1463,23 +1463,18 @@ static void intel_hpd_irq_handler(struct drm_device *dev,
* For long HPD pulses we want to have the digital queue happen, * For long HPD pulses we want to have the digital queue happen,
* but we still want HPD storm detection to function. * but we still want HPD storm detection to function.
*/ */
queue_dig = true;
if (long_hpd) { if (long_hpd) {
dev_priv->hotplug.long_port_mask |= (1 << port); dev_priv->hotplug.long_port_mask |= (1 << port);
/* FIXME: this can be simplified. */
dig_port_mask |= hpd[i]; dig_port_mask |= hpd[i];
} else { } else {
/* for short HPD just trigger the digital queue */ /* for short HPD just trigger the digital queue */
dev_priv->hotplug.short_port_mask |= (1 << port); dev_priv->hotplug.short_port_mask |= (1 << port);
hotplug_trigger &= ~hpd[i]; continue;
}
queue_dig = true;
} }
} }
for_each_hpd_pin(i) {
if (!(hpd[i] & hotplug_trigger))
continue;
if (dev_priv->hotplug.stats[i].state == HPD_DISABLED) { if (dev_priv->hotplug.stats[i].state == HPD_DISABLED) {
/* /*
* On GMCH platforms the interrupt mask bits only * On GMCH platforms the interrupt mask bits only
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册