drivers/gpu/drm/amd/display/dc/core/dc_link_exports.c
Source file repositories/reference/linux-study-clean/drivers/gpu/drm/amd/display/dc/core/dc_link_exports.c
File Facts
- System
- Linux kernel
- Corpus path
drivers/gpu/drm/amd/display/dc/core/dc_link_exports.c- Extension
.c- Size
- 16872 bytes
- Lines
- 597
- 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
link_service.hdce/dce_i2c.h
Detected Declarations
function filesfunction dc_get_edp_linksfunction dc_get_edp_link_panel_instfunction dc_link_detectfunction dc_link_detect_connection_typefunction dc_link_is_hdcp14function dc_link_is_hdcp22function dc_link_clear_dprx_statesfunction dc_link_reset_cur_dp_mst_topologyfunction dc_link_bandwidth_kbpsfunction dc_link_frl_bandwidth_kbpsfunction dc_link_frl_margin_check_uncompressed_videofunction dc_link_required_hblank_size_bytesfunction dc_get_cur_link_res_mapfunction dc_restore_link_res_mapfunction dc_link_wait_for_unlockedfunction dc_link_update_dsc_configfunction dc_get_oem_i2c_devicefunction dc_is_oem_i2c_device_presentfunction dc_submit_i2cfunction dc_submit_i2c_oemfunction dc_link_dp_handle_automated_testfunction dc_link_dp_set_test_patternfunction dc_link_set_drive_settingsfunction dc_link_set_preferred_link_settingsfunction dc_link_set_preferred_training_settingsfunction dc_dp_trace_is_initializedfunction dc_dp_trace_set_is_logged_flagfunction dc_dp_trace_is_loggedfunction dc_dp_trace_get_lt_end_timestampfunction dc_dp_trace_get_link_loss_countfunction dc_link_remove_remote_sinkfunction dc_link_aux_transfer_rawfunction dc_link_bw_kbps_from_raw_frl_link_rate_datafunction dc_link_decide_edp_link_settingsfunction dc_link_dp_get_max_link_enc_capfunction dc_link_dp_mst_decide_link_encoding_formatfunction dc_link_get_highest_encoding_formatfunction dc_link_is_dp_sink_presentfunction dc_link_is_fec_supportedfunction dc_link_overwrite_extended_receiver_capfunction dc_link_should_enable_fecfunction dc_link_dp_dpia_handle_usb4_bandwidth_allocation_for_linkfunction dc_link_check_link_loss_statusfunction dc_link_dp_allow_hpd_rx_irqfunction dc_link_dp_handle_link_lossfunction dc_link_dp_read_hpd_rx_irq_datafunction dc_link_handle_hpd_rx_irq
Annotated Snippet
if (dc->links[i]->connector_signal == SIGNAL_TYPE_EDP) {
edp_links[*edp_num] = dc->links[i];
if (++(*edp_num) == MAX_NUM_EDP)
return;
}
}
}
bool dc_get_edp_link_panel_inst(const struct dc *dc,
const struct dc_link *link,
unsigned int *inst_out)
{
struct dc_link *edp_links[MAX_NUM_EDP];
unsigned int edp_num, i;
*inst_out = 0;
if (link->connector_signal != SIGNAL_TYPE_EDP)
return false;
dc_get_edp_links(dc, edp_links, &edp_num);
for (i = 0; i < edp_num; i++) {
if (link == edp_links[i])
break;
(*inst_out)++;
}
return true;
}
bool dc_link_detect(struct dc_link *link, enum dc_detect_reason reason)
{
return link->dc->link_srv->detect_link(link, reason);
}
bool dc_link_detect_connection_type(struct dc_link *link,
enum dc_connection_type *type)
{
return link->dc->link_srv->detect_connection_type(link, type);
}
const struct dc_link_status *dc_link_get_status(const struct dc_link *link)
{
return link->dc->link_srv->get_status(link);
}
/* return true if the connected receiver supports the hdcp version */
bool dc_link_is_hdcp14(struct dc_link *link, enum signal_type signal)
{
return link->dc->link_srv->is_hdcp1x_supported(link, signal);
}
bool dc_link_is_hdcp22(struct dc_link *link, enum signal_type signal)
{
return link->dc->link_srv->is_hdcp2x_supported(link, signal);
}
void dc_link_clear_dprx_states(struct dc_link *link)
{
link->dc->link_srv->clear_dprx_states(link);
}
bool dc_link_reset_cur_dp_mst_topology(struct dc_link *link)
{
return link->dc->link_srv->reset_cur_dp_mst_topology(link);
}
uint32_t dc_link_bandwidth_kbps(
const struct dc_link *link,
const struct dc_link_settings *link_settings)
{
return link->dc->link_srv->dp_link_bandwidth_kbps(link, link_settings);
}
uint32_t dc_link_frl_bandwidth_kbps(const struct dc_link *link, enum hdmi_frl_link_rate link_rate)
{
return link->dc->link_srv->frl_link_bandwidth_kbps(link_rate);
}
bool dc_link_frl_margin_check_uncompressed_video(
const struct dc_link *link,
struct frl_cap_chk_params_fixed31_32 *params,
struct frl_cap_chk_intermediates_fixed31_32 *inter)
{
return link->dc->link_srv->frl_margin_check_uncompressed_video(params, inter);
}
uint32_t dc_link_required_hblank_size_bytes(
const struct dc_link *link,
struct dp_audio_bandwidth_params *audio_params)
{
return link->dc->link_srv->dp_required_hblank_size_bytes(link,
audio_params);
Annotation
- Immediate include surface: `link_service.h`, `dce/dce_i2c.h`.
- Detected declarations: `function files`, `function dc_get_edp_links`, `function dc_get_edp_link_panel_inst`, `function dc_link_detect`, `function dc_link_detect_connection_type`, `function dc_link_is_hdcp14`, `function dc_link_is_hdcp22`, `function dc_link_clear_dprx_states`, `function dc_link_reset_cur_dp_mst_topology`, `function dc_link_bandwidth_kbps`.
- 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.