drivers/gpu/drm/amd/display/dc/inc/link_service.h
Source file repositories/reference/linux-study-clean/drivers/gpu/drm/amd/display/dc/inc/link_service.h
File Facts
- System
- Linux kernel
- Corpus path
drivers/gpu/drm/amd/display/dc/inc/link_service.h- Extension
.h- Size
- 15833 bytes
- Lines
- 367
- 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
core_types.h
Detected Declarations
struct link_init_datastruct ddc_service_init_datastruct link_service
Annotated Snippet
struct link_init_data {
const struct dc *dc;
struct dc_context *ctx; /* TODO: remove 'dal' when DC is complete. */
uint32_t connector_index; /* this will be mapped to the HPD pins */
uint32_t link_index; /* this is mapped to DAL display_index
TODO: remove it when DC is complete. */
bool is_dpia_link;
};
struct ddc_service_init_data {
struct graphics_object_id id;
struct dc_context *ctx;
struct dc_link *link;
bool is_dpia_link;
};
struct link_service {
/************************** Factory ***********************************/
struct dc_link *(*create_link)(
const struct link_init_data *init_params);
void (*destroy_link)(struct dc_link **link);
/************************** Detection *********************************/
bool (*detect_link)(struct dc_link *link, enum dc_detect_reason reason);
bool (*detect_connection_type)(struct dc_link *link,
enum dc_connection_type *type);
struct dc_sink *(*add_remote_sink)(
struct dc_link *link,
const uint8_t *edid,
unsigned int len,
struct dc_sink_init_data *init_data);
void (*remove_remote_sink)(struct dc_link *link, struct dc_sink *sink);
bool (*get_hpd_state)(struct dc_link *link);
void (*enable_hpd)(const struct dc_link *link);
void (*disable_hpd)(const struct dc_link *link);
void (*enable_hpd_filter)(struct dc_link *link, bool enable);
bool (*reset_cur_dp_mst_topology)(struct dc_link *link);
const struct dc_link_status *(*get_status)(const struct dc_link *link);
bool (*is_hdcp1x_supported)(struct dc_link *link,
enum signal_type signal);
bool (*is_hdcp2x_supported)(struct dc_link *link,
enum signal_type signal);
void (*clear_dprx_states)(struct dc_link *link);
/*************************** Resource *********************************/
void (*get_cur_res_map)(const struct dc *dc, uint32_t *map);
void (*restore_res_map)(const struct dc *dc, uint32_t *map);
void (*get_cur_link_res)(const struct dc_link *link,
struct link_resource *link_res);
/*************************** Validation *******************************/
enum dc_status (*validate_mode_timing)(
const struct dc_stream_state *stream,
struct dc_link *link,
const struct dc_crtc_timing *timing);
uint32_t (*dp_link_bandwidth_kbps)(
const struct dc_link *link,
const struct dc_link_settings *link_settings);
enum dc_status (*validate_dp_tunnel_bandwidth)(
const struct dc *dc,
const struct dc_state *new_ctx);
uint32_t (*frl_link_bandwidth_kbps)(enum hdmi_frl_link_rate link_rate);
bool (*frl_margin_check_uncompressed_video)(
struct frl_cap_chk_params_fixed31_32 *params,
struct frl_cap_chk_intermediates_fixed31_32 *inter);
uint32_t (*dp_required_hblank_size_bytes)(
const struct dc_link *link,
struct dp_audio_bandwidth_params *audio_params);
/*************************** DPMS *************************************/
void (*set_dpms_on)(struct dc_state *state, struct pipe_ctx *pipe_ctx);
void (*set_dpms_off)(struct pipe_ctx *pipe_ctx);
void (*resume)(struct dc_link *link);
void (*blank_all_dp_displays)(struct dc *dc);
void (*blank_all_edp_displays)(struct dc *dc);
void (*blank_dp_stream)(struct dc_link *link, bool hw_init);
enum dc_status (*increase_mst_payload)(
struct pipe_ctx *pipe_ctx, uint32_t req_pbn);
enum dc_status (*reduce_mst_payload)(
struct pipe_ctx *pipe_ctx, uint32_t req_pbn);
void (*set_dsc_on_stream)(struct pipe_ctx *pipe_ctx, bool enable);
bool (*set_dsc_enable)(struct pipe_ctx *pipe_ctx, bool enable);
bool (*update_dsc_config)(struct pipe_ctx *pipe_ctx);
void (*wait_for_unlocked)(struct dc_link *link);
Annotation
- Immediate include surface: `core_types.h`.
- Detected declarations: `struct link_init_data`, `struct ddc_service_init_data`, `struct link_service`.
- 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.