drm/amd/display: move edp sink present detection to hw init

[Why]
At SW init, we may not be ready to do detect eDP sink.

Signed-off-by: Eric Yang <Eric.Yang2@amd.com>
Reviewed-by: Jun Lei <Jun.Lei@amd.com>
Acked-by: Anson Jacob <Anson.Jacob@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
This commit is contained in:
Eric Yang 2021-01-22 16:28:14 -05:00 committed by Alex Deucher
parent b14e4f2004
commit 6fce5bcee5
2 changed files with 24 additions and 18 deletions

View file

@ -205,27 +205,9 @@ static bool create_links(
link = link_create(&link_init_params);
if (link) {
bool should_destory_link = false;
if (link->connector_signal == SIGNAL_TYPE_EDP) {
if (dc->config.edp_not_connected) {
if (!IS_DIAG_DC(dc->ctx->dce_environment))
should_destory_link = true;
} else {
enum dc_connection_type type;
dc_link_detect_sink(link, &type);
if (type == dc_connection_none)
should_destory_link = true;
}
}
if (dc->config.force_enum_edp || !should_destory_link) {
dc->links[dc->link_count] = link;
link->dc = dc;
++dc->link_count;
} else {
link_destroy(&link);
}
}
}
@ -1016,8 +998,30 @@ struct dc *dc_create(const struct dc_init_data *init_params)
return NULL;
}
static void detect_edp_presence(struct dc *dc)
{
struct dc_link *edp_link = get_edp_link(dc);
bool edp_sink_present = true;
if (!edp_link)
return;
if (dc->config.edp_not_connected) {
edp_sink_present = false;
} else {
enum dc_connection_type type;
dc_link_detect_sink(edp_link, &type);
if (type == dc_connection_none)
edp_sink_present = false;
}
edp_link->edp_sink_present = edp_sink_present;
}
void dc_hardware_init(struct dc *dc)
{
detect_edp_presence(dc);
if (dc->ctx->dce_environment != DCE_ENV_VIRTUAL_HW)
dc->hwss.init_hw(dc);
}

View file

@ -103,6 +103,8 @@ struct dc_link {
bool lttpr_non_transparent_mode;
bool is_internal_display;
bool edp_sink_present;
/* caps is the same as reported_link_cap. link_traing use
* reported_link_cap. Will clean up. TODO
*/