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.

Dependency Surface

Detected Declarations

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

Implementation Notes