Lines Matching refs:dev_priv
86 enum hpd_pin intel_hpd_pin_default(struct drm_i915_private *dev_priv, in intel_hpd_pin_default() argument
139 static bool intel_hpd_irq_storm_detect(struct drm_i915_private *dev_priv, in intel_hpd_irq_storm_detect() argument
142 struct i915_hotplug *hpd = &dev_priv->hotplug; in intel_hpd_irq_storm_detect()
150 (!long_hpd && !dev_priv->hotplug.hpd_short_storm_enabled)) in intel_hpd_irq_storm_detect()
161 drm_dbg_kms(&dev_priv->drm, in intel_hpd_irq_storm_detect()
165 drm_dbg_kms(&dev_priv->drm, in intel_hpd_irq_storm_detect()
175 intel_hpd_irq_storm_switch_to_polling(struct drm_i915_private *dev_priv) in intel_hpd_irq_storm_switch_to_polling() argument
177 struct drm_device *dev = &dev_priv->drm; in intel_hpd_irq_storm_switch_to_polling()
182 lockdep_assert_held(&dev_priv->irq_lock); in intel_hpd_irq_storm_switch_to_polling()
193 dev_priv->hotplug.stats[pin].state != HPD_MARK_DISABLED) in intel_hpd_irq_storm_switch_to_polling()
196 drm_info(&dev_priv->drm, in intel_hpd_irq_storm_switch_to_polling()
201 dev_priv->hotplug.stats[pin].state = HPD_DISABLED; in intel_hpd_irq_storm_switch_to_polling()
211 mod_delayed_work(system_wq, &dev_priv->hotplug.reenable_work, in intel_hpd_irq_storm_switch_to_polling()
224 struct drm_i915_private *dev_priv = in intel_hpd_irq_storm_reenable_work() local
225 container_of(work, typeof(*dev_priv), in intel_hpd_irq_storm_reenable_work()
227 struct drm_device *dev = &dev_priv->drm; in intel_hpd_irq_storm_reenable_work()
233 wakeref = intel_runtime_pm_get(&dev_priv->runtime_pm); in intel_hpd_irq_storm_reenable_work()
235 spin_lock_irq(&dev_priv->irq_lock); in intel_hpd_irq_storm_reenable_work()
241 dev_priv->hotplug.stats[pin].state != HPD_DISABLED) in intel_hpd_irq_storm_reenable_work()
245 drm_dbg(&dev_priv->drm, in intel_hpd_irq_storm_reenable_work()
253 if (dev_priv->hotplug.stats[pin].state == HPD_DISABLED) in intel_hpd_irq_storm_reenable_work()
254 dev_priv->hotplug.stats[pin].state = HPD_ENABLED; in intel_hpd_irq_storm_reenable_work()
257 intel_hpd_irq_setup(dev_priv); in intel_hpd_irq_storm_reenable_work()
259 spin_unlock_irq(&dev_priv->irq_lock); in intel_hpd_irq_storm_reenable_work()
261 intel_runtime_pm_put(&dev_priv->runtime_pm, wakeref); in intel_hpd_irq_storm_reenable_work()
304 struct drm_i915_private *dev_priv = in i915_digport_work_func() local
310 spin_lock_irq(&dev_priv->irq_lock); in i915_digport_work_func()
311 long_port_mask = dev_priv->hotplug.long_port_mask; in i915_digport_work_func()
312 dev_priv->hotplug.long_port_mask = 0; in i915_digport_work_func()
313 short_port_mask = dev_priv->hotplug.short_port_mask; in i915_digport_work_func()
314 dev_priv->hotplug.short_port_mask = 0; in i915_digport_work_func()
315 spin_unlock_irq(&dev_priv->irq_lock); in i915_digport_work_func()
317 for_each_intel_encoder(&dev_priv->drm, encoder) { in i915_digport_work_func()
342 spin_lock_irq(&dev_priv->irq_lock); in i915_digport_work_func()
343 dev_priv->hotplug.event_bits |= old_bits; in i915_digport_work_func()
344 spin_unlock_irq(&dev_priv->irq_lock); in i915_digport_work_func()
345 queue_delayed_work(system_wq, &dev_priv->hotplug.hotplug_work, 0); in i915_digport_work_func()
372 struct drm_i915_private *dev_priv = in i915_hotplug_work_func() local
375 struct drm_device *dev = &dev_priv->drm; 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->hotplug.event_bits; in i915_hotplug_work_func()
388 dev_priv->hotplug.event_bits = 0; in i915_hotplug_work_func()
389 hpd_retry_bits = dev_priv->hotplug.retry_bits; in i915_hotplug_work_func()
390 dev_priv->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()
416 drm_dbg_kms(&dev_priv->drm, in i915_hotplug_work_func()
442 spin_lock_irq(&dev_priv->irq_lock); in i915_hotplug_work_func()
443 dev_priv->hotplug.retry_bits |= retry; in i915_hotplug_work_func()
444 spin_unlock_irq(&dev_priv->irq_lock); in i915_hotplug_work_func()
446 mod_delayed_work(system_wq, &dev_priv->hotplug.hotplug_work, in i915_hotplug_work_func()
468 void intel_hpd_irq_handler(struct drm_i915_private *dev_priv, in intel_hpd_irq_handler() argument
481 spin_lock(&dev_priv->irq_lock); in intel_hpd_irq_handler()
489 for_each_intel_encoder(&dev_priv->drm, encoder) { in intel_hpd_irq_handler()
502 drm_dbg(&dev_priv->drm, in intel_hpd_irq_handler()
510 dev_priv->hotplug.long_port_mask |= BIT(port); in intel_hpd_irq_handler()
513 dev_priv->hotplug.short_port_mask |= BIT(port); in intel_hpd_irq_handler()
524 if (dev_priv->hotplug.stats[pin].state == HPD_DISABLED) { in intel_hpd_irq_handler()
531 drm_WARN_ONCE(&dev_priv->drm, !HAS_GMCH(dev_priv), in intel_hpd_irq_handler()
537 if (dev_priv->hotplug.stats[pin].state != HPD_ENABLED) in intel_hpd_irq_handler()
548 dev_priv->hotplug.event_bits |= BIT(pin); in intel_hpd_irq_handler()
553 if (intel_hpd_irq_storm_detect(dev_priv, pin, long_hpd)) { in intel_hpd_irq_handler()
554 dev_priv->hotplug.event_bits &= ~BIT(pin); in intel_hpd_irq_handler()
565 intel_hpd_irq_setup(dev_priv); in intel_hpd_irq_handler()
566 spin_unlock(&dev_priv->irq_lock); in intel_hpd_irq_handler()
575 queue_work(dev_priv->hotplug.dp_wq, &dev_priv->hotplug.dig_port_work); in intel_hpd_irq_handler()
577 queue_delayed_work(system_wq, &dev_priv->hotplug.hotplug_work, 0); in intel_hpd_irq_handler()
594 void intel_hpd_init(struct drm_i915_private *dev_priv) in intel_hpd_init() argument
598 if (!HAS_DISPLAY(dev_priv)) in intel_hpd_init()
602 dev_priv->hotplug.stats[i].count = 0; in intel_hpd_init()
603 dev_priv->hotplug.stats[i].state = HPD_ENABLED; in intel_hpd_init()
610 spin_lock_irq(&dev_priv->irq_lock); in intel_hpd_init()
611 intel_hpd_irq_setup(dev_priv); in intel_hpd_init()
612 spin_unlock_irq(&dev_priv->irq_lock); in intel_hpd_init()
617 struct drm_i915_private *dev_priv = in i915_hpd_poll_init_work() local
620 struct drm_device *dev = &dev_priv->drm; in i915_hpd_poll_init_work()
627 enabled = READ_ONCE(dev_priv->hotplug.poll_enabled); in i915_hpd_poll_init_work()
674 void intel_hpd_poll_enable(struct drm_i915_private *dev_priv) in intel_hpd_poll_enable() argument
676 if (!HAS_DISPLAY(dev_priv)) in intel_hpd_poll_enable()
679 WRITE_ONCE(dev_priv->hotplug.poll_enabled, true); in intel_hpd_poll_enable()
687 schedule_work(&dev_priv->hotplug.poll_init_work); in intel_hpd_poll_enable()
709 void intel_hpd_poll_disable(struct drm_i915_private *dev_priv) in intel_hpd_poll_disable() argument
711 if (!HAS_DISPLAY(dev_priv)) in intel_hpd_poll_disable()
714 WRITE_ONCE(dev_priv->hotplug.poll_enabled, false); in intel_hpd_poll_disable()
715 schedule_work(&dev_priv->hotplug.poll_init_work); in intel_hpd_poll_disable()
718 void intel_hpd_init_work(struct drm_i915_private *dev_priv) in intel_hpd_init_work() argument
720 INIT_DELAYED_WORK(&dev_priv->hotplug.hotplug_work, in intel_hpd_init_work()
722 INIT_WORK(&dev_priv->hotplug.dig_port_work, i915_digport_work_func); in intel_hpd_init_work()
723 INIT_WORK(&dev_priv->hotplug.poll_init_work, i915_hpd_poll_init_work); in intel_hpd_init_work()
724 INIT_DELAYED_WORK(&dev_priv->hotplug.reenable_work, in intel_hpd_init_work()
728 void intel_hpd_cancel_work(struct drm_i915_private *dev_priv) in intel_hpd_cancel_work() argument
730 if (!HAS_DISPLAY(dev_priv)) in intel_hpd_cancel_work()
733 spin_lock_irq(&dev_priv->irq_lock); in intel_hpd_cancel_work()
735 dev_priv->hotplug.long_port_mask = 0; in intel_hpd_cancel_work()
736 dev_priv->hotplug.short_port_mask = 0; in intel_hpd_cancel_work()
737 dev_priv->hotplug.event_bits = 0; in intel_hpd_cancel_work()
738 dev_priv->hotplug.retry_bits = 0; in intel_hpd_cancel_work()
740 spin_unlock_irq(&dev_priv->irq_lock); in intel_hpd_cancel_work()
742 cancel_work_sync(&dev_priv->hotplug.dig_port_work); in intel_hpd_cancel_work()
743 cancel_delayed_work_sync(&dev_priv->hotplug.hotplug_work); in intel_hpd_cancel_work()
744 cancel_work_sync(&dev_priv->hotplug.poll_init_work); in intel_hpd_cancel_work()
745 cancel_delayed_work_sync(&dev_priv->hotplug.reenable_work); in intel_hpd_cancel_work()
748 bool intel_hpd_disable(struct drm_i915_private *dev_priv, enum hpd_pin pin) in intel_hpd_disable() argument
755 spin_lock_irq(&dev_priv->irq_lock); in intel_hpd_disable()
756 if (dev_priv->hotplug.stats[pin].state == HPD_ENABLED) { in intel_hpd_disable()
757 dev_priv->hotplug.stats[pin].state = HPD_DISABLED; in intel_hpd_disable()
760 spin_unlock_irq(&dev_priv->irq_lock); in intel_hpd_disable()
765 void intel_hpd_enable(struct drm_i915_private *dev_priv, enum hpd_pin pin) in intel_hpd_enable() argument
770 spin_lock_irq(&dev_priv->irq_lock); in intel_hpd_enable()
771 dev_priv->hotplug.stats[pin].state = HPD_ENABLED; in intel_hpd_enable()
772 spin_unlock_irq(&dev_priv->irq_lock); in intel_hpd_enable()