drivers/gpu/drm/i915/display/intel_display_driver.c
Source file repositories/reference/linux-study-clean/drivers/gpu/drm/i915/display/intel_display_driver.c
File Facts
- System
- Linux kernel
- Corpus path
drivers/gpu/drm/i915/display/intel_display_driver.c- Extension
.c- Size
- 20501 bytes
- Lines
- 783
- Domain
- Driver Families
- Bucket
- drivers/gpu
- Inferred role
- Driver Families: implementation source
- Status
- source implementation candidate
Why This File Exists
Repeatable hardware-adapter layer. Deep compatibility for every driver is out of scope; this atlas records patterns, probe lifecycles, bus glue, IRQ/DMA usage, and links back to core abstractions.
- Repeatable hardware-adapter layer. Deep compatibility for every driver is out of scope; this atlas records patterns, probe lifecycles, bus glue, IRQ/DMA usage, and links back to core abstractions.
- Uses kernel synchronization; read lock ordering, sleepability, and interrupt context assumptions before translating.
- Defines or uses C structs; map object ownership, embedded links, reference counts, and lock ownership.
Dependency Surface
linux/vga_switcheroo.hacpi/video.hdrm/display/drm_dp_mst_helper.hdrm/drm_atomic_helper.hdrm/drm_client_event.hdrm/drm_mode_config.hdrm/drm_privacy_screen_consumer.hdrm/drm_print.hdrm/drm_probe_helper.hdrm/drm_vblank.hi9xx_wm.hintel_acpi.hintel_atomic.hintel_audio.hintel_bios.hintel_bw.hintel_cdclk.hintel_color.hintel_crtc.hintel_cursor.hintel_dbuf_bw.hintel_display_core.hintel_display_debugfs.hintel_display_driver.hintel_display_irq.hintel_display_power.hintel_display_types.hintel_display_utils.hintel_display_wa.hintel_dkl_phy.hintel_dmc.hintel_dp.h
Detected Declarations
function intel_display_driver_probe_deferfunction intel_display_driver_init_hwfunction intel_mode_config_initfunction intel_mode_config_cleanupfunction intel_plane_possible_crtcs_initfunction for_each_intel_planefunction intel_display_driver_early_probefunction intel_display_driver_probe_noirqfunction set_display_accessfunction intel_modeset_lock_ctx_retryfunction intel_display_driver_enable_user_accessfunction programmingfunction intel_display_driver_resume_accessfunction otherfunction intel_display_driver_check_accessfunction intel_display_driver_probe_nogemfunction intel_display_driver_probefunction intel_display_driver_registerfunction intel_display_driver_removefunction intel_display_driver_remove_noirqfunction intel_display_driver_remove_nogemfunction intel_display_driver_unregisterfunction intel_display_driver_suspendfunction __intel_display_driver_resumefunction intel_display_driver_resume
Annotated Snippet
// SPDX-License-Identifier: MIT
/*
* Copyright © 2022-2023 Intel Corporation
*
* High level display driver entry points. This is a layer between top level
* driver code and low level display functionality; no low level display code or
* details here.
*/
#include <linux/vga_switcheroo.h>
#include <acpi/video.h>
#include <drm/display/drm_dp_mst_helper.h>
#include <drm/drm_atomic_helper.h>
#include <drm/drm_client_event.h>
#include <drm/drm_mode_config.h>
#include <drm/drm_privacy_screen_consumer.h>
#include <drm/drm_print.h>
#include <drm/drm_probe_helper.h>
#include <drm/drm_vblank.h>
#include "i9xx_wm.h"
#include "intel_acpi.h"
#include "intel_atomic.h"
#include "intel_audio.h"
#include "intel_bios.h"
#include "intel_bw.h"
#include "intel_cdclk.h"
#include "intel_color.h"
#include "intel_crtc.h"
#include "intel_cursor.h"
#include "intel_dbuf_bw.h"
#include "intel_display_core.h"
#include "intel_display_debugfs.h"
#include "intel_display_driver.h"
#include "intel_display_irq.h"
#include "intel_display_power.h"
#include "intel_display_types.h"
#include "intel_display_utils.h"
#include "intel_display_wa.h"
#include "intel_dkl_phy.h"
#include "intel_dmc.h"
#include "intel_dp.h"
#include "intel_dp_tunnel.h"
#include "intel_dpll.h"
#include "intel_dpll_mgr.h"
#include "intel_fb.h"
#include "intel_fbc.h"
#include "intel_fbdev.h"
#include "intel_fdi.h"
#include "intel_flipq.h"
#include "intel_gmbus.h"
#include "intel_hdcp.h"
#include "intel_hotplug.h"
#include "intel_hti.h"
#include "intel_initial_plane.h"
#include "intel_modeset_lock.h"
#include "intel_modeset_setup.h"
#include "intel_opregion.h"
#include "intel_overlay.h"
#include "intel_pmdemand.h"
#include "intel_pps.h"
#include "intel_psr.h"
#include "intel_quirks.h"
#include "intel_vga.h"
#include "intel_wm.h"
#include "skl_watermark.h"
bool intel_display_driver_probe_defer(struct pci_dev *pdev)
{
struct drm_privacy_screen *privacy_screen;
/*
* apple-gmux is needed on dual GPU MacBook Pro
* to probe the panel if we're the inactive GPU.
*/
if (vga_switcheroo_client_probe_defer(pdev))
return true;
/* If the LCD panel has a privacy-screen, wait for it */
privacy_screen = drm_privacy_screen_get(&pdev->dev, NULL);
if (IS_ERR(privacy_screen) && PTR_ERR(privacy_screen) == -EPROBE_DEFER)
return true;
drm_privacy_screen_put(privacy_screen);
return false;
}
void intel_display_driver_init_hw(struct intel_display *display)
{
Annotation
- Immediate include surface: `linux/vga_switcheroo.h`, `acpi/video.h`, `drm/display/drm_dp_mst_helper.h`, `drm/drm_atomic_helper.h`, `drm/drm_client_event.h`, `drm/drm_mode_config.h`, `drm/drm_privacy_screen_consumer.h`, `drm/drm_print.h`.
- Detected declarations: `function intel_display_driver_probe_defer`, `function intel_display_driver_init_hw`, `function intel_mode_config_init`, `function intel_mode_config_cleanup`, `function intel_plane_possible_crtcs_init`, `function for_each_intel_plane`, `function intel_display_driver_early_probe`, `function intel_display_driver_probe_noirq`, `function set_display_access`, `function intel_modeset_lock_ctx_retry`.
- Atlas domain: Driver Families / drivers/gpu.
- Implementation status: source implementation candidate.
- Synchronization appears in or near this file; preserve lock ordering, sleepability, and interrupt-context constraints.
Implementation Notes
- This generated page is the file-by-file coverage layer; curated subsystem chapters should link here when they synthesize a multi-file control flow.
- Core OS pages should be promoted from atlas-only to deep-reviewed when they explain data structures, invariants, locking, lifecycle, and C implementation snippets.
- Driver-family pages are intentionally pattern-oriented unless they are part of the selected PCIe/NVMe representative device path.