mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-08-27 19:29:37 +00:00
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:
parent
b14e4f2004
commit
6fce5bcee5
2 changed files with 24 additions and 18 deletions
|
@ -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
|
||||
*/
|
||||
|
|
Loading…
Reference in a new issue