Lines Matching +full:needs +full:- +full:hpd
1 // SPDX-License-Identifier: MIT
3 * Copyright © 2022-2023 Intel Corporation
64 * apple-gmux is needed on dual GPU MacBook Pro in intel_display_driver_probe_defer()
70 /* If the LCD panel has a privacy-screen, wait for it */ in intel_display_driver_probe_defer()
71 privacy_screen = drm_privacy_screen_get(&pdev->dev, NULL); in intel_display_driver_probe_defer()
72 if (IS_ERR(privacy_screen) && PTR_ERR(privacy_screen) == -EPROBE_DEFER) in intel_display_driver_probe_defer()
87 cdclk_state = to_intel_cdclk_state(i915->display.cdclk.obj.state); in intel_display_driver_init_hw()
90 intel_cdclk_dump_config(i915, &i915->display.cdclk.hw, "Current CDCLK"); in intel_display_driver_init_hw()
91 cdclk_state->logical = cdclk_state->actual = i915->display.cdclk.hw; in intel_display_driver_init_hw()
114 struct drm_mode_config *mode_config = &i915->drm.mode_config; in intel_mode_config_init()
116 drm_mode_config_init(&i915->drm); in intel_mode_config_init()
117 INIT_LIST_HEAD(&i915->display.global.obj_list); in intel_mode_config_init()
119 mode_config->min_width = 0; in intel_mode_config_init()
120 mode_config->min_height = 0; in intel_mode_config_init()
122 mode_config->preferred_depth = 24; in intel_mode_config_init()
123 mode_config->prefer_shadow = 1; in intel_mode_config_init()
125 mode_config->funcs = &intel_mode_funcs; in intel_mode_config_init()
126 mode_config->helper_private = &intel_mode_config_funcs; in intel_mode_config_init()
128 mode_config->async_page_flip = HAS_ASYNC_FLIPS(i915); in intel_mode_config_init()
135 mode_config->max_width = 16384; in intel_mode_config_init()
136 mode_config->max_height = 16384; in intel_mode_config_init()
138 mode_config->max_width = 8192; in intel_mode_config_init()
139 mode_config->max_height = 8192; in intel_mode_config_init()
141 mode_config->max_width = 4096; in intel_mode_config_init()
142 mode_config->max_height = 4096; in intel_mode_config_init()
144 mode_config->max_width = 2048; in intel_mode_config_init()
145 mode_config->max_height = 2048; in intel_mode_config_init()
149 mode_config->cursor_width = IS_I845G(i915) ? 64 : 512; in intel_mode_config_init()
150 mode_config->cursor_height = 1023; in intel_mode_config_init()
153 mode_config->cursor_width = 64; in intel_mode_config_init()
154 mode_config->cursor_height = 64; in intel_mode_config_init()
156 mode_config->cursor_width = 256; in intel_mode_config_init()
157 mode_config->cursor_height = 256; in intel_mode_config_init()
164 drm_mode_config_cleanup(&i915->drm); in intel_mode_config_cleanup()
171 for_each_intel_plane(&dev_priv->drm, plane) { in intel_plane_possible_crtcs_init()
173 plane->pipe); in intel_plane_possible_crtcs_init()
175 plane->base.possible_crtcs = drm_crtc_mask(&crtc->base); in intel_plane_possible_crtcs_init()
184 spin_lock_init(&i915->display.fb_tracking.lock); in intel_display_driver_early_probe()
185 mutex_init(&i915->display.backlight.lock); in intel_display_driver_early_probe()
186 mutex_init(&i915->display.audio.mutex); in intel_display_driver_early_probe()
187 mutex_init(&i915->display.wm.wm_mutex); in intel_display_driver_early_probe()
188 mutex_init(&i915->display.pps.mutex); in intel_display_driver_early_probe()
189 mutex_init(&i915->display.hdcp.hdcp_mutex); in intel_display_driver_early_probe()
207 return -ENODEV; in intel_display_driver_probe_noirq()
210 ret = drm_vblank_init(&i915->drm, in intel_display_driver_probe_noirq()
236 i915->display.wq.modeset = alloc_ordered_workqueue("i915_modeset", 0); in intel_display_driver_probe_noirq()
237 i915->display.wq.flip = alloc_workqueue("i915_flip", WQ_HIGHPRI | in intel_display_driver_probe_noirq()
282 struct drm_device *dev = &i915->drm; in intel_display_driver_probe_nogem()
298 drm_dbg_kms(&i915->drm, "%d display pipe%s available.\n", in intel_display_driver_probe_nogem()
320 if (i915->display.cdclk.max_cdclk_freq == 0) in intel_display_driver_probe_nogem()
330 intel_modeset_setup_hw_state(i915, dev->mode_config.acquire_ctx); in intel_display_driver_probe_nogem()
335 if (!to_intel_crtc_state(crtc->base.state)->uapi.active) in intel_display_driver_probe_nogem()
343 * since the watermark calculation done here will use pstate->fb. in intel_display_driver_probe_nogem()
365 ret = intel_initial_commit(&i915->drm); in intel_display_driver_probe()
367 drm_dbg_kms(&i915->drm, "Initial modeset failed, %d\n", ret); in intel_display_driver_probe()
371 ret = intel_fbdev_init(&i915->drm); in intel_display_driver_probe()
400 * Some ports require correctly set-up hpd registers for in intel_display_driver_register()
403 * up the initial fbdev config after hpd irqs are fully in intel_display_driver_register()
412 * fbdev->async_cookie. in intel_display_driver_register()
414 drm_kms_helper_poll_init(&i915->drm); in intel_display_driver_register()
426 flush_workqueue(i915->display.wq.flip); in intel_display_driver_remove()
427 flush_workqueue(i915->display.wq.modeset); in intel_display_driver_remove()
430 * MST topology needs to be suspended so we don't have any calls to in intel_display_driver_remove()
444 * Due to the hpd irq storm handling the hotplug work can re-arm the in intel_display_driver_remove_noirq()
445 * poll handlers. Hence disable polling after hpd handling is shut down. in intel_display_driver_remove_noirq()
455 flush_workqueue(i915->unordered_wq); in intel_display_driver_remove_noirq()
465 destroy_workqueue(i915->display.wq.flip); in intel_display_driver_remove_noirq()
466 destroy_workqueue(i915->display.wq.modeset); in intel_display_driver_remove_noirq()
496 drm_kms_helper_poll_fini(&i915->drm); in intel_display_driver_unregister()
497 drm_atomic_helper_shutdown(&i915->drm); in intel_display_driver_unregister()
515 state = drm_atomic_helper_suspend(&i915->drm); in intel_display_driver_suspend()
518 drm_err(&i915->drm, "Suspending crtc's failed with %i\n", in intel_display_driver_suspend()
521 i915->display.restore.modeset_state = state; in intel_display_driver_suspend()
551 crtc_state->mode_changed = true; in __intel_display_driver_resume()
556 to_intel_atomic_state(state)->skip_intermediate_wm = true; in __intel_display_driver_resume()
560 drm_WARN_ON(&i915->drm, ret == -EDEADLK); in __intel_display_driver_resume()
567 struct drm_atomic_state *state = i915->display.restore.modeset_state; in intel_display_driver_resume()
574 i915->display.restore.modeset_state = NULL; in intel_display_driver_resume()
576 state->acquire_ctx = &ctx; in intel_display_driver_resume()
581 ret = drm_modeset_lock_all_ctx(&i915->drm, &ctx); in intel_display_driver_resume()
582 if (ret != -EDEADLK) in intel_display_driver_resume()
596 drm_err(&i915->drm, in intel_display_driver_resume()