Commit 7b201d53 authored by Jude Shih's avatar Jude Shih Committed by Alex Deucher

drm/amd/display: Move link_enc init logic to DC

[Why]

We shouldn't be accessing res_pool funcs from DM level,
therefore, we should create API and let the flow
be done in DC level.

[How]

We create new interface dp_get_link_enc to access and get the correct link_enc
Reviewed-by: default avatarNicholas Kazlauskas <Nicholas.Kazlauskas@amd.com>
Acked-by: default avatarPavle Kotarac <Pavle.Kotarac@amd.com>
Signed-off-by: default avatarJude Shih <shenshih@amd.com>
Signed-off-by: default avatarAlex Deucher <alexander.deucher@amd.com>
parent 4bef85d4
...@@ -8330,15 +8330,8 @@ void amdgpu_dm_connector_init_helper(struct amdgpu_display_manager *dm, ...@@ -8330,15 +8330,8 @@ void amdgpu_dm_connector_init_helper(struct amdgpu_display_manager *dm,
break; break;
case DRM_MODE_CONNECTOR_DisplayPort: case DRM_MODE_CONNECTOR_DisplayPort:
aconnector->base.polled = DRM_CONNECTOR_POLL_HPD; aconnector->base.polled = DRM_CONNECTOR_POLL_HPD;
if (link->is_dig_mapping_flexible && link->link_enc = dp_get_link_enc(link);
link->dc->res_pool->funcs->link_encs_assign) { ASSERT(link->link_enc);
link->link_enc =
link_enc_cfg_get_link_enc_used_by_link(link->ctx->dc, link);
if (!link->link_enc)
link->link_enc =
link_enc_cfg_get_next_avail_link_enc(link->ctx->dc);
}
if (link->link_enc) if (link->link_enc)
aconnector->base.ycbcr_420_allowed = aconnector->base.ycbcr_420_allowed =
link->link_enc->features.dp_ycbcr420_supported ? true : false; link->link_enc->features.dp_ycbcr420_supported ? true : false;
......
...@@ -6174,6 +6174,23 @@ void dp_set_fec_enable(struct dc_link *link, bool enable) ...@@ -6174,6 +6174,23 @@ void dp_set_fec_enable(struct dc_link *link, bool enable)
} }
} }
struct link_encoder *dp_get_link_enc(struct dc_link *link)
{
struct link_encoder *link_enc;
link_enc = link->link_enc;
if (link->is_dig_mapping_flexible &&
link->dc->res_pool->funcs->link_encs_assign) {
link_enc = link_enc_cfg_get_link_enc_used_by_link(link->ctx->dc,
link);
if (!link->link_enc)
link_enc = link_enc_cfg_get_next_avail_link_enc(
link->ctx->dc);
}
return link_enc;
}
void dpcd_set_source_specific_data(struct dc_link *link) void dpcd_set_source_specific_data(struct dc_link *link)
{ {
if (!link->dc->vendor_signature.is_valid) { if (!link->dc->vendor_signature.is_valid) {
......
...@@ -170,6 +170,7 @@ uint8_t dc_dp_initialize_scrambling_data_symbols( ...@@ -170,6 +170,7 @@ uint8_t dc_dp_initialize_scrambling_data_symbols(
enum dc_status dp_set_fec_ready(struct dc_link *link, bool ready); enum dc_status dp_set_fec_ready(struct dc_link *link, bool ready);
void dp_set_fec_enable(struct dc_link *link, bool enable); void dp_set_fec_enable(struct dc_link *link, bool enable);
struct link_encoder *dp_get_link_enc(struct dc_link *link);
bool dp_set_dsc_enable(struct pipe_ctx *pipe_ctx, bool enable); bool dp_set_dsc_enable(struct pipe_ctx *pipe_ctx, bool enable);
bool dp_set_dsc_pps_sdp(struct pipe_ctx *pipe_ctx, bool enable, bool immediate_update); bool dp_set_dsc_pps_sdp(struct pipe_ctx *pipe_ctx, bool enable, bool immediate_update);
void dp_set_dsc_on_stream(struct pipe_ctx *pipe_ctx, bool enable); void dp_set_dsc_on_stream(struct pipe_ctx *pipe_ctx, bool enable);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment