Lines Matching refs:xe
36 static bool has_display(struct xe_device *xe) in has_display() argument
38 return HAS_DISPLAY(&xe->display); in has_display()
72 static void unset_display_features(struct xe_device *xe) in unset_display_features() argument
74 xe->drm.driver_features &= ~(DRIVER_MODESET | DRIVER_ATOMIC); in unset_display_features()
79 struct xe_device *xe = to_xe_device(dev); in display_destroy() local
81 destroy_workqueue(xe->display.hotplug.dp_wq); in display_destroy()
95 int xe_display_create(struct xe_device *xe) in xe_display_create() argument
97 spin_lock_init(&xe->display.fb_tracking.lock); in xe_display_create()
99 xe->display.hotplug.dp_wq = alloc_ordered_workqueue("xe-dp", 0); in xe_display_create()
101 return drmm_add_action_or_reset(&xe->drm, display_destroy, NULL); in xe_display_create()
106 struct xe_device *xe = to_xe_device(dev); in xe_display_fini_nommio() local
107 struct intel_display *display = &xe->display; in xe_display_fini_nommio()
109 if (!xe->info.probe_display) in xe_display_fini_nommio()
115 int xe_display_init_nommio(struct xe_device *xe) in xe_display_init_nommio() argument
117 if (!xe->info.probe_display) in xe_display_init_nommio()
121 spin_lock_init(&xe->uncore.lock); in xe_display_init_nommio()
124 intel_detect_pch(xe); in xe_display_init_nommio()
126 return drmm_add_action_or_reset(&xe->drm, xe_display_fini_nommio, xe); in xe_display_init_nommio()
131 struct xe_device *xe = arg; in xe_display_fini_noirq() local
132 struct intel_display *display = &xe->display; in xe_display_fini_noirq()
134 if (!xe->info.probe_display) in xe_display_fini_noirq()
141 int xe_display_init_noirq(struct xe_device *xe) in xe_display_init_noirq() argument
143 struct intel_display *display = &xe->display; in xe_display_init_noirq()
146 if (!xe->info.probe_display) in xe_display_init_noirq()
158 intel_dram_detect(xe); in xe_display_init_noirq()
160 intel_bw_init_hw(xe); in xe_display_init_noirq()
170 return devm_add_action_or_reset(xe->drm.dev, xe_display_fini_noirq, xe); in xe_display_init_noirq()
175 struct xe_device *xe = arg; in xe_display_fini_noaccel() local
176 struct intel_display *display = &xe->display; in xe_display_fini_noaccel()
178 if (!xe->info.probe_display) in xe_display_fini_noaccel()
184 int xe_display_init_noaccel(struct xe_device *xe) in xe_display_init_noaccel() argument
186 struct intel_display *display = &xe->display; in xe_display_init_noaccel()
189 if (!xe->info.probe_display) in xe_display_init_noaccel()
196 return devm_add_action_or_reset(xe->drm.dev, xe_display_fini_noaccel, xe); in xe_display_init_noaccel()
199 int xe_display_init(struct xe_device *xe) in xe_display_init() argument
201 struct intel_display *display = &xe->display; in xe_display_init()
203 if (!xe->info.probe_display) in xe_display_init()
209 void xe_display_fini(struct xe_device *xe) in xe_display_fini() argument
211 struct intel_display *display = &xe->display; in xe_display_fini()
213 if (!xe->info.probe_display) in xe_display_fini()
216 intel_hpd_poll_fini(xe); in xe_display_fini()
219 intel_audio_deinit(xe); in xe_display_fini()
222 void xe_display_register(struct xe_device *xe) in xe_display_register() argument
224 struct intel_display *display = &xe->display; in xe_display_register()
226 if (!xe->info.probe_display) in xe_display_register()
234 void xe_display_unregister(struct xe_device *xe) in xe_display_unregister() argument
236 struct intel_display *display = &xe->display; in xe_display_unregister()
238 if (!xe->info.probe_display) in xe_display_unregister()
246 void xe_display_driver_remove(struct xe_device *xe) in xe_display_driver_remove() argument
248 struct intel_display *display = &xe->display; in xe_display_driver_remove()
250 if (!xe->info.probe_display) in xe_display_driver_remove()
258 void xe_display_irq_handler(struct xe_device *xe, u32 master_ctl) in xe_display_irq_handler() argument
260 if (!xe->info.probe_display) in xe_display_irq_handler()
264 gen11_display_irq_handler(xe); in xe_display_irq_handler()
267 void xe_display_irq_enable(struct xe_device *xe, u32 gu_misc_iir) in xe_display_irq_enable() argument
269 struct intel_display *display = &xe->display; in xe_display_irq_enable()
271 if (!xe->info.probe_display) in xe_display_irq_enable()
278 void xe_display_irq_reset(struct xe_device *xe) in xe_display_irq_reset() argument
280 if (!xe->info.probe_display) in xe_display_irq_reset()
283 gen11_display_irq_reset(xe); in xe_display_irq_reset()
286 void xe_display_irq_postinstall(struct xe_device *xe, struct xe_gt *gt) in xe_display_irq_postinstall() argument
288 if (!xe->info.probe_display) in xe_display_irq_postinstall()
292 gen11_de_irq_postinstall(xe); in xe_display_irq_postinstall()
304 static void xe_display_flush_cleanup_work(struct xe_device *xe) in xe_display_flush_cleanup_work() argument
308 for_each_intel_crtc(&xe->drm, crtc) { in xe_display_flush_cleanup_work()
326 static void __xe_display_pm_suspend(struct xe_device *xe, bool runtime) in __xe_display_pm_suspend() argument
328 struct intel_display *display = &xe->display; in __xe_display_pm_suspend()
330 if (!xe->info.probe_display) in __xe_display_pm_suspend()
339 intel_fbdev_set_suspend(&xe->drm, FBINFO_STATE_SUSPENDED, true); in __xe_display_pm_suspend()
341 if (!runtime && has_display(xe)) { in __xe_display_pm_suspend()
342 drm_kms_helper_poll_disable(&xe->drm); in __xe_display_pm_suspend()
347 xe_display_flush_cleanup_work(xe); in __xe_display_pm_suspend()
349 intel_hpd_cancel_work(xe); in __xe_display_pm_suspend()
351 if (!runtime && has_display(xe)) { in __xe_display_pm_suspend()
353 intel_encoder_suspend_all(&xe->display); in __xe_display_pm_suspend()
360 if (runtime && has_display(xe)) in __xe_display_pm_suspend()
361 intel_hpd_poll_enable(xe); in __xe_display_pm_suspend()
364 void xe_display_pm_suspend(struct xe_device *xe) in xe_display_pm_suspend() argument
366 __xe_display_pm_suspend(xe, false); in xe_display_pm_suspend()
369 void xe_display_pm_shutdown(struct xe_device *xe) in xe_display_pm_shutdown() argument
371 struct intel_display *display = &xe->display; in xe_display_pm_shutdown()
373 if (!xe->info.probe_display) in xe_display_pm_shutdown()
377 intel_fbdev_set_suspend(&xe->drm, FBINFO_STATE_SUSPENDED, true); in xe_display_pm_shutdown()
378 if (has_display(xe)) { in xe_display_pm_shutdown()
379 drm_kms_helper_poll_disable(&xe->drm); in xe_display_pm_shutdown()
384 xe_display_flush_cleanup_work(xe); in xe_display_pm_shutdown()
386 intel_hpd_cancel_work(xe); in xe_display_pm_shutdown()
388 if (has_display(xe)) in xe_display_pm_shutdown()
399 void xe_display_pm_runtime_suspend(struct xe_device *xe) in xe_display_pm_runtime_suspend() argument
401 if (!xe->info.probe_display) in xe_display_pm_runtime_suspend()
404 if (xe->d3cold.allowed) { in xe_display_pm_runtime_suspend()
405 __xe_display_pm_suspend(xe, true); in xe_display_pm_runtime_suspend()
409 intel_hpd_poll_enable(xe); in xe_display_pm_runtime_suspend()
412 void xe_display_pm_suspend_late(struct xe_device *xe) in xe_display_pm_suspend_late() argument
414 struct intel_display *display = &xe->display; in xe_display_pm_suspend_late()
417 if (!xe->info.probe_display) in xe_display_pm_suspend_late()
423 void xe_display_pm_runtime_suspend_late(struct xe_device *xe) in xe_display_pm_runtime_suspend_late() argument
425 struct intel_display *display = &xe->display; in xe_display_pm_runtime_suspend_late()
427 if (!xe->info.probe_display) in xe_display_pm_runtime_suspend_late()
430 if (xe->d3cold.allowed) in xe_display_pm_runtime_suspend_late()
431 xe_display_pm_suspend_late(xe); in xe_display_pm_runtime_suspend_late()
441 void xe_display_pm_shutdown_late(struct xe_device *xe) in xe_display_pm_shutdown_late() argument
443 struct intel_display *display = &xe->display; in xe_display_pm_shutdown_late()
445 if (!xe->info.probe_display) in xe_display_pm_shutdown_late()
456 void xe_display_pm_resume_early(struct xe_device *xe) in xe_display_pm_resume_early() argument
458 struct intel_display *display = &xe->display; in xe_display_pm_resume_early()
460 if (!xe->info.probe_display) in xe_display_pm_resume_early()
466 static void __xe_display_pm_resume(struct xe_device *xe, bool runtime) in __xe_display_pm_resume() argument
468 struct intel_display *display = &xe->display; in __xe_display_pm_resume()
470 if (!xe->info.probe_display) in __xe_display_pm_resume()
475 if (has_display(xe)) in __xe_display_pm_resume()
476 drm_mode_config_reset(&xe->drm); in __xe_display_pm_resume()
480 if (!runtime && has_display(xe)) in __xe_display_pm_resume()
483 intel_hpd_init(xe); in __xe_display_pm_resume()
485 if (!runtime && has_display(xe)) { in __xe_display_pm_resume()
487 drm_kms_helper_poll_enable(&xe->drm); in __xe_display_pm_resume()
491 if (has_display(xe)) in __xe_display_pm_resume()
492 intel_hpd_poll_disable(xe); in __xe_display_pm_resume()
497 intel_fbdev_set_suspend(&xe->drm, FBINFO_STATE_RUNNING, false); in __xe_display_pm_resume()
502 void xe_display_pm_resume(struct xe_device *xe) in xe_display_pm_resume() argument
504 __xe_display_pm_resume(xe, false); in xe_display_pm_resume()
507 void xe_display_pm_runtime_resume(struct xe_device *xe) in xe_display_pm_runtime_resume() argument
509 if (!xe->info.probe_display) in xe_display_pm_runtime_resume()
512 if (xe->d3cold.allowed) { in xe_display_pm_runtime_resume()
513 __xe_display_pm_resume(xe, true); in xe_display_pm_runtime_resume()
517 intel_hpd_init(xe); in xe_display_pm_runtime_resume()
518 intel_hpd_poll_disable(xe); in xe_display_pm_runtime_resume()
529 int xe_display_probe(struct xe_device *xe) in xe_display_probe() argument
531 struct pci_dev *pdev = to_pci_dev(xe->drm.dev); in xe_display_probe()
535 if (!xe->info.probe_display) in xe_display_probe()
540 err = drmm_add_action_or_reset(&xe->drm, display_device_remove, display); in xe_display_probe()
544 if (has_display(xe)) in xe_display_probe()
548 xe->info.probe_display = false; in xe_display_probe()
549 unset_display_features(xe); in xe_display_probe()