drivers/gpu/drm/i915/display/intel_parent.c
Source file repositories/reference/linux-study-clean/drivers/gpu/drm/i915/display/intel_parent.c
File Facts
- System
- Linux kernel
- Corpus path
drivers/gpu/drm/i915/display/intel_parent.c- Extension
.c- Size
- 13224 bytes
- Lines
- 456
- 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
drm/drm_print.hdrm/intel/display_parent_interface.hdrm/intel/vlv_iosf_sb_regs.hintel_display_core.hintel_parent.h
Detected Declarations
function intel_parent_dpt_destroyfunction intel_parent_dpt_suspendfunction intel_parent_dpt_resumefunction intel_parent_fb_pin_ggtt_pinfunction intel_parent_fb_pin_ggtt_unpinfunction intel_parent_fb_pin_dpt_pinfunction intel_parent_fb_pin_dpt_unpinfunction intel_parent_fb_pin_get_mapfunction intel_parent_frontbuffer_reffunction intel_parent_frontbuffer_putfunction intel_parent_frontbuffer_flush_for_displayfunction intel_parent_hdcp_gsc_msg_sendfunction intel_parent_hdcp_gsc_check_statusfunction intel_parent_hdcp_gsc_context_freefunction intel_parent_irq_enabledfunction intel_parent_irq_synchronizefunction intel_parent_overlay_is_activefunction intel_parent_overlay_onfunction intel_parent_overlay_continuefunction intel_parent_overlay_offfunction intel_parent_overlay_recover_from_interruptfunction intel_parent_overlay_release_old_vidfunction intel_parent_overlay_resetfunction intel_parent_overlay_unpin_fbfunction intel_parent_overlay_cleanupfunction intel_parent_panic_setupfunction intel_parent_panic_finishfunction intel_parent_pc8_blockfunction intel_parent_pc8_unblockfunction intel_parent_pcode_readfunction intel_parent_pcode_write_timeoutfunction intel_parent_pcode_writefunction intel_parent_pcode_requestfunction intel_parent_rps_availablefunction intel_parent_rps_boost_if_not_startedfunction intel_parent_rps_mark_interactivefunction intel_parent_rps_ilk_irq_handlerfunction intel_parent_stolen_insert_node_in_rangefunction intel_parent_stolen_insert_nodefunction intel_parent_stolen_remove_nodefunction intel_parent_stolen_initializedfunction intel_parent_stolen_node_allocatedfunction intel_parent_stolen_node_offsetfunction intel_parent_stolen_area_addressfunction intel_parent_stolen_area_sizefunction intel_parent_stolen_node_addressfunction intel_parent_stolen_node_sizefunction intel_parent_stolen_node_free
Annotated Snippet
// SPDX-License-Identifier: MIT
/* Copyright © 2025 Intel Corporation */
/*
* Convenience wrapper functions to call the parent interface functions:
*
* - display->parent->SUBSTRUCT->FUNCTION()
* - display->parent->FUNCTION()
*
* All functions here should be named accordingly:
*
* - intel_parent_SUBSTRUCT_FUNCTION()
* - intel_parent_FUNCTION()
*
* These functions may use display driver specific types for parameters and
* return values, translating them to and from the generic types used in the
* function pointer interface.
*/
#include <drm/drm_print.h>
#include <drm/intel/display_parent_interface.h>
#include <drm/intel/vlv_iosf_sb_regs.h>
#include "intel_display_core.h"
#include "intel_parent.h"
/* dpt */
struct intel_dpt *intel_parent_dpt_create(struct intel_display *display,
struct drm_gem_object *obj, size_t size)
{
if (display->parent->dpt)
return display->parent->dpt->create(obj, size);
return NULL;
}
void intel_parent_dpt_destroy(struct intel_display *display, struct intel_dpt *dpt)
{
if (display->parent->dpt)
display->parent->dpt->destroy(dpt);
}
void intel_parent_dpt_suspend(struct intel_display *display, struct intel_dpt *dpt)
{
if (display->parent->dpt)
display->parent->dpt->suspend(dpt);
}
void intel_parent_dpt_resume(struct intel_display *display, struct intel_dpt *dpt)
{
if (display->parent->dpt)
display->parent->dpt->resume(dpt);
}
/* fb_pin */
int intel_parent_fb_pin_ggtt_pin(struct intel_display *display,
struct drm_gem_object *obj,
const struct intel_fb_pin_params *pin_params,
struct i915_vma **out_ggtt_vma,
u32 *out_offset,
int *out_fence_id)
{
return display->parent->fb_pin->ggtt_pin(obj, pin_params,
out_ggtt_vma, out_offset, out_fence_id);
}
void intel_parent_fb_pin_ggtt_unpin(struct intel_display *display,
struct i915_vma *ggtt_vma,
int fence_id)
{
return display->parent->fb_pin->ggtt_unpin(ggtt_vma, fence_id);
}
int intel_parent_fb_pin_dpt_pin(struct intel_display *display,
struct drm_gem_object *obj,
struct intel_dpt *dpt,
const struct intel_fb_pin_params *pin_params,
struct i915_vma **out_dpt_vma,
struct i915_vma **out_ggtt_vma,
u32 *out_offset)
{
return display->parent->fb_pin->dpt_pin(obj, dpt, pin_params,
out_dpt_vma, out_ggtt_vma, out_offset);
}
void intel_parent_fb_pin_dpt_unpin(struct intel_display *display,
struct intel_dpt *dpt,
struct i915_vma *dpt_vma,
struct i915_vma *ggtt_vma)
{
Annotation
- Immediate include surface: `drm/drm_print.h`, `drm/intel/display_parent_interface.h`, `drm/intel/vlv_iosf_sb_regs.h`, `intel_display_core.h`, `intel_parent.h`.
- Detected declarations: `function intel_parent_dpt_destroy`, `function intel_parent_dpt_suspend`, `function intel_parent_dpt_resume`, `function intel_parent_fb_pin_ggtt_pin`, `function intel_parent_fb_pin_ggtt_unpin`, `function intel_parent_fb_pin_dpt_pin`, `function intel_parent_fb_pin_dpt_unpin`, `function intel_parent_fb_pin_get_map`, `function intel_parent_frontbuffer_ref`, `function intel_parent_frontbuffer_put`.
- 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.