mirror of https://gitee.com/openkylin/linux.git
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: Jani Nikula <jani.nikula@intel.com> Reviewed-by: Paulo Zanoni <paulo.r.zanoni@intel.com> Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
This commit is contained in:
parent
ab68d5bb0b
commit
9ace043310
|
@ -1463,22 +1463,17 @@ 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) {
|
||||||
/*
|
/*
|
||||||
|
|
Loading…
Reference in New Issue