Lines Matching refs:dev_priv
87 enum hpd_pin intel_hpd_pin_default(struct drm_i915_private *dev_priv, in intel_hpd_pin_default() argument
140 static bool intel_hpd_irq_storm_detect(struct drm_i915_private *dev_priv, in intel_hpd_irq_storm_detect() argument
143 struct intel_hotplug *hpd = &dev_priv->display.hotplug; in intel_hpd_irq_storm_detect()
151 (!long_hpd && !dev_priv->display.hotplug.hpd_short_storm_enabled)) in intel_hpd_irq_storm_detect()
162 drm_dbg_kms(&dev_priv->drm, in intel_hpd_irq_storm_detect()
166 drm_dbg_kms(&dev_priv->drm, in intel_hpd_irq_storm_detect()
176 intel_hpd_irq_storm_switch_to_polling(struct drm_i915_private *dev_priv) in intel_hpd_irq_storm_switch_to_polling() argument
178 struct drm_device *dev = &dev_priv->drm; in intel_hpd_irq_storm_switch_to_polling()
183 lockdep_assert_held(&dev_priv->irq_lock); in intel_hpd_irq_storm_switch_to_polling()
194 dev_priv->display.hotplug.stats[pin].state != HPD_MARK_DISABLED) in intel_hpd_irq_storm_switch_to_polling()
197 drm_info(&dev_priv->drm, in intel_hpd_irq_storm_switch_to_polling()
202 dev_priv->display.hotplug.stats[pin].state = HPD_DISABLED; in intel_hpd_irq_storm_switch_to_polling()
212 mod_delayed_work(system_wq, &dev_priv->display.hotplug.reenable_work, in intel_hpd_irq_storm_switch_to_polling()
219 struct drm_i915_private *dev_priv = in intel_hpd_irq_storm_reenable_work() local
220 container_of(work, typeof(*dev_priv), in intel_hpd_irq_storm_reenable_work()
222 struct drm_device *dev = &dev_priv->drm; in intel_hpd_irq_storm_reenable_work()
228 wakeref = intel_runtime_pm_get(&dev_priv->runtime_pm); in intel_hpd_irq_storm_reenable_work()
230 spin_lock_irq(&dev_priv->irq_lock); in intel_hpd_irq_storm_reenable_work()
236 dev_priv->display.hotplug.stats[pin].state != HPD_DISABLED) in intel_hpd_irq_storm_reenable_work()
240 drm_dbg(&dev_priv->drm, in intel_hpd_irq_storm_reenable_work()
248 if (dev_priv->display.hotplug.stats[pin].state == HPD_DISABLED) in intel_hpd_irq_storm_reenable_work()
249 dev_priv->display.hotplug.stats[pin].state = HPD_ENABLED; in intel_hpd_irq_storm_reenable_work()
252 intel_hpd_irq_setup(dev_priv); in intel_hpd_irq_storm_reenable_work()
254 spin_unlock_irq(&dev_priv->irq_lock); in intel_hpd_irq_storm_reenable_work()
256 intel_runtime_pm_put(&dev_priv->runtime_pm, wakeref); in intel_hpd_irq_storm_reenable_work()
299 struct drm_i915_private *dev_priv = in i915_digport_work_func() local
305 spin_lock_irq(&dev_priv->irq_lock); in i915_digport_work_func()
306 long_port_mask = dev_priv->display.hotplug.long_port_mask; in i915_digport_work_func()
307 dev_priv->display.hotplug.long_port_mask = 0; in i915_digport_work_func()
308 short_port_mask = dev_priv->display.hotplug.short_port_mask; in i915_digport_work_func()
309 dev_priv->display.hotplug.short_port_mask = 0; in i915_digport_work_func()
310 spin_unlock_irq(&dev_priv->irq_lock); in i915_digport_work_func()
312 for_each_intel_encoder(&dev_priv->drm, encoder) { in i915_digport_work_func()
337 spin_lock_irq(&dev_priv->irq_lock); in i915_digport_work_func()
338 dev_priv->display.hotplug.event_bits |= old_bits; in i915_digport_work_func()
339 spin_unlock_irq(&dev_priv->irq_lock); in i915_digport_work_func()
340 queue_delayed_work(system_wq, &dev_priv->display.hotplug.hotplug_work, 0); in i915_digport_work_func()
367 struct drm_i915_private *dev_priv = in i915_hotplug_work_func() local
370 struct drm_device *dev = &dev_priv->drm; in i915_hotplug_work_func()
378 drm_dbg_kms(&dev_priv->drm, "running encoder hotplug functions\n"); in i915_hotplug_work_func()
380 spin_lock_irq(&dev_priv->irq_lock); in i915_hotplug_work_func()
382 hpd_event_bits = dev_priv->display.hotplug.event_bits; in i915_hotplug_work_func()
383 dev_priv->display.hotplug.event_bits = 0; in i915_hotplug_work_func()
384 hpd_retry_bits = dev_priv->display.hotplug.retry_bits; in i915_hotplug_work_func()
385 dev_priv->display.hotplug.retry_bits = 0; in i915_hotplug_work_func()
388 intel_hpd_irq_storm_switch_to_polling(dev_priv); in i915_hotplug_work_func()
390 spin_unlock_irq(&dev_priv->irq_lock); in i915_hotplug_work_func()
411 drm_dbg_kms(&dev_priv->drm, in i915_hotplug_work_func()
437 spin_lock_irq(&dev_priv->irq_lock); in i915_hotplug_work_func()
438 dev_priv->display.hotplug.retry_bits |= retry; in i915_hotplug_work_func()
439 spin_unlock_irq(&dev_priv->irq_lock); in i915_hotplug_work_func()
441 mod_delayed_work(system_wq, &dev_priv->display.hotplug.hotplug_work, in i915_hotplug_work_func()
463 void intel_hpd_irq_handler(struct drm_i915_private *dev_priv, in intel_hpd_irq_handler() argument
476 spin_lock(&dev_priv->irq_lock); in intel_hpd_irq_handler()
484 for_each_intel_encoder(&dev_priv->drm, encoder) { in intel_hpd_irq_handler()
497 drm_dbg(&dev_priv->drm, in intel_hpd_irq_handler()
505 dev_priv->display.hotplug.long_port_mask |= BIT(port); in intel_hpd_irq_handler()
508 dev_priv->display.hotplug.short_port_mask |= BIT(port); in intel_hpd_irq_handler()
519 if (dev_priv->display.hotplug.stats[pin].state == HPD_DISABLED) { in intel_hpd_irq_handler()
526 drm_WARN_ONCE(&dev_priv->drm, !HAS_GMCH(dev_priv), in intel_hpd_irq_handler()
532 if (dev_priv->display.hotplug.stats[pin].state != HPD_ENABLED) in intel_hpd_irq_handler()
543 dev_priv->display.hotplug.event_bits |= BIT(pin); in intel_hpd_irq_handler()
548 if (intel_hpd_irq_storm_detect(dev_priv, pin, long_hpd)) { in intel_hpd_irq_handler()
549 dev_priv->display.hotplug.event_bits &= ~BIT(pin); in intel_hpd_irq_handler()
560 intel_hpd_irq_setup(dev_priv); in intel_hpd_irq_handler()
561 spin_unlock(&dev_priv->irq_lock); in intel_hpd_irq_handler()
570 queue_work(dev_priv->display.hotplug.dp_wq, &dev_priv->display.hotplug.dig_port_work); in intel_hpd_irq_handler()
572 queue_delayed_work(system_wq, &dev_priv->display.hotplug.hotplug_work, 0); in intel_hpd_irq_handler()
589 void intel_hpd_init(struct drm_i915_private *dev_priv) in intel_hpd_init() argument
593 if (!HAS_DISPLAY(dev_priv)) in intel_hpd_init()
597 dev_priv->display.hotplug.stats[i].count = 0; in intel_hpd_init()
598 dev_priv->display.hotplug.stats[i].state = HPD_ENABLED; in intel_hpd_init()
605 spin_lock_irq(&dev_priv->irq_lock); in intel_hpd_init()
606 intel_hpd_irq_setup(dev_priv); in intel_hpd_init()
607 spin_unlock_irq(&dev_priv->irq_lock); in intel_hpd_init()
612 struct drm_i915_private *dev_priv = in i915_hpd_poll_init_work() local
615 struct drm_device *dev = &dev_priv->drm; in i915_hpd_poll_init_work()
622 enabled = READ_ONCE(dev_priv->display.hotplug.poll_enabled); in i915_hpd_poll_init_work()
669 void intel_hpd_poll_enable(struct drm_i915_private *dev_priv) in intel_hpd_poll_enable() argument
671 if (!HAS_DISPLAY(dev_priv) || in intel_hpd_poll_enable()
672 !INTEL_DISPLAY_ENABLED(dev_priv)) in intel_hpd_poll_enable()
675 WRITE_ONCE(dev_priv->display.hotplug.poll_enabled, true); in intel_hpd_poll_enable()
683 schedule_work(&dev_priv->display.hotplug.poll_init_work); in intel_hpd_poll_enable()
705 void intel_hpd_poll_disable(struct drm_i915_private *dev_priv) in intel_hpd_poll_disable() argument
707 if (!HAS_DISPLAY(dev_priv)) in intel_hpd_poll_disable()
710 WRITE_ONCE(dev_priv->display.hotplug.poll_enabled, false); in intel_hpd_poll_disable()
711 schedule_work(&dev_priv->display.hotplug.poll_init_work); in intel_hpd_poll_disable()
714 void intel_hpd_init_work(struct drm_i915_private *dev_priv) in intel_hpd_init_work() argument
716 INIT_DELAYED_WORK(&dev_priv->display.hotplug.hotplug_work, in intel_hpd_init_work()
718 INIT_WORK(&dev_priv->display.hotplug.dig_port_work, i915_digport_work_func); in intel_hpd_init_work()
719 INIT_WORK(&dev_priv->display.hotplug.poll_init_work, i915_hpd_poll_init_work); in intel_hpd_init_work()
720 INIT_DELAYED_WORK(&dev_priv->display.hotplug.reenable_work, in intel_hpd_init_work()
724 void intel_hpd_cancel_work(struct drm_i915_private *dev_priv) in intel_hpd_cancel_work() argument
726 if (!HAS_DISPLAY(dev_priv)) in intel_hpd_cancel_work()
729 spin_lock_irq(&dev_priv->irq_lock); in intel_hpd_cancel_work()
731 dev_priv->display.hotplug.long_port_mask = 0; in intel_hpd_cancel_work()
732 dev_priv->display.hotplug.short_port_mask = 0; in intel_hpd_cancel_work()
733 dev_priv->display.hotplug.event_bits = 0; in intel_hpd_cancel_work()
734 dev_priv->display.hotplug.retry_bits = 0; in intel_hpd_cancel_work()
736 spin_unlock_irq(&dev_priv->irq_lock); in intel_hpd_cancel_work()
738 cancel_work_sync(&dev_priv->display.hotplug.dig_port_work); in intel_hpd_cancel_work()
739 cancel_delayed_work_sync(&dev_priv->display.hotplug.hotplug_work); in intel_hpd_cancel_work()
740 cancel_work_sync(&dev_priv->display.hotplug.poll_init_work); in intel_hpd_cancel_work()
741 cancel_delayed_work_sync(&dev_priv->display.hotplug.reenable_work); in intel_hpd_cancel_work()
744 bool intel_hpd_disable(struct drm_i915_private *dev_priv, enum hpd_pin pin) in intel_hpd_disable() argument
751 spin_lock_irq(&dev_priv->irq_lock); in intel_hpd_disable()
752 if (dev_priv->display.hotplug.stats[pin].state == HPD_ENABLED) { in intel_hpd_disable()
753 dev_priv->display.hotplug.stats[pin].state = HPD_DISABLED; in intel_hpd_disable()
756 spin_unlock_irq(&dev_priv->irq_lock); in intel_hpd_disable()
761 void intel_hpd_enable(struct drm_i915_private *dev_priv, enum hpd_pin pin) in intel_hpd_enable() argument
766 spin_lock_irq(&dev_priv->irq_lock); in intel_hpd_enable()
767 dev_priv->display.hotplug.stats[pin].state = HPD_ENABLED; in intel_hpd_enable()
768 spin_unlock_irq(&dev_priv->irq_lock); in intel_hpd_enable()