Lines Matching +full:no +full:- +full:hpd
17 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
44 * handlers gather the hotplug detect (HPD) information from relevant registers
54 * pulses, with failures and non-MST long pulses triggering regular hotplug
67 * while before being re-enabled. The intention is to mitigate issues raising
73 * callback is handled by i915_digport_work_func reenabling of hpd is not
81 * intel_hpd_pin_default - return default pin associated with certain port.
83 * @port: the hpd port to get associated pin
92 return HPD_PORT_A + port - PORT_A; in intel_hpd_pin_default()
113 return encoder ? encoder->hpd_pin : HPD_NONE; in intel_connector_hpd_pin()
117 * intel_hpd_irq_storm_detect - gather stats and detect HPD IRQ storm on a pin
120 * @long_hpd: whether the HPD IRQ was long or short
122 * Gather stats about HPD IRQs from the specified @pin, and detect IRQ
127 * stored in @dev_priv->display.hotplug.hpd_storm_threshold which defaults to
133 * &dev_priv->display.hotplug.hpd_storm_threshold. However, some older systems also
140 * The HPD threshold can be controlled through i915_hpd_storm_ctl in debugfs,
148 struct intel_hotplug *hpd = &dev_priv->display.hotplug; in intel_hpd_irq_storm_detect() local
149 unsigned long start = hpd->stats[pin].last_jiffies; in intel_hpd_irq_storm_detect()
152 const int threshold = hpd->hpd_storm_threshold; in intel_hpd_irq_storm_detect()
156 (!long_hpd && !dev_priv->display.hotplug.hpd_short_storm_enabled)) in intel_hpd_irq_storm_detect()
160 hpd->stats[pin].last_jiffies = jiffies; in intel_hpd_irq_storm_detect()
161 hpd->stats[pin].count = 0; in intel_hpd_irq_storm_detect()
164 hpd->stats[pin].count += increment; in intel_hpd_irq_storm_detect()
165 if (hpd->stats[pin].count > threshold) { in intel_hpd_irq_storm_detect()
166 hpd->stats[pin].state = HPD_MARK_DISABLED; in intel_hpd_irq_storm_detect()
167 drm_dbg_kms(&dev_priv->drm, in intel_hpd_irq_storm_detect()
168 "HPD interrupt storm detected on PIN %d\n", pin); in intel_hpd_irq_storm_detect()
171 drm_dbg_kms(&dev_priv->drm, in intel_hpd_irq_storm_detect()
172 "Received HPD interrupt on PIN %d - cnt: %d\n", in intel_hpd_irq_storm_detect()
174 hpd->stats[pin].count); in intel_hpd_irq_storm_detect()
187 lockdep_assert_held(&dev_priv->irq_lock); in intel_hpd_irq_storm_switch_to_polling()
189 drm_connector_list_iter_begin(&dev_priv->drm, &conn_iter); in intel_hpd_irq_storm_switch_to_polling()
193 if (connector->base.polled != DRM_CONNECTOR_POLL_HPD) in intel_hpd_irq_storm_switch_to_polling()
198 dev_priv->display.hotplug.stats[pin].state != HPD_MARK_DISABLED) in intel_hpd_irq_storm_switch_to_polling()
201 drm_info(&dev_priv->drm, in intel_hpd_irq_storm_switch_to_polling()
202 "HPD interrupt storm detected on connector %s: " in intel_hpd_irq_storm_switch_to_polling()
204 connector->base.name); in intel_hpd_irq_storm_switch_to_polling()
206 dev_priv->display.hotplug.stats[pin].state = HPD_DISABLED; in intel_hpd_irq_storm_switch_to_polling()
207 connector->base.polled = DRM_CONNECTOR_POLL_CONNECT | in intel_hpd_irq_storm_switch_to_polling()
213 /* Enable polling and queue hotplug re-enabling. */ in intel_hpd_irq_storm_switch_to_polling()
215 drm_kms_helper_poll_reschedule(&dev_priv->drm); in intel_hpd_irq_storm_switch_to_polling()
216 mod_delayed_work(dev_priv->unordered_wq, in intel_hpd_irq_storm_switch_to_polling()
217 &dev_priv->display.hotplug.reenable_work, in intel_hpd_irq_storm_switch_to_polling()
232 wakeref = intel_runtime_pm_get(&dev_priv->runtime_pm); in intel_hpd_irq_storm_reenable_work()
234 spin_lock_irq(&dev_priv->irq_lock); in intel_hpd_irq_storm_reenable_work()
236 drm_connector_list_iter_begin(&dev_priv->drm, &conn_iter); in intel_hpd_irq_storm_reenable_work()
240 dev_priv->display.hotplug.stats[pin].state != HPD_DISABLED) in intel_hpd_irq_storm_reenable_work()
243 if (connector->base.polled != connector->polled) in intel_hpd_irq_storm_reenable_work()
244 drm_dbg(&dev_priv->drm, in intel_hpd_irq_storm_reenable_work()
245 "Reenabling HPD on connector %s\n", in intel_hpd_irq_storm_reenable_work()
246 connector->base.name); in intel_hpd_irq_storm_reenable_work()
247 connector->base.polled = connector->polled; in intel_hpd_irq_storm_reenable_work()
252 if (dev_priv->display.hotplug.stats[pin].state == HPD_DISABLED) in intel_hpd_irq_storm_reenable_work()
253 dev_priv->display.hotplug.stats[pin].state = HPD_ENABLED; in intel_hpd_irq_storm_reenable_work()
258 spin_unlock_irq(&dev_priv->irq_lock); in intel_hpd_irq_storm_reenable_work()
260 intel_runtime_pm_put(&dev_priv->runtime_pm, wakeref); in intel_hpd_irq_storm_reenable_work()
266 struct drm_device *dev = connector->base.dev; in intel_hotplug_detect_connector()
272 drm_WARN_ON(dev, !mutex_is_locked(&dev->mode_config.mutex)); in intel_hotplug_detect_connector()
273 old_status = connector->base.status; in intel_hotplug_detect_connector()
274 old_epoch_counter = connector->base.epoch_counter; in intel_hotplug_detect_connector()
276 status = drm_helper_probe_detect(&connector->base, NULL, false); in intel_hotplug_detect_connector()
277 if (!connector->base.force) in intel_hotplug_detect_connector()
278 connector->base.status = status; in intel_hotplug_detect_connector()
280 if (old_epoch_counter != connector->base.epoch_counter) in intel_hotplug_detect_connector()
284 drm_dbg_kms(dev, "[CONNECTOR:%d:%s] status updated from %s to %s (epoch counter %llu->%llu)\n", in intel_hotplug_detect_connector()
285 connector->base.base.id, in intel_hotplug_detect_connector()
286 connector->base.name, in intel_hotplug_detect_connector()
288 drm_get_connector_status_name(connector->base.status), in intel_hotplug_detect_connector()
290 connector->base.epoch_counter); in intel_hotplug_detect_connector()
306 enc_to_dig_port(encoder)->hpd_pulse != NULL; in intel_encoder_has_hpd_pulse()
317 spin_lock_irq(&dev_priv->irq_lock); in i915_digport_work_func()
318 long_port_mask = dev_priv->display.hotplug.long_port_mask; in i915_digport_work_func()
319 dev_priv->display.hotplug.long_port_mask = 0; in i915_digport_work_func()
320 short_port_mask = dev_priv->display.hotplug.short_port_mask; in i915_digport_work_func()
321 dev_priv->display.hotplug.short_port_mask = 0; in i915_digport_work_func()
322 spin_unlock_irq(&dev_priv->irq_lock); in i915_digport_work_func()
324 for_each_intel_encoder(&dev_priv->drm, encoder) { in i915_digport_work_func()
326 enum port port = encoder->port; in i915_digport_work_func()
341 ret = dig_port->hpd_pulse(dig_port, long_hpd); in i915_digport_work_func()
343 /* fall back to old school hpd */ in i915_digport_work_func()
344 old_bits |= BIT(encoder->hpd_pin); in i915_digport_work_func()
349 spin_lock_irq(&dev_priv->irq_lock); in i915_digport_work_func()
350 dev_priv->display.hotplug.event_bits |= old_bits; in i915_digport_work_func()
351 spin_unlock_irq(&dev_priv->irq_lock); in i915_digport_work_func()
352 queue_delayed_work(dev_priv->unordered_wq, in i915_digport_work_func()
353 &dev_priv->display.hotplug.hotplug_work, 0); in i915_digport_work_func()
358 * intel_hpd_trigger_irq - trigger an hpd irq event for a port
361 * Trigger an HPD interrupt event for the given port, emulating a short pulse
366 struct drm_i915_private *i915 = to_i915(dig_port->base.base.dev); in intel_hpd_trigger_irq()
368 spin_lock_irq(&i915->irq_lock); in intel_hpd_trigger_irq()
369 i915->display.hotplug.short_port_mask |= BIT(dig_port->base.port); in intel_hpd_trigger_irq()
370 spin_unlock_irq(&i915->irq_lock); in intel_hpd_trigger_irq()
372 queue_work(i915->display.hotplug.dp_wq, &i915->display.hotplug.dig_port_work); in intel_hpd_trigger_irq()
391 mutex_lock(&dev_priv->drm.mode_config.mutex); in i915_hotplug_work_func()
392 drm_dbg_kms(&dev_priv->drm, "running encoder hotplug functions\n"); in i915_hotplug_work_func()
394 spin_lock_irq(&dev_priv->irq_lock); in i915_hotplug_work_func()
396 hpd_event_bits = dev_priv->display.hotplug.event_bits; in i915_hotplug_work_func()
397 dev_priv->display.hotplug.event_bits = 0; in i915_hotplug_work_func()
398 hpd_retry_bits = dev_priv->display.hotplug.retry_bits; in i915_hotplug_work_func()
399 dev_priv->display.hotplug.retry_bits = 0; in i915_hotplug_work_func()
401 /* Enable polling for connectors which had HPD IRQ storms */ in i915_hotplug_work_func()
404 spin_unlock_irq(&dev_priv->irq_lock); in i915_hotplug_work_func()
406 /* Skip calling encode hotplug handlers if ignore long HPD set*/ in i915_hotplug_work_func()
407 if (dev_priv->display.hotplug.ignore_long_hpd) { in i915_hotplug_work_func()
408 drm_dbg_kms(&dev_priv->drm, "Ignore HPD flag on - skip encoder hotplug handlers\n"); in i915_hotplug_work_func()
409 mutex_unlock(&dev_priv->drm.mode_config.mutex); in i915_hotplug_work_func()
413 drm_connector_list_iter_begin(&dev_priv->drm, &conn_iter); in i915_hotplug_work_func()
428 connector->hotplug_retries = 0; in i915_hotplug_work_func()
430 connector->hotplug_retries++; in i915_hotplug_work_func()
432 drm_dbg_kms(&dev_priv->drm, in i915_hotplug_work_func()
434 connector->base.name, pin, in i915_hotplug_work_func()
435 connector->hotplug_retries); in i915_hotplug_work_func()
437 switch (encoder->hotplug(encoder, connector)) { in i915_hotplug_work_func()
444 drm_connector_get(&connector->base); in i915_hotplug_work_func()
445 first_changed_connector = &connector->base; in i915_hotplug_work_func()
455 mutex_unlock(&dev_priv->drm.mode_config.mutex); in i915_hotplug_work_func()
460 drm_kms_helper_hotplug_event(&dev_priv->drm); in i915_hotplug_work_func()
465 /* Remove shared HPD pins that have changed */ in i915_hotplug_work_func()
468 spin_lock_irq(&dev_priv->irq_lock); in i915_hotplug_work_func()
469 dev_priv->display.hotplug.retry_bits |= retry; in i915_hotplug_work_func()
470 spin_unlock_irq(&dev_priv->irq_lock); in i915_hotplug_work_func()
472 mod_delayed_work(dev_priv->unordered_wq, in i915_hotplug_work_func()
473 &dev_priv->display.hotplug.hotplug_work, in i915_hotplug_work_func()
480 * intel_hpd_irq_handler - main hotplug irq handler
482 * @pin_mask: a mask of hpd pins that have triggered the irq
483 * @long_mask: a mask of hpd pins that may be long hpd pulses
487 * decode the appropriate registers into bitmasks about hpd pins that have
508 spin_lock(&dev_priv->irq_lock); in intel_hpd_irq_handler()
511 * Determine whether ->hpd_pulse() exists for each pin, and in intel_hpd_irq_handler()
514 * only the one of them (DP) will have ->hpd_pulse(). in intel_hpd_irq_handler()
516 for_each_intel_encoder(&dev_priv->drm, encoder) { in intel_hpd_irq_handler()
517 enum port port = encoder->port; in intel_hpd_irq_handler()
520 pin = encoder->hpd_pin; in intel_hpd_irq_handler()
529 drm_dbg(&dev_priv->drm, in intel_hpd_irq_handler()
530 "digital hpd on [ENCODER:%d:%s] - %s\n", in intel_hpd_irq_handler()
531 encoder->base.base.id, encoder->base.name, in intel_hpd_irq_handler()
537 dev_priv->display.hotplug.long_port_mask |= BIT(port); in intel_hpd_irq_handler()
540 dev_priv->display.hotplug.short_port_mask |= BIT(port); in intel_hpd_irq_handler()
551 if (dev_priv->display.hotplug.stats[pin].state == HPD_DISABLED) { in intel_hpd_irq_handler()
558 drm_WARN_ONCE(&dev_priv->drm, !HAS_GMCH(dev_priv), in intel_hpd_irq_handler()
559 "Received HPD interrupt on pin %d although disabled\n", in intel_hpd_irq_handler()
564 if (dev_priv->display.hotplug.stats[pin].state != HPD_ENABLED) in intel_hpd_irq_handler()
568 * Delegate to ->hpd_pulse() if one of the encoders for this in intel_hpd_irq_handler()
575 dev_priv->display.hotplug.event_bits |= BIT(pin); in intel_hpd_irq_handler()
581 dev_priv->display.hotplug.event_bits &= ~BIT(pin); in intel_hpd_irq_handler()
593 spin_unlock(&dev_priv->irq_lock); in intel_hpd_irq_handler()
597 * fb helpers). Hence it must not be run on our own dev-priv->wq work in intel_hpd_irq_handler()
602 queue_work(dev_priv->display.hotplug.dp_wq, &dev_priv->display.hotplug.dig_port_work); in intel_hpd_irq_handler()
604 queue_delayed_work(dev_priv->unordered_wq, in intel_hpd_irq_handler()
605 &dev_priv->display.hotplug.hotplug_work, 0); in intel_hpd_irq_handler()
609 * intel_hpd_init - initializes and enables hpd support
630 dev_priv->display.hotplug.stats[i].count = 0; in intel_hpd_init()
631 dev_priv->display.hotplug.stats[i].state = HPD_ENABLED; in intel_hpd_init()
635 * Interrupt setup is already guaranteed to be single-threaded, this is in intel_hpd_init()
638 spin_lock_irq(&dev_priv->irq_lock); in intel_hpd_init()
640 spin_unlock_irq(&dev_priv->irq_lock); in intel_hpd_init()
650 mutex_lock(&i915->drm.mode_config.mutex); in i915_hpd_poll_detect_connectors()
652 if (!i915->drm.mode_config.poll_enabled) in i915_hpd_poll_detect_connectors()
655 drm_connector_list_iter_begin(&i915->drm, &conn_iter); in i915_hpd_poll_detect_connectors()
657 if (!(connector->base.polled & DRM_CONNECTOR_POLL_HPD)) in i915_hpd_poll_detect_connectors()
666 drm_connector_get(&connector->base); in i915_hpd_poll_detect_connectors()
673 mutex_unlock(&i915->drm.mode_config.mutex); in i915_hpd_poll_detect_connectors()
679 drm_kms_helper_connector_hotplug_event(&first_changed_connector->base); in i915_hpd_poll_detect_connectors()
681 drm_kms_helper_hotplug_event(&i915->drm); in i915_hpd_poll_detect_connectors()
683 drm_connector_put(&first_changed_connector->base); in i915_hpd_poll_detect_connectors()
696 mutex_lock(&dev_priv->drm.mode_config.mutex); in i915_hpd_poll_init_work()
698 enabled = READ_ONCE(dev_priv->display.hotplug.poll_enabled); in i915_hpd_poll_init_work()
701 * i915_hpd_poll_init_work() -> drm_helper_hpd_irq_event() -> in i915_hpd_poll_init_work()
708 drm_WARN_ON(&dev_priv->drm, in i915_hpd_poll_init_work()
709 READ_ONCE(dev_priv->display.hotplug.poll_enabled)); in i915_hpd_poll_init_work()
710 cancel_work(&dev_priv->display.hotplug.poll_init_work); in i915_hpd_poll_init_work()
713 drm_connector_list_iter_begin(&dev_priv->drm, &conn_iter); in i915_hpd_poll_init_work()
721 connector->base.polled = connector->polled; in i915_hpd_poll_init_work()
723 if (enabled && connector->base.polled == DRM_CONNECTOR_POLL_HPD) in i915_hpd_poll_init_work()
724 connector->base.polled = DRM_CONNECTOR_POLL_CONNECT | in i915_hpd_poll_init_work()
730 drm_kms_helper_poll_reschedule(&dev_priv->drm); in i915_hpd_poll_init_work()
732 mutex_unlock(&dev_priv->drm.mode_config.mutex); in i915_hpd_poll_init_work()
748 * intel_hpd_poll_enable - enable polling for connectors with hpd
751 * This function enables polling for all connectors which support HPD.
752 * Under certain conditions HPD may not be functional. On most Intel GPUs,
758 * dev->mode_config.mutex, we do the actual hotplug enabling in a seperate
769 WRITE_ONCE(dev_priv->display.hotplug.poll_enabled, true); in intel_hpd_poll_enable()
772 * We might already be holding dev->mode_config.mutex, so do this in a in intel_hpd_poll_enable()
774 * As well, there's no issue if we race here since we always reschedule in intel_hpd_poll_enable()
777 queue_work(dev_priv->unordered_wq, in intel_hpd_poll_enable()
778 &dev_priv->display.hotplug.poll_init_work); in intel_hpd_poll_enable()
782 * intel_hpd_poll_disable - disable polling for connectors with hpd
785 * This function disables polling for all connectors which support HPD.
786 * Under certain conditions HPD may not be functional. On most Intel GPUs,
792 * dev->mode_config.mutex, we do the actual hotplug enabling in a seperate
795 * Also used during driver init to initialize connector->polled
805 WRITE_ONCE(dev_priv->display.hotplug.poll_enabled, false); in intel_hpd_poll_disable()
806 queue_work(dev_priv->unordered_wq, in intel_hpd_poll_disable()
807 &dev_priv->display.hotplug.poll_init_work); in intel_hpd_poll_disable()
812 INIT_DELAYED_WORK(&i915->display.hotplug.hotplug_work, in intel_hpd_init_early()
814 INIT_WORK(&i915->display.hotplug.dig_port_work, i915_digport_work_func); in intel_hpd_init_early()
815 INIT_WORK(&i915->display.hotplug.poll_init_work, i915_hpd_poll_init_work); in intel_hpd_init_early()
816 INIT_DELAYED_WORK(&i915->display.hotplug.reenable_work, in intel_hpd_init_early()
819 i915->display.hotplug.hpd_storm_threshold = HPD_STORM_DEFAULT_THRESHOLD; in intel_hpd_init_early()
820 /* If we have MST support, we want to avoid doing short HPD IRQ storm in intel_hpd_init_early()
821 * detection, as short HPD storms will occur as a natural part of in intel_hpd_init_early()
826 i915->display.hotplug.hpd_short_storm_enabled = !HAS_DP_MST(i915); in intel_hpd_init_early()
834 spin_lock_irq(&dev_priv->irq_lock); in intel_hpd_cancel_work()
836 dev_priv->display.hotplug.long_port_mask = 0; in intel_hpd_cancel_work()
837 dev_priv->display.hotplug.short_port_mask = 0; in intel_hpd_cancel_work()
838 dev_priv->display.hotplug.event_bits = 0; in intel_hpd_cancel_work()
839 dev_priv->display.hotplug.retry_bits = 0; in intel_hpd_cancel_work()
841 spin_unlock_irq(&dev_priv->irq_lock); in intel_hpd_cancel_work()
843 cancel_work_sync(&dev_priv->display.hotplug.dig_port_work); in intel_hpd_cancel_work()
844 cancel_delayed_work_sync(&dev_priv->display.hotplug.hotplug_work); in intel_hpd_cancel_work()
845 cancel_work_sync(&dev_priv->display.hotplug.poll_init_work); in intel_hpd_cancel_work()
846 cancel_delayed_work_sync(&dev_priv->display.hotplug.reenable_work); in intel_hpd_cancel_work()
856 spin_lock_irq(&dev_priv->irq_lock); in intel_hpd_disable()
857 if (dev_priv->display.hotplug.stats[pin].state == HPD_ENABLED) { in intel_hpd_disable()
858 dev_priv->display.hotplug.stats[pin].state = HPD_DISABLED; in intel_hpd_disable()
861 spin_unlock_irq(&dev_priv->irq_lock); in intel_hpd_disable()
871 spin_lock_irq(&dev_priv->irq_lock); in intel_hpd_enable()
872 dev_priv->display.hotplug.stats[pin].state = HPD_ENABLED; in intel_hpd_enable()
873 spin_unlock_irq(&dev_priv->irq_lock); in intel_hpd_enable()
878 struct drm_i915_private *dev_priv = m->private; in i915_hpd_storm_ctl_show()
879 struct intel_hotplug *hotplug = &dev_priv->display.hotplug; in i915_hpd_storm_ctl_show()
881 /* Synchronize with everything first in case there's been an HPD in i915_hpd_storm_ctl_show()
885 flush_work(&dev_priv->display.hotplug.dig_port_work); in i915_hpd_storm_ctl_show()
886 flush_delayed_work(&dev_priv->display.hotplug.hotplug_work); in i915_hpd_storm_ctl_show()
888 seq_printf(m, "Threshold: %d\n", hotplug->hpd_storm_threshold); in i915_hpd_storm_ctl_show()
890 str_yes_no(delayed_work_pending(&hotplug->reenable_work))); in i915_hpd_storm_ctl_show()
899 struct seq_file *m = file->private_data; in i915_hpd_storm_ctl_write()
900 struct drm_i915_private *dev_priv = m->private; in i915_hpd_storm_ctl_write()
901 struct intel_hotplug *hotplug = &dev_priv->display.hotplug; in i915_hpd_storm_ctl_write()
908 return -EINVAL; in i915_hpd_storm_ctl_write()
911 return -EFAULT; in i915_hpd_storm_ctl_write()
923 return -EINVAL; in i915_hpd_storm_ctl_write()
926 drm_dbg_kms(&dev_priv->drm, in i915_hpd_storm_ctl_write()
927 "Setting HPD storm detection threshold to %d\n", in i915_hpd_storm_ctl_write()
930 drm_dbg_kms(&dev_priv->drm, "Disabling HPD storm detection\n"); in i915_hpd_storm_ctl_write()
932 spin_lock_irq(&dev_priv->irq_lock); in i915_hpd_storm_ctl_write()
933 hotplug->hpd_storm_threshold = new_threshold; in i915_hpd_storm_ctl_write()
934 /* Reset the HPD storm stats so we don't accidentally trigger a storm */ in i915_hpd_storm_ctl_write()
936 hotplug->stats[i].count = 0; in i915_hpd_storm_ctl_write()
937 spin_unlock_irq(&dev_priv->irq_lock); in i915_hpd_storm_ctl_write()
939 /* Re-enable hpd immediately if we were in an irq storm */ in i915_hpd_storm_ctl_write()
940 flush_delayed_work(&dev_priv->display.hotplug.reenable_work); in i915_hpd_storm_ctl_write()
947 return single_open(file, i915_hpd_storm_ctl_show, inode->i_private); in i915_hpd_storm_ctl_open()
961 struct drm_i915_private *dev_priv = m->private; in i915_hpd_short_storm_ctl_show()
964 str_yes_no(dev_priv->display.hotplug.hpd_short_storm_enabled)); in i915_hpd_short_storm_ctl_show()
973 inode->i_private); in i915_hpd_short_storm_ctl_open()
980 struct seq_file *m = file->private_data; in i915_hpd_short_storm_ctl_write()
981 struct drm_i915_private *dev_priv = m->private; in i915_hpd_short_storm_ctl_write()
982 struct intel_hotplug *hotplug = &dev_priv->display.hotplug; in i915_hpd_short_storm_ctl_write()
989 return -EINVAL; in i915_hpd_short_storm_ctl_write()
992 return -EFAULT; in i915_hpd_short_storm_ctl_write()
1005 return -EINVAL; in i915_hpd_short_storm_ctl_write()
1007 drm_dbg_kms(&dev_priv->drm, "%sabling HPD short storm detection\n", in i915_hpd_short_storm_ctl_write()
1010 spin_lock_irq(&dev_priv->irq_lock); in i915_hpd_short_storm_ctl_write()
1011 hotplug->hpd_short_storm_enabled = new_state; in i915_hpd_short_storm_ctl_write()
1012 /* Reset the HPD storm stats so we don't accidentally trigger a storm */ in i915_hpd_short_storm_ctl_write()
1014 hotplug->stats[i].count = 0; in i915_hpd_short_storm_ctl_write()
1015 spin_unlock_irq(&dev_priv->irq_lock); in i915_hpd_short_storm_ctl_write()
1017 /* Re-enable hpd immediately if we were in an irq storm */ in i915_hpd_short_storm_ctl_write()
1018 flush_delayed_work(&dev_priv->display.hotplug.reenable_work); in i915_hpd_short_storm_ctl_write()
1034 struct drm_minor *minor = i915->drm.primary; in intel_hpd_debugfs_register()
1036 debugfs_create_file("i915_hpd_storm_ctl", 0644, minor->debugfs_root, in intel_hpd_debugfs_register()
1038 debugfs_create_file("i915_hpd_short_storm_ctl", 0644, minor->debugfs_root, in intel_hpd_debugfs_register()
1040 debugfs_create_bool("i915_ignore_long_hpd", 0644, minor->debugfs_root, in intel_hpd_debugfs_register()
1041 &i915->display.hotplug.ignore_long_hpd); in intel_hpd_debugfs_register()