drivers/gpu/drm/i915/display/intel_de.h
Source file repositories/reference/linux-study-clean/drivers/gpu/drm/i915/display/intel_de.h
File Facts
- System
- Linux kernel
- Corpus path
drivers/gpu/drm/i915/display/intel_de.h- Extension
.h- Size
- 4952 bytes
- Lines
- 184
- 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.
- Defines or uses C structs; map object ownership, embedded links, reference counts, and lock ownership.
Dependency Surface
intel_display_core.hintel_dmc_wl.hintel_dsb.hintel_uncore.hintel_uncore_trace.h
Detected Declarations
function intel_de_readfunction intel_de_read64_2x32_volatilefunction intel_de_read64_2x32function intel_de_posting_readfunction intel_de_writefunction intel_de_rmwfunction clientsfunction intel_de_write_fwfunction intel_de_rmw_fwfunction intel_de_read_notracefunction intel_de_write_notracefunction intel_de_write_dsb
Annotated Snippet
#ifndef __INTEL_DE_H__
#define __INTEL_DE_H__
#include "intel_display_core.h"
#include "intel_dmc_wl.h"
#include "intel_dsb.h"
#include "intel_uncore.h"
#include "intel_uncore_trace.h"
static inline struct intel_uncore *__to_uncore(struct intel_display *display)
{
return to_intel_uncore(display->drm);
}
u8 intel_de_read8(struct intel_display *display, intel_reg_t reg);
void intel_de_write8(struct intel_display *display, intel_reg_t reg, u8 val);
u16 intel_de_read16(struct intel_display *display, intel_reg_t reg);
static inline u32
intel_de_read(struct intel_display *display, intel_reg_t reg)
{
u32 val;
intel_dmc_wl_get(display, reg);
val = intel_uncore_read(__to_uncore(display), reg);
intel_dmc_wl_put(display, reg);
return val;
}
static inline u64
intel_de_read64_2x32_volatile(struct intel_display *display,
intel_reg_t lower_reg, intel_reg_t upper_reg)
{
u64 val;
intel_dmc_wl_get(display, lower_reg);
intel_dmc_wl_get(display, upper_reg);
val = intel_uncore_read64_2x32(__to_uncore(display), lower_reg,
upper_reg);
intel_dmc_wl_put(display, upper_reg);
intel_dmc_wl_put(display, lower_reg);
return val;
}
static inline u64
intel_de_read64_2x32(struct intel_display *display, intel_reg_t reg)
{
intel_reg_t upper_reg = _MMIO(intel_reg_offset(reg) + 4);
u32 lower, upper;
lower = intel_de_read(display, reg);
upper = intel_de_read(display, upper_reg);
return (u64)upper << 32 | lower;
}
static inline void
intel_de_posting_read(struct intel_display *display, intel_reg_t reg)
{
intel_dmc_wl_get(display, reg);
intel_uncore_posting_read(__to_uncore(display), reg);
intel_dmc_wl_put(display, reg);
}
static inline void
intel_de_write(struct intel_display *display, intel_reg_t reg, u32 val)
{
intel_dmc_wl_get(display, reg);
intel_uncore_write(__to_uncore(display), reg, val);
intel_dmc_wl_put(display, reg);
}
static inline u32
intel_de_rmw(struct intel_display *display, intel_reg_t reg, u32 clear, u32 set)
{
u32 val;
intel_dmc_wl_get(display, reg);
val = intel_uncore_rmw(__to_uncore(display), reg, clear, set);
Annotation
- Immediate include surface: `intel_display_core.h`, `intel_dmc_wl.h`, `intel_dsb.h`, `intel_uncore.h`, `intel_uncore_trace.h`.
- Detected declarations: `function intel_de_read`, `function intel_de_read64_2x32_volatile`, `function intel_de_read64_2x32`, `function intel_de_posting_read`, `function intel_de_write`, `function intel_de_rmw`, `function clients`, `function intel_de_write_fw`, `function intel_de_rmw_fw`, `function intel_de_read_notrace`.
- Atlas domain: Driver Families / drivers/gpu.
- Implementation status: source implementation candidate.
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.