drm/amd/display: Fix incorrect DPCD configs while Replay/PSR switch
[ Upstream commit 0d9cabc8f591ea1cd97c071b853b75b155c13259 ] [Why] When switching between PSR/Replay, the DPCD config of previous mode is not cleared, resulting in unexpected behavior in TCON. [How] Initialize the DPCD in setup function Reviewed-by: Robin Chen <robin.chen@amd.com> Signed-off-by: Leon Huang <Leon.Huang1@amd.com> Signed-off-by: Tom Chung <chiahsuan.chung@amd.com> Tested-by: Daniel Wheeler <daniel.wheeler@amd.com> Signed-off-by: Alex Deucher <alexander.deucher@amd.com> Signed-off-by: Sasha Levin <sashal@kernel.org>
This commit is contained in:
committed by
Greg Kroah-Hartman
parent
1da3dc7372
commit
2e37d331c0
@@ -662,6 +662,18 @@ bool edp_setup_psr(struct dc_link *link,
|
||||
if (!link)
|
||||
return false;
|
||||
|
||||
//Clear PSR cfg
|
||||
memset(&psr_configuration, 0, sizeof(psr_configuration));
|
||||
dm_helpers_dp_write_dpcd(
|
||||
link->ctx,
|
||||
link,
|
||||
DP_PSR_EN_CFG,
|
||||
&psr_configuration.raw,
|
||||
sizeof(psr_configuration.raw));
|
||||
|
||||
if (link->psr_settings.psr_version == DC_PSR_VERSION_UNSUPPORTED)
|
||||
return false;
|
||||
|
||||
dc = link->ctx->dc;
|
||||
dmcu = dc->res_pool->dmcu;
|
||||
psr = dc->res_pool->psr;
|
||||
@@ -672,9 +684,6 @@ bool edp_setup_psr(struct dc_link *link,
|
||||
if (!dc_get_edp_link_panel_inst(dc, link, &panel_inst))
|
||||
return false;
|
||||
|
||||
|
||||
memset(&psr_configuration, 0, sizeof(psr_configuration));
|
||||
|
||||
psr_configuration.bits.ENABLE = 1;
|
||||
psr_configuration.bits.CRC_VERIFICATION = 1;
|
||||
psr_configuration.bits.FRAME_CAPTURE_INDICATION =
|
||||
@@ -938,6 +947,16 @@ bool edp_setup_replay(struct dc_link *link, const struct dc_stream_state *stream
|
||||
if (!link)
|
||||
return false;
|
||||
|
||||
//Clear Replay config
|
||||
dm_helpers_dp_write_dpcd(link->ctx, link,
|
||||
DP_SINK_PR_ENABLE_AND_CONFIGURATION,
|
||||
(uint8_t *)&(replay_config.raw), sizeof(uint8_t));
|
||||
|
||||
if (!(link->replay_settings.config.replay_supported))
|
||||
return false;
|
||||
|
||||
link->replay_settings.config.replay_error_status.raw = 0;
|
||||
|
||||
dc = link->ctx->dc;
|
||||
|
||||
replay = dc->res_pool->replay;
|
||||
|
Reference in New Issue
Block a user