Lines Matching refs:dev_priv

88 enum hpd_pin intel_hpd_pin_default(struct drm_i915_private *dev_priv,  in intel_hpd_pin_default()  argument
144 static bool intel_hpd_irq_storm_detect(struct drm_i915_private *dev_priv, in intel_hpd_irq_storm_detect() argument
147 struct intel_hotplug *hpd = &dev_priv->display.hotplug; in intel_hpd_irq_storm_detect()
155 (!long_hpd && !dev_priv->display.hotplug.hpd_short_storm_enabled)) in intel_hpd_irq_storm_detect()
166 drm_dbg_kms(&dev_priv->drm, in intel_hpd_irq_storm_detect()
170 drm_dbg_kms(&dev_priv->drm, in intel_hpd_irq_storm_detect()
180 intel_hpd_irq_storm_switch_to_polling(struct drm_i915_private *dev_priv) in intel_hpd_irq_storm_switch_to_polling() argument
186 lockdep_assert_held(&dev_priv->irq_lock); in intel_hpd_irq_storm_switch_to_polling()
188 drm_connector_list_iter_begin(&dev_priv->drm, &conn_iter); in intel_hpd_irq_storm_switch_to_polling()
197 dev_priv->display.hotplug.stats[pin].state != HPD_MARK_DISABLED) in intel_hpd_irq_storm_switch_to_polling()
200 drm_info(&dev_priv->drm, in intel_hpd_irq_storm_switch_to_polling()
205 dev_priv->display.hotplug.stats[pin].state = HPD_DISABLED; in intel_hpd_irq_storm_switch_to_polling()
214 drm_kms_helper_poll_reschedule(&dev_priv->drm); in intel_hpd_irq_storm_switch_to_polling()
215 mod_delayed_work(dev_priv->unordered_wq, in intel_hpd_irq_storm_switch_to_polling()
216 &dev_priv->display.hotplug.reenable_work, in intel_hpd_irq_storm_switch_to_polling()
223 struct drm_i915_private *dev_priv = in intel_hpd_irq_storm_reenable_work() local
224 container_of(work, typeof(*dev_priv), in intel_hpd_irq_storm_reenable_work()
231 wakeref = intel_runtime_pm_get(&dev_priv->runtime_pm); in intel_hpd_irq_storm_reenable_work()
233 spin_lock_irq(&dev_priv->irq_lock); in intel_hpd_irq_storm_reenable_work()
235 drm_connector_list_iter_begin(&dev_priv->drm, &conn_iter); in intel_hpd_irq_storm_reenable_work()
239 dev_priv->display.hotplug.stats[pin].state != HPD_DISABLED) in intel_hpd_irq_storm_reenable_work()
243 drm_dbg(&dev_priv->drm, in intel_hpd_irq_storm_reenable_work()
251 if (dev_priv->display.hotplug.stats[pin].state == HPD_DISABLED) in intel_hpd_irq_storm_reenable_work()
252 dev_priv->display.hotplug.stats[pin].state = HPD_ENABLED; in intel_hpd_irq_storm_reenable_work()
255 intel_hpd_irq_setup(dev_priv); in intel_hpd_irq_storm_reenable_work()
257 spin_unlock_irq(&dev_priv->irq_lock); in intel_hpd_irq_storm_reenable_work()
259 intel_runtime_pm_put(&dev_priv->runtime_pm, wakeref); in intel_hpd_irq_storm_reenable_work()
302 struct drm_i915_private *dev_priv = in i915_digport_work_func() local
308 spin_lock_irq(&dev_priv->irq_lock); in i915_digport_work_func()
309 long_port_mask = dev_priv->display.hotplug.long_port_mask; in i915_digport_work_func()
310 dev_priv->display.hotplug.long_port_mask = 0; in i915_digport_work_func()
311 short_port_mask = dev_priv->display.hotplug.short_port_mask; in i915_digport_work_func()
312 dev_priv->display.hotplug.short_port_mask = 0; in i915_digport_work_func()
313 spin_unlock_irq(&dev_priv->irq_lock); in i915_digport_work_func()
315 for_each_intel_encoder(&dev_priv->drm, encoder) { in i915_digport_work_func()
340 spin_lock_irq(&dev_priv->irq_lock); in i915_digport_work_func()
341 dev_priv->display.hotplug.event_bits |= old_bits; in i915_digport_work_func()
342 spin_unlock_irq(&dev_priv->irq_lock); in i915_digport_work_func()
343 queue_delayed_work(dev_priv->unordered_wq, in i915_digport_work_func()
344 &dev_priv->display.hotplug.hotplug_work, 0); in i915_digport_work_func()
371 struct drm_i915_private *dev_priv = in i915_hotplug_work_func() local
382 mutex_lock(&dev_priv->drm.mode_config.mutex); in i915_hotplug_work_func()
383 drm_dbg_kms(&dev_priv->drm, "running encoder hotplug functions\n"); in i915_hotplug_work_func()
385 spin_lock_irq(&dev_priv->irq_lock); in i915_hotplug_work_func()
387 hpd_event_bits = dev_priv->display.hotplug.event_bits; in i915_hotplug_work_func()
388 dev_priv->display.hotplug.event_bits = 0; in i915_hotplug_work_func()
389 hpd_retry_bits = dev_priv->display.hotplug.retry_bits; in i915_hotplug_work_func()
390 dev_priv->display.hotplug.retry_bits = 0; in i915_hotplug_work_func()
393 intel_hpd_irq_storm_switch_to_polling(dev_priv); in i915_hotplug_work_func()
395 spin_unlock_irq(&dev_priv->irq_lock); in i915_hotplug_work_func()
398 if (dev_priv->display.hotplug.ignore_long_hpd) { in i915_hotplug_work_func()
399 drm_dbg_kms(&dev_priv->drm, "Ignore HPD flag on - skip encoder hotplug handlers\n"); in i915_hotplug_work_func()
400 mutex_unlock(&dev_priv->drm.mode_config.mutex); in i915_hotplug_work_func()
404 drm_connector_list_iter_begin(&dev_priv->drm, &conn_iter); in i915_hotplug_work_func()
423 drm_dbg_kms(&dev_priv->drm, in i915_hotplug_work_func()
446 mutex_unlock(&dev_priv->drm.mode_config.mutex); in i915_hotplug_work_func()
451 drm_kms_helper_hotplug_event(&dev_priv->drm); in i915_hotplug_work_func()
459 spin_lock_irq(&dev_priv->irq_lock); in i915_hotplug_work_func()
460 dev_priv->display.hotplug.retry_bits |= retry; in i915_hotplug_work_func()
461 spin_unlock_irq(&dev_priv->irq_lock); in i915_hotplug_work_func()
463 mod_delayed_work(dev_priv->unordered_wq, in i915_hotplug_work_func()
464 &dev_priv->display.hotplug.hotplug_work, in i915_hotplug_work_func()
486 void intel_hpd_irq_handler(struct drm_i915_private *dev_priv, in intel_hpd_irq_handler() argument
499 spin_lock(&dev_priv->irq_lock); in intel_hpd_irq_handler()
507 for_each_intel_encoder(&dev_priv->drm, encoder) { in intel_hpd_irq_handler()
520 drm_dbg(&dev_priv->drm, in intel_hpd_irq_handler()
528 dev_priv->display.hotplug.long_port_mask |= BIT(port); in intel_hpd_irq_handler()
531 dev_priv->display.hotplug.short_port_mask |= BIT(port); in intel_hpd_irq_handler()
542 if (dev_priv->display.hotplug.stats[pin].state == HPD_DISABLED) { in intel_hpd_irq_handler()
549 drm_WARN_ONCE(&dev_priv->drm, !HAS_GMCH(dev_priv), in intel_hpd_irq_handler()
555 if (dev_priv->display.hotplug.stats[pin].state != HPD_ENABLED) in intel_hpd_irq_handler()
566 dev_priv->display.hotplug.event_bits |= BIT(pin); in intel_hpd_irq_handler()
571 if (intel_hpd_irq_storm_detect(dev_priv, pin, long_hpd)) { in intel_hpd_irq_handler()
572 dev_priv->display.hotplug.event_bits &= ~BIT(pin); in intel_hpd_irq_handler()
583 intel_hpd_irq_setup(dev_priv); in intel_hpd_irq_handler()
584 spin_unlock(&dev_priv->irq_lock); in intel_hpd_irq_handler()
593 queue_work(dev_priv->display.hotplug.dp_wq, &dev_priv->display.hotplug.dig_port_work); in intel_hpd_irq_handler()
595 queue_delayed_work(dev_priv->unordered_wq, in intel_hpd_irq_handler()
596 &dev_priv->display.hotplug.hotplug_work, 0); in intel_hpd_irq_handler()
613 void intel_hpd_init(struct drm_i915_private *dev_priv) in intel_hpd_init() argument
617 if (!HAS_DISPLAY(dev_priv)) in intel_hpd_init()
621 dev_priv->display.hotplug.stats[i].count = 0; in intel_hpd_init()
622 dev_priv->display.hotplug.stats[i].state = HPD_ENABLED; in intel_hpd_init()
629 spin_lock_irq(&dev_priv->irq_lock); in intel_hpd_init()
630 intel_hpd_irq_setup(dev_priv); in intel_hpd_init()
631 spin_unlock_irq(&dev_priv->irq_lock); in intel_hpd_init()
636 struct drm_i915_private *dev_priv = in i915_hpd_poll_init_work() local
643 mutex_lock(&dev_priv->drm.mode_config.mutex); in i915_hpd_poll_init_work()
645 enabled = READ_ONCE(dev_priv->display.hotplug.poll_enabled); in i915_hpd_poll_init_work()
647 drm_connector_list_iter_begin(&dev_priv->drm, &conn_iter); in i915_hpd_poll_init_work()
664 drm_kms_helper_poll_reschedule(&dev_priv->drm); in i915_hpd_poll_init_work()
666 mutex_unlock(&dev_priv->drm.mode_config.mutex); in i915_hpd_poll_init_work()
673 drm_helper_hpd_irq_event(&dev_priv->drm); in i915_hpd_poll_init_work()
692 void intel_hpd_poll_enable(struct drm_i915_private *dev_priv) in intel_hpd_poll_enable() argument
694 if (!HAS_DISPLAY(dev_priv) || in intel_hpd_poll_enable()
695 !INTEL_DISPLAY_ENABLED(dev_priv)) in intel_hpd_poll_enable()
698 WRITE_ONCE(dev_priv->display.hotplug.poll_enabled, true); in intel_hpd_poll_enable()
706 queue_work(dev_priv->unordered_wq, in intel_hpd_poll_enable()
707 &dev_priv->display.hotplug.poll_init_work); in intel_hpd_poll_enable()
729 void intel_hpd_poll_disable(struct drm_i915_private *dev_priv) in intel_hpd_poll_disable() argument
731 if (!HAS_DISPLAY(dev_priv)) in intel_hpd_poll_disable()
734 WRITE_ONCE(dev_priv->display.hotplug.poll_enabled, false); in intel_hpd_poll_disable()
735 queue_work(dev_priv->unordered_wq, in intel_hpd_poll_disable()
736 &dev_priv->display.hotplug.poll_init_work); in intel_hpd_poll_disable()
758 void intel_hpd_cancel_work(struct drm_i915_private *dev_priv) in intel_hpd_cancel_work() argument
760 if (!HAS_DISPLAY(dev_priv)) in intel_hpd_cancel_work()
763 spin_lock_irq(&dev_priv->irq_lock); in intel_hpd_cancel_work()
765 dev_priv->display.hotplug.long_port_mask = 0; in intel_hpd_cancel_work()
766 dev_priv->display.hotplug.short_port_mask = 0; in intel_hpd_cancel_work()
767 dev_priv->display.hotplug.event_bits = 0; in intel_hpd_cancel_work()
768 dev_priv->display.hotplug.retry_bits = 0; in intel_hpd_cancel_work()
770 spin_unlock_irq(&dev_priv->irq_lock); in intel_hpd_cancel_work()
772 cancel_work_sync(&dev_priv->display.hotplug.dig_port_work); in intel_hpd_cancel_work()
773 cancel_delayed_work_sync(&dev_priv->display.hotplug.hotplug_work); in intel_hpd_cancel_work()
774 cancel_work_sync(&dev_priv->display.hotplug.poll_init_work); in intel_hpd_cancel_work()
775 cancel_delayed_work_sync(&dev_priv->display.hotplug.reenable_work); in intel_hpd_cancel_work()
778 bool intel_hpd_disable(struct drm_i915_private *dev_priv, enum hpd_pin pin) in intel_hpd_disable() argument
785 spin_lock_irq(&dev_priv->irq_lock); in intel_hpd_disable()
786 if (dev_priv->display.hotplug.stats[pin].state == HPD_ENABLED) { in intel_hpd_disable()
787 dev_priv->display.hotplug.stats[pin].state = HPD_DISABLED; in intel_hpd_disable()
790 spin_unlock_irq(&dev_priv->irq_lock); in intel_hpd_disable()
795 void intel_hpd_enable(struct drm_i915_private *dev_priv, enum hpd_pin pin) in intel_hpd_enable() argument
800 spin_lock_irq(&dev_priv->irq_lock); in intel_hpd_enable()
801 dev_priv->display.hotplug.stats[pin].state = HPD_ENABLED; in intel_hpd_enable()
802 spin_unlock_irq(&dev_priv->irq_lock); in intel_hpd_enable()
807 struct drm_i915_private *dev_priv = m->private; in i915_hpd_storm_ctl_show() local
808 struct intel_hotplug *hotplug = &dev_priv->display.hotplug; in i915_hpd_storm_ctl_show()
813 intel_synchronize_irq(dev_priv); in i915_hpd_storm_ctl_show()
814 flush_work(&dev_priv->display.hotplug.dig_port_work); in i915_hpd_storm_ctl_show()
815 flush_delayed_work(&dev_priv->display.hotplug.hotplug_work); in i915_hpd_storm_ctl_show()
829 struct drm_i915_private *dev_priv = m->private; in i915_hpd_storm_ctl_write() local
830 struct intel_hotplug *hotplug = &dev_priv->display.hotplug; in i915_hpd_storm_ctl_write()
855 drm_dbg_kms(&dev_priv->drm, in i915_hpd_storm_ctl_write()
859 drm_dbg_kms(&dev_priv->drm, "Disabling HPD storm detection\n"); in i915_hpd_storm_ctl_write()
861 spin_lock_irq(&dev_priv->irq_lock); in i915_hpd_storm_ctl_write()
866 spin_unlock_irq(&dev_priv->irq_lock); in i915_hpd_storm_ctl_write()
869 flush_delayed_work(&dev_priv->display.hotplug.reenable_work); in i915_hpd_storm_ctl_write()
890 struct drm_i915_private *dev_priv = m->private; in i915_hpd_short_storm_ctl_show() local
893 str_yes_no(dev_priv->display.hotplug.hpd_short_storm_enabled)); in i915_hpd_short_storm_ctl_show()
910 struct drm_i915_private *dev_priv = m->private; in i915_hpd_short_storm_ctl_write() local
911 struct intel_hotplug *hotplug = &dev_priv->display.hotplug; in i915_hpd_short_storm_ctl_write()
932 new_state = !HAS_DP_MST(dev_priv); in i915_hpd_short_storm_ctl_write()
936 drm_dbg_kms(&dev_priv->drm, "%sabling HPD short storm detection\n", in i915_hpd_short_storm_ctl_write()
939 spin_lock_irq(&dev_priv->irq_lock); in i915_hpd_short_storm_ctl_write()
944 spin_unlock_irq(&dev_priv->irq_lock); in i915_hpd_short_storm_ctl_write()
947 flush_delayed_work(&dev_priv->display.hotplug.reenable_work); in i915_hpd_short_storm_ctl_write()