Lines Matching refs:display

86 void intel_display_driver_init_hw(struct intel_display *display)  in intel_display_driver_init_hw()  argument
88 if (!HAS_DISPLAY(display)) in intel_display_driver_init_hw()
91 intel_cdclk_read_hw(display); in intel_display_driver_init_hw()
93 intel_display_wa_apply(display); in intel_display_driver_init_hw()
111 static void intel_mode_config_init(struct intel_display *display) in intel_mode_config_init() argument
113 struct drm_mode_config *mode_config = &display->drm->mode_config; in intel_mode_config_init()
115 drm_mode_config_init(display->drm); in intel_mode_config_init()
116 INIT_LIST_HEAD(&display->global.obj_list); in intel_mode_config_init()
127 mode_config->async_page_flip = HAS_ASYNC_FLIPS(display); in intel_mode_config_init()
133 if (DISPLAY_VER(display) >= 7) { in intel_mode_config_init()
136 } else if (DISPLAY_VER(display) >= 4) { in intel_mode_config_init()
139 } else if (DISPLAY_VER(display) == 3) { in intel_mode_config_init()
147 if (display->platform.i845g || display->platform.i865g) { in intel_mode_config_init()
148 mode_config->cursor_width = display->platform.i845g ? 64 : 512; in intel_mode_config_init()
150 } else if (display->platform.i830 || display->platform.i85x || in intel_mode_config_init()
151 display->platform.i915g || display->platform.i915gm) { in intel_mode_config_init()
160 static void intel_mode_config_cleanup(struct intel_display *display) in intel_mode_config_cleanup() argument
162 intel_atomic_global_obj_cleanup(display); in intel_mode_config_cleanup()
163 drm_mode_config_cleanup(display->drm); in intel_mode_config_cleanup()
166 static void intel_plane_possible_crtcs_init(struct intel_display *display) in intel_plane_possible_crtcs_init() argument
170 for_each_intel_plane(display->drm, plane) { in intel_plane_possible_crtcs_init()
171 struct intel_crtc *crtc = intel_crtc_for_pipe(display, in intel_plane_possible_crtcs_init()
178 void intel_display_driver_early_probe(struct intel_display *display) in intel_display_driver_early_probe() argument
181 intel_pch_detect(display); in intel_display_driver_early_probe()
183 if (!HAS_DISPLAY(display)) in intel_display_driver_early_probe()
186 spin_lock_init(&display->fb_tracking.lock); in intel_display_driver_early_probe()
187 mutex_init(&display->backlight.lock); in intel_display_driver_early_probe()
188 mutex_init(&display->audio.mutex); in intel_display_driver_early_probe()
189 mutex_init(&display->wm.wm_mutex); in intel_display_driver_early_probe()
190 mutex_init(&display->pps.mutex); in intel_display_driver_early_probe()
191 mutex_init(&display->hdcp.hdcp_mutex); in intel_display_driver_early_probe()
193 intel_display_irq_init(display); in intel_display_driver_early_probe()
194 intel_dkl_phy_init(display); in intel_display_driver_early_probe()
195 intel_color_init_hooks(display); in intel_display_driver_early_probe()
196 intel_init_cdclk_hooks(display); in intel_display_driver_early_probe()
197 intel_audio_hooks_init(display); in intel_display_driver_early_probe()
198 intel_dpll_init_clock_hook(display); in intel_display_driver_early_probe()
199 intel_init_display_hooks(display); in intel_display_driver_early_probe()
200 intel_fdi_init_hook(display); in intel_display_driver_early_probe()
201 intel_dmc_wl_init(display); in intel_display_driver_early_probe()
205 int intel_display_driver_probe_noirq(struct intel_display *display) in intel_display_driver_probe_noirq() argument
207 struct drm_i915_private *i915 = to_i915(display->drm); in intel_display_driver_probe_noirq()
213 if (HAS_DISPLAY(display)) { in intel_display_driver_probe_noirq()
214 ret = drm_vblank_init(display->drm, in intel_display_driver_probe_noirq()
215 INTEL_NUM_PIPES(display)); in intel_display_driver_probe_noirq()
220 intel_bios_init(display); in intel_display_driver_probe_noirq()
222 ret = intel_vga_register(display); in intel_display_driver_probe_noirq()
226 intel_psr_dc5_dc6_wa_init(display); in intel_display_driver_probe_noirq()
229 ret = intel_power_domains_init(display); in intel_display_driver_probe_noirq()
233 intel_pmdemand_init_early(display); in intel_display_driver_probe_noirq()
235 intel_power_domains_init_hw(display, false); in intel_display_driver_probe_noirq()
237 if (!HAS_DISPLAY(display)) in intel_display_driver_probe_noirq()
240 display->hotplug.dp_wq = alloc_ordered_workqueue("intel-dp", 0); in intel_display_driver_probe_noirq()
241 if (!display->hotplug.dp_wq) { in intel_display_driver_probe_noirq()
246 display->wq.modeset = alloc_ordered_workqueue("i915_modeset", 0); in intel_display_driver_probe_noirq()
247 if (!display->wq.modeset) { in intel_display_driver_probe_noirq()
252 display->wq.flip = alloc_workqueue("i915_flip", WQ_HIGHPRI | in intel_display_driver_probe_noirq()
254 if (!display->wq.flip) { in intel_display_driver_probe_noirq()
259 display->wq.cleanup = alloc_workqueue("i915_cleanup", WQ_HIGHPRI, 0); in intel_display_driver_probe_noirq()
260 if (!display->wq.cleanup) { in intel_display_driver_probe_noirq()
265 display->wq.unordered = alloc_workqueue("display_unordered", 0, 0); in intel_display_driver_probe_noirq()
266 if (!display->wq.unordered) { in intel_display_driver_probe_noirq()
271 intel_dmc_init(display); in intel_display_driver_probe_noirq()
273 intel_mode_config_init(display); in intel_display_driver_probe_noirq()
275 ret = intel_cdclk_init(display); in intel_display_driver_probe_noirq()
279 ret = intel_color_init(display); in intel_display_driver_probe_noirq()
283 ret = intel_dbuf_init(display); in intel_display_driver_probe_noirq()
287 ret = intel_bw_init(display); in intel_display_driver_probe_noirq()
291 ret = intel_pmdemand_init(display); in intel_display_driver_probe_noirq()
295 intel_init_quirks(display); in intel_display_driver_probe_noirq()
297 intel_fbc_init(display); in intel_display_driver_probe_noirq()
302 destroy_workqueue(display->wq.unordered); in intel_display_driver_probe_noirq()
304 destroy_workqueue(display->wq.cleanup); in intel_display_driver_probe_noirq()
306 destroy_workqueue(display->wq.flip); in intel_display_driver_probe_noirq()
308 destroy_workqueue(display->wq.modeset); in intel_display_driver_probe_noirq()
310 destroy_workqueue(display->hotplug.dp_wq); in intel_display_driver_probe_noirq()
312 intel_dmc_fini(display); in intel_display_driver_probe_noirq()
313 intel_power_domains_driver_remove(display); in intel_display_driver_probe_noirq()
315 intel_vga_unregister(display); in intel_display_driver_probe_noirq()
317 intel_bios_driver_remove(display); in intel_display_driver_probe_noirq()
322 static void set_display_access(struct intel_display *display, in set_display_access() argument
330 err = drm_modeset_lock_all_ctx(display->drm, &ctx); in set_display_access()
334 display->access.any_task_allowed = any_task_allowed; in set_display_access()
335 display->access.allowed_task = allowed_task; in set_display_access()
338 drm_WARN_ON(display->drm, err); in set_display_access()
351 void intel_display_driver_enable_user_access(struct intel_display *display) in intel_display_driver_enable_user_access() argument
353 set_display_access(display, true, NULL); in intel_display_driver_enable_user_access()
355 intel_hpd_enable_detection_work(display); in intel_display_driver_enable_user_access()
375 void intel_display_driver_disable_user_access(struct intel_display *display) in intel_display_driver_disable_user_access() argument
377 intel_hpd_disable_detection_work(display); in intel_display_driver_disable_user_access()
379 set_display_access(display, false, current); in intel_display_driver_disable_user_access()
394 void intel_display_driver_suspend_access(struct intel_display *display) in intel_display_driver_suspend_access() argument
396 set_display_access(display, false, NULL); in intel_display_driver_suspend_access()
413 void intel_display_driver_resume_access(struct intel_display *display) in intel_display_driver_resume_access() argument
415 set_display_access(display, false, current); in intel_display_driver_resume_access()
429 bool intel_display_driver_check_access(struct intel_display *display) in intel_display_driver_check_access() argument
434 if (display->access.any_task_allowed || in intel_display_driver_check_access()
435 display->access.allowed_task == current) in intel_display_driver_check_access()
441 if (display->access.allowed_task) in intel_display_driver_check_access()
443 display->access.allowed_task->comm, in intel_display_driver_check_access()
444 task_pid_vnr(display->access.allowed_task)); in intel_display_driver_check_access()
446 drm_dbg_kms(display->drm, in intel_display_driver_check_access()
454 int intel_display_driver_probe_nogem(struct intel_display *display) in intel_display_driver_probe_nogem() argument
459 if (!HAS_DISPLAY(display)) in intel_display_driver_probe_nogem()
462 intel_wm_init(display); in intel_display_driver_probe_nogem()
464 intel_panel_sanitize_ssc(display); in intel_display_driver_probe_nogem()
466 intel_pps_setup(display); in intel_display_driver_probe_nogem()
468 intel_gmbus_setup(display); in intel_display_driver_probe_nogem()
470 drm_dbg_kms(display->drm, "%d display pipe%s available.\n", in intel_display_driver_probe_nogem()
471 INTEL_NUM_PIPES(display), in intel_display_driver_probe_nogem()
472 INTEL_NUM_PIPES(display) > 1 ? "s" : ""); in intel_display_driver_probe_nogem()
474 for_each_pipe(display, pipe) { in intel_display_driver_probe_nogem()
475 ret = intel_crtc_init(display, pipe); in intel_display_driver_probe_nogem()
480 intel_plane_possible_crtcs_init(display); in intel_display_driver_probe_nogem()
481 intel_dpll_init(display); in intel_display_driver_probe_nogem()
482 intel_fdi_pll_freq_update(display); in intel_display_driver_probe_nogem()
484 intel_update_czclk(display); in intel_display_driver_probe_nogem()
485 intel_display_driver_init_hw(display); in intel_display_driver_probe_nogem()
486 intel_dpll_update_ref_clks(display); in intel_display_driver_probe_nogem()
488 if (display->cdclk.max_cdclk_freq == 0) in intel_display_driver_probe_nogem()
489 intel_update_max_cdclk(display); in intel_display_driver_probe_nogem()
491 intel_hti_init(display); in intel_display_driver_probe_nogem()
493 intel_setup_outputs(display); in intel_display_driver_probe_nogem()
495 ret = intel_dp_tunnel_mgr_init(display); in intel_display_driver_probe_nogem()
499 intel_display_driver_disable_user_access(display); in intel_display_driver_probe_nogem()
501 drm_modeset_lock_all(display->drm); in intel_display_driver_probe_nogem()
502 intel_modeset_setup_hw_state(display, display->drm->mode_config.acquire_ctx); in intel_display_driver_probe_nogem()
503 intel_acpi_assign_connector_fwnodes(display); in intel_display_driver_probe_nogem()
504 drm_modeset_unlock_all(display->drm); in intel_display_driver_probe_nogem()
506 intel_initial_plane_config(display); in intel_display_driver_probe_nogem()
513 if (!HAS_GMCH(display)) in intel_display_driver_probe_nogem()
514 ilk_wm_sanitize(display); in intel_display_driver_probe_nogem()
519 intel_hdcp_component_fini(display); in intel_display_driver_probe_nogem()
521 intel_mode_config_cleanup(display); in intel_display_driver_probe_nogem()
527 int intel_display_driver_probe(struct intel_display *display) in intel_display_driver_probe() argument
531 if (!HAS_DISPLAY(display)) in intel_display_driver_probe()
539 intel_hdcp_component_init(display); in intel_display_driver_probe()
541 intel_flipq_init(display); in intel_display_driver_probe()
549 ret = intel_initial_commit(display); in intel_display_driver_probe()
551 drm_dbg_kms(display->drm, "Initial modeset failed, %d\n", ret); in intel_display_driver_probe()
553 intel_overlay_setup(display); in intel_display_driver_probe()
556 intel_hpd_init(display); in intel_display_driver_probe()
558 skl_watermark_ipc_init(display); in intel_display_driver_probe()
563 void intel_display_driver_register(struct intel_display *display) in intel_display_driver_register() argument
565 struct drm_printer p = drm_dbg_printer(display->drm, DRM_UT_KMS, in intel_display_driver_register()
568 if (!HAS_DISPLAY(display)) in intel_display_driver_register()
572 intel_opregion_register(display); in intel_display_driver_register()
573 intel_acpi_video_register(display); in intel_display_driver_register()
575 intel_audio_init(display); in intel_display_driver_register()
577 intel_display_driver_enable_user_access(display); in intel_display_driver_register()
579 intel_audio_register(display); in intel_display_driver_register()
581 intel_display_debugfs_register(display); in intel_display_driver_register()
588 drm_kms_helper_poll_init(display->drm); in intel_display_driver_register()
589 intel_hpd_poll_disable(display); in intel_display_driver_register()
591 intel_fbdev_setup(display); in intel_display_driver_register()
593 intel_display_device_info_print(DISPLAY_INFO(display), in intel_display_driver_register()
594 DISPLAY_RUNTIME_INFO(display), &p); in intel_display_driver_register()
600 void intel_display_driver_remove(struct intel_display *display) in intel_display_driver_remove() argument
602 if (!HAS_DISPLAY(display)) in intel_display_driver_remove()
605 flush_workqueue(display->wq.flip); in intel_display_driver_remove()
606 flush_workqueue(display->wq.modeset); in intel_display_driver_remove()
607 flush_workqueue(display->wq.cleanup); in intel_display_driver_remove()
608 flush_workqueue(display->wq.unordered); in intel_display_driver_remove()
615 intel_dp_mst_suspend(display); in intel_display_driver_remove()
619 void intel_display_driver_remove_noirq(struct intel_display *display) in intel_display_driver_remove_noirq() argument
621 if (!HAS_DISPLAY(display)) in intel_display_driver_remove_noirq()
624 intel_display_driver_suspend_access(display); in intel_display_driver_remove_noirq()
630 intel_hpd_poll_fini(display); in intel_display_driver_remove_noirq()
635 flush_workqueue(display->wq.unordered); in intel_display_driver_remove_noirq()
637 intel_hdcp_component_fini(display); in intel_display_driver_remove_noirq()
639 intel_mode_config_cleanup(display); in intel_display_driver_remove_noirq()
641 intel_dp_tunnel_mgr_cleanup(display); in intel_display_driver_remove_noirq()
643 intel_overlay_cleanup(display); in intel_display_driver_remove_noirq()
645 intel_gmbus_teardown(display); in intel_display_driver_remove_noirq()
647 destroy_workqueue(display->hotplug.dp_wq); in intel_display_driver_remove_noirq()
648 destroy_workqueue(display->wq.flip); in intel_display_driver_remove_noirq()
649 destroy_workqueue(display->wq.modeset); in intel_display_driver_remove_noirq()
650 destroy_workqueue(display->wq.cleanup); in intel_display_driver_remove_noirq()
651 destroy_workqueue(display->wq.unordered); in intel_display_driver_remove_noirq()
653 intel_fbc_cleanup(display); in intel_display_driver_remove_noirq()
657 void intel_display_driver_remove_nogem(struct intel_display *display) in intel_display_driver_remove_nogem() argument
659 intel_dmc_fini(display); in intel_display_driver_remove_nogem()
661 intel_power_domains_driver_remove(display); in intel_display_driver_remove_nogem()
663 intel_vga_unregister(display); in intel_display_driver_remove_nogem()
665 intel_bios_driver_remove(display); in intel_display_driver_remove_nogem()
668 void intel_display_driver_unregister(struct intel_display *display) in intel_display_driver_unregister() argument
670 if (!HAS_DISPLAY(display)) in intel_display_driver_unregister()
675 drm_client_dev_unregister(display->drm); in intel_display_driver_unregister()
682 drm_kms_helper_poll_fini(display->drm); in intel_display_driver_unregister()
684 intel_display_driver_disable_user_access(display); in intel_display_driver_unregister()
686 intel_audio_deinit(display); in intel_display_driver_unregister()
688 drm_atomic_helper_shutdown(display->drm); in intel_display_driver_unregister()
691 intel_opregion_unregister(display); in intel_display_driver_unregister()
698 int intel_display_driver_suspend(struct intel_display *display) in intel_display_driver_suspend() argument
703 if (!HAS_DISPLAY(display)) in intel_display_driver_suspend()
706 state = drm_atomic_helper_suspend(display->drm); in intel_display_driver_suspend()
709 drm_err(display->drm, "Suspending crtc's failed with %i\n", in intel_display_driver_suspend()
712 display->restore.modeset_state = state; in intel_display_driver_suspend()
715 flush_workqueue(display->wq.cleanup); in intel_display_driver_suspend()
717 intel_dp_mst_suspend(display); in intel_display_driver_suspend()
723 __intel_display_driver_resume(struct intel_display *display, in __intel_display_driver_resume() argument
731 intel_modeset_setup_hw_state(display, ctx); in __intel_display_driver_resume()
751 if (!HAS_GMCH(display)) in __intel_display_driver_resume()
756 drm_WARN_ON(display->drm, ret == -EDEADLK); in __intel_display_driver_resume()
761 void intel_display_driver_resume(struct intel_display *display) in intel_display_driver_resume() argument
763 struct drm_atomic_state *state = display->restore.modeset_state; in intel_display_driver_resume()
767 if (!HAS_DISPLAY(display)) in intel_display_driver_resume()
771 intel_dp_mst_resume(display); in intel_display_driver_resume()
773 display->restore.modeset_state = NULL; in intel_display_driver_resume()
780 ret = drm_modeset_lock_all_ctx(display->drm, &ctx); in intel_display_driver_resume()
788 ret = __intel_display_driver_resume(display, state, &ctx); in intel_display_driver_resume()
790 skl_watermark_ipc_update(display); in intel_display_driver_resume()
795 drm_err(display->drm, in intel_display_driver_resume()