Lines Matching refs:dev_priv
92 enum hpd_pin intel_hpd_pin_default(struct drm_i915_private *dev_priv, in intel_hpd_pin_default() argument
148 static bool intel_hpd_irq_storm_detect(struct drm_i915_private *dev_priv, in intel_hpd_irq_storm_detect() argument
151 struct intel_hotplug *hpd = &dev_priv->display.hotplug; in intel_hpd_irq_storm_detect()
159 (!long_hpd && !dev_priv->display.hotplug.hpd_short_storm_enabled)) in intel_hpd_irq_storm_detect()
170 drm_dbg_kms(&dev_priv->drm, in intel_hpd_irq_storm_detect()
174 drm_dbg_kms(&dev_priv->drm, in intel_hpd_irq_storm_detect()
224 intel_hpd_irq_storm_switch_to_polling(struct drm_i915_private *dev_priv) in intel_hpd_irq_storm_switch_to_polling() argument
230 lockdep_assert_held(&dev_priv->irq_lock); in intel_hpd_irq_storm_switch_to_polling()
232 drm_connector_list_iter_begin(&dev_priv->drm, &conn_iter); in intel_hpd_irq_storm_switch_to_polling()
241 dev_priv->display.hotplug.stats[pin].state != HPD_MARK_DISABLED) in intel_hpd_irq_storm_switch_to_polling()
244 drm_info(&dev_priv->drm, in intel_hpd_irq_storm_switch_to_polling()
249 dev_priv->display.hotplug.stats[pin].state = HPD_DISABLED; in intel_hpd_irq_storm_switch_to_polling()
258 drm_kms_helper_poll_reschedule(&dev_priv->drm); in intel_hpd_irq_storm_switch_to_polling()
259 mod_delayed_detection_work(dev_priv, in intel_hpd_irq_storm_switch_to_polling()
260 &dev_priv->display.hotplug.reenable_work, in intel_hpd_irq_storm_switch_to_polling()
267 struct drm_i915_private *dev_priv = in intel_hpd_irq_storm_reenable_work() local
268 container_of(work, typeof(*dev_priv), in intel_hpd_irq_storm_reenable_work()
275 wakeref = intel_runtime_pm_get(&dev_priv->runtime_pm); in intel_hpd_irq_storm_reenable_work()
277 spin_lock_irq(&dev_priv->irq_lock); in intel_hpd_irq_storm_reenable_work()
279 drm_connector_list_iter_begin(&dev_priv->drm, &conn_iter); in intel_hpd_irq_storm_reenable_work()
283 dev_priv->display.hotplug.stats[pin].state != HPD_DISABLED) in intel_hpd_irq_storm_reenable_work()
287 drm_dbg(&dev_priv->drm, in intel_hpd_irq_storm_reenable_work()
295 if (dev_priv->display.hotplug.stats[pin].state == HPD_DISABLED) in intel_hpd_irq_storm_reenable_work()
296 dev_priv->display.hotplug.stats[pin].state = HPD_ENABLED; in intel_hpd_irq_storm_reenable_work()
299 intel_hpd_irq_setup(dev_priv); in intel_hpd_irq_storm_reenable_work()
301 spin_unlock_irq(&dev_priv->irq_lock); in intel_hpd_irq_storm_reenable_work()
303 intel_runtime_pm_put(&dev_priv->runtime_pm, wakeref); in intel_hpd_irq_storm_reenable_work()
354 struct drm_i915_private *dev_priv = in i915_digport_work_func() local
360 spin_lock_irq(&dev_priv->irq_lock); in i915_digport_work_func()
361 long_port_mask = dev_priv->display.hotplug.long_port_mask; in i915_digport_work_func()
362 dev_priv->display.hotplug.long_port_mask = 0; in i915_digport_work_func()
363 short_port_mask = dev_priv->display.hotplug.short_port_mask; in i915_digport_work_func()
364 dev_priv->display.hotplug.short_port_mask = 0; in i915_digport_work_func()
365 spin_unlock_irq(&dev_priv->irq_lock); in i915_digport_work_func()
367 for_each_intel_encoder(&dev_priv->drm, encoder) { in i915_digport_work_func()
392 spin_lock_irq(&dev_priv->irq_lock); in i915_digport_work_func()
393 dev_priv->display.hotplug.event_bits |= old_bits; in i915_digport_work_func()
394 queue_delayed_detection_work(dev_priv, in i915_digport_work_func()
395 &dev_priv->display.hotplug.hotplug_work, 0); in i915_digport_work_func()
396 spin_unlock_irq(&dev_priv->irq_lock); in i915_digport_work_func()
423 struct drm_i915_private *dev_priv = in i915_hotplug_work_func() local
434 mutex_lock(&dev_priv->drm.mode_config.mutex); in i915_hotplug_work_func()
435 drm_dbg_kms(&dev_priv->drm, "running encoder hotplug functions\n"); in i915_hotplug_work_func()
437 spin_lock_irq(&dev_priv->irq_lock); in i915_hotplug_work_func()
439 hpd_event_bits = dev_priv->display.hotplug.event_bits; in i915_hotplug_work_func()
440 dev_priv->display.hotplug.event_bits = 0; in i915_hotplug_work_func()
441 hpd_retry_bits = dev_priv->display.hotplug.retry_bits; in i915_hotplug_work_func()
442 dev_priv->display.hotplug.retry_bits = 0; in i915_hotplug_work_func()
445 intel_hpd_irq_storm_switch_to_polling(dev_priv); in i915_hotplug_work_func()
447 spin_unlock_irq(&dev_priv->irq_lock); in i915_hotplug_work_func()
450 if (dev_priv->display.hotplug.ignore_long_hpd) { in i915_hotplug_work_func()
451 drm_dbg_kms(&dev_priv->drm, "Ignore HPD flag on - skip encoder hotplug handlers\n"); in i915_hotplug_work_func()
452 mutex_unlock(&dev_priv->drm.mode_config.mutex); in i915_hotplug_work_func()
456 drm_connector_list_iter_begin(&dev_priv->drm, &conn_iter); in i915_hotplug_work_func()
475 drm_dbg_kms(&dev_priv->drm, in i915_hotplug_work_func()
498 mutex_unlock(&dev_priv->drm.mode_config.mutex); in i915_hotplug_work_func()
503 drm_kms_helper_hotplug_event(&dev_priv->drm); in i915_hotplug_work_func()
511 spin_lock_irq(&dev_priv->irq_lock); in i915_hotplug_work_func()
512 dev_priv->display.hotplug.retry_bits |= retry; in i915_hotplug_work_func()
514 mod_delayed_detection_work(dev_priv, in i915_hotplug_work_func()
515 &dev_priv->display.hotplug.hotplug_work, in i915_hotplug_work_func()
517 spin_unlock_irq(&dev_priv->irq_lock); in i915_hotplug_work_func()
538 void intel_hpd_irq_handler(struct drm_i915_private *dev_priv, in intel_hpd_irq_handler() argument
551 spin_lock(&dev_priv->irq_lock); in intel_hpd_irq_handler()
559 for_each_intel_encoder(&dev_priv->drm, encoder) { in intel_hpd_irq_handler()
572 drm_dbg(&dev_priv->drm, in intel_hpd_irq_handler()
580 dev_priv->display.hotplug.long_port_mask |= BIT(port); in intel_hpd_irq_handler()
583 dev_priv->display.hotplug.short_port_mask |= BIT(port); in intel_hpd_irq_handler()
594 if (dev_priv->display.hotplug.stats[pin].state == HPD_DISABLED) { in intel_hpd_irq_handler()
601 drm_WARN_ONCE(&dev_priv->drm, !HAS_GMCH(dev_priv), in intel_hpd_irq_handler()
607 if (dev_priv->display.hotplug.stats[pin].state != HPD_ENABLED) in intel_hpd_irq_handler()
618 dev_priv->display.hotplug.event_bits |= BIT(pin); in intel_hpd_irq_handler()
623 if (intel_hpd_irq_storm_detect(dev_priv, pin, long_hpd)) { in intel_hpd_irq_handler()
624 dev_priv->display.hotplug.event_bits &= ~BIT(pin); in intel_hpd_irq_handler()
635 intel_hpd_irq_setup(dev_priv); in intel_hpd_irq_handler()
644 queue_work(dev_priv->display.hotplug.dp_wq, &dev_priv->display.hotplug.dig_port_work); in intel_hpd_irq_handler()
646 queue_delayed_detection_work(dev_priv, in intel_hpd_irq_handler()
647 &dev_priv->display.hotplug.hotplug_work, 0); in intel_hpd_irq_handler()
649 spin_unlock(&dev_priv->irq_lock); in intel_hpd_irq_handler()
666 void intel_hpd_init(struct drm_i915_private *dev_priv) in intel_hpd_init() argument
670 if (!HAS_DISPLAY(dev_priv)) in intel_hpd_init()
674 dev_priv->display.hotplug.stats[i].count = 0; in intel_hpd_init()
675 dev_priv->display.hotplug.stats[i].state = HPD_ENABLED; in intel_hpd_init()
682 spin_lock_irq(&dev_priv->irq_lock); in intel_hpd_init()
683 intel_hpd_irq_setup(dev_priv); in intel_hpd_init()
684 spin_unlock_irq(&dev_priv->irq_lock); in intel_hpd_init()
732 struct drm_i915_private *dev_priv = in i915_hpd_poll_init_work() local
740 mutex_lock(&dev_priv->drm.mode_config.mutex); in i915_hpd_poll_init_work()
742 enabled = READ_ONCE(dev_priv->display.hotplug.poll_enabled); in i915_hpd_poll_init_work()
750 wakeref = intel_display_power_get(dev_priv, in i915_hpd_poll_init_work()
752 drm_WARN_ON(&dev_priv->drm, in i915_hpd_poll_init_work()
753 READ_ONCE(dev_priv->display.hotplug.poll_enabled)); in i915_hpd_poll_init_work()
754 cancel_work(&dev_priv->display.hotplug.poll_init_work); in i915_hpd_poll_init_work()
757 spin_lock_irq(&dev_priv->irq_lock); in i915_hpd_poll_init_work()
759 drm_connector_list_iter_begin(&dev_priv->drm, &conn_iter); in i915_hpd_poll_init_work()
767 if (dev_priv->display.hotplug.stats[pin].state == HPD_DISABLED) in i915_hpd_poll_init_work()
778 spin_unlock_irq(&dev_priv->irq_lock); in i915_hpd_poll_init_work()
781 drm_kms_helper_poll_reschedule(&dev_priv->drm); in i915_hpd_poll_init_work()
783 mutex_unlock(&dev_priv->drm.mode_config.mutex); in i915_hpd_poll_init_work()
790 i915_hpd_poll_detect_connectors(dev_priv); in i915_hpd_poll_init_work()
792 intel_display_power_put(dev_priv, in i915_hpd_poll_init_work()
814 void intel_hpd_poll_enable(struct drm_i915_private *dev_priv) in intel_hpd_poll_enable() argument
816 struct intel_display *display = &dev_priv->display; in intel_hpd_poll_enable()
818 if (!HAS_DISPLAY(dev_priv) || in intel_hpd_poll_enable()
822 WRITE_ONCE(dev_priv->display.hotplug.poll_enabled, true); in intel_hpd_poll_enable()
830 spin_lock_irq(&dev_priv->irq_lock); in intel_hpd_poll_enable()
831 queue_detection_work(dev_priv, in intel_hpd_poll_enable()
832 &dev_priv->display.hotplug.poll_init_work); in intel_hpd_poll_enable()
833 spin_unlock_irq(&dev_priv->irq_lock); in intel_hpd_poll_enable()
855 void intel_hpd_poll_disable(struct drm_i915_private *dev_priv) in intel_hpd_poll_disable() argument
857 if (!HAS_DISPLAY(dev_priv)) in intel_hpd_poll_disable()
860 WRITE_ONCE(dev_priv->display.hotplug.poll_enabled, false); in intel_hpd_poll_disable()
862 spin_lock_irq(&dev_priv->irq_lock); in intel_hpd_poll_disable()
863 queue_detection_work(dev_priv, in intel_hpd_poll_disable()
864 &dev_priv->display.hotplug.poll_init_work); in intel_hpd_poll_disable()
865 spin_unlock_irq(&dev_priv->irq_lock); in intel_hpd_poll_disable()
901 void intel_hpd_cancel_work(struct drm_i915_private *dev_priv) in intel_hpd_cancel_work() argument
903 if (!HAS_DISPLAY(dev_priv)) in intel_hpd_cancel_work()
906 spin_lock_irq(&dev_priv->irq_lock); in intel_hpd_cancel_work()
908 dev_priv->display.hotplug.long_port_mask = 0; in intel_hpd_cancel_work()
909 dev_priv->display.hotplug.short_port_mask = 0; in intel_hpd_cancel_work()
910 dev_priv->display.hotplug.event_bits = 0; in intel_hpd_cancel_work()
911 dev_priv->display.hotplug.retry_bits = 0; in intel_hpd_cancel_work()
913 spin_unlock_irq(&dev_priv->irq_lock); in intel_hpd_cancel_work()
915 cancel_work_sync(&dev_priv->display.hotplug.dig_port_work); in intel_hpd_cancel_work()
921 if (cancel_all_detection_work(dev_priv)) in intel_hpd_cancel_work()
922 drm_dbg_kms(&dev_priv->drm, "Hotplug detection work still active\n"); in intel_hpd_cancel_work()
925 bool intel_hpd_disable(struct drm_i915_private *dev_priv, enum hpd_pin pin) in intel_hpd_disable() argument
932 spin_lock_irq(&dev_priv->irq_lock); in intel_hpd_disable()
933 if (dev_priv->display.hotplug.stats[pin].state == HPD_ENABLED) { in intel_hpd_disable()
934 dev_priv->display.hotplug.stats[pin].state = HPD_DISABLED; in intel_hpd_disable()
937 spin_unlock_irq(&dev_priv->irq_lock); in intel_hpd_disable()
942 void intel_hpd_enable(struct drm_i915_private *dev_priv, enum hpd_pin pin) in intel_hpd_enable() argument
947 spin_lock_irq(&dev_priv->irq_lock); in intel_hpd_enable()
948 dev_priv->display.hotplug.stats[pin].state = HPD_ENABLED; in intel_hpd_enable()
949 spin_unlock_irq(&dev_priv->irq_lock); in intel_hpd_enable()
1010 struct drm_i915_private *dev_priv = m->private; in i915_hpd_storm_ctl_show() local
1011 struct intel_hotplug *hotplug = &dev_priv->display.hotplug; in i915_hpd_storm_ctl_show()
1016 intel_synchronize_irq(dev_priv); in i915_hpd_storm_ctl_show()
1017 flush_work(&dev_priv->display.hotplug.dig_port_work); in i915_hpd_storm_ctl_show()
1018 flush_delayed_work(&dev_priv->display.hotplug.hotplug_work); in i915_hpd_storm_ctl_show()
1032 struct drm_i915_private *dev_priv = m->private; in i915_hpd_storm_ctl_write() local
1033 struct intel_hotplug *hotplug = &dev_priv->display.hotplug; in i915_hpd_storm_ctl_write()
1058 drm_dbg_kms(&dev_priv->drm, in i915_hpd_storm_ctl_write()
1062 drm_dbg_kms(&dev_priv->drm, "Disabling HPD storm detection\n"); in i915_hpd_storm_ctl_write()
1064 spin_lock_irq(&dev_priv->irq_lock); in i915_hpd_storm_ctl_write()
1069 spin_unlock_irq(&dev_priv->irq_lock); in i915_hpd_storm_ctl_write()
1072 flush_delayed_work(&dev_priv->display.hotplug.reenable_work); in i915_hpd_storm_ctl_write()
1093 struct drm_i915_private *dev_priv = m->private; in i915_hpd_short_storm_ctl_show() local
1096 str_yes_no(dev_priv->display.hotplug.hpd_short_storm_enabled)); in i915_hpd_short_storm_ctl_show()
1113 struct drm_i915_private *dev_priv = m->private; in i915_hpd_short_storm_ctl_write() local
1114 struct intel_hotplug *hotplug = &dev_priv->display.hotplug; in i915_hpd_short_storm_ctl_write()
1135 new_state = !HAS_DP_MST(dev_priv); in i915_hpd_short_storm_ctl_write()
1139 drm_dbg_kms(&dev_priv->drm, "%sabling HPD short storm detection\n", in i915_hpd_short_storm_ctl_write()
1142 spin_lock_irq(&dev_priv->irq_lock); in i915_hpd_short_storm_ctl_write()
1147 spin_unlock_irq(&dev_priv->irq_lock); in i915_hpd_short_storm_ctl_write()
1150 flush_delayed_work(&dev_priv->display.hotplug.reenable_work); in i915_hpd_short_storm_ctl_write()