提交 6fce5bce 编写于 作者: E Eric Yang 提交者: Alex Deucher

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: NEric Yang <Eric.Yang2@amd.com>
Reviewed-by: NJun Lei <Jun.Lei@amd.com>
Acked-by: NAnson Jacob <Anson.Jacob@amd.com>
Signed-off-by: NAlex Deucher <alexander.deucher@amd.com>
上级 b14e4f20
......@@ -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);
}
......
......@@ -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
*/
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册