diff options
| author | Dmytro Laktyushkin <Dmytro.Laktyushkin@amd.com> | 2018-07-26 12:17:58 -0400 |
|---|---|---|
| committer | Alex Deucher <alexander.deucher@amd.com> | 2018-08-06 16:57:12 -0400 |
| commit | 99326ee3624b90d176a8f7e2aa3d15dfaa59c8f1 (patch) | |
| tree | 196c5a5e9f74507695ae88e441e9546d56ae61b7 /drivers | |
| parent | fb7b11e1633e50b9a6b3fffe5cd151474aee9802 (diff) | |
drm/amd/display: program display clock on cache match
[Why]
We seem to have an issue where high enough display clock
will not get set properly during S3 resume if we only
call vbios once
[How]
Expand condition of display clock programming to happen
even when cached display clock matches requested display
clock
Signed-off-by: Dmytro Laktyushkin <Dmytro.Laktyushkin@amd.com>
Reviewed-by: Tony Cheng <Tony.Cheng@amd.com>
Acked-by: Bhawanpreet Lakha <Bhawanpreet.Lakha@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
Diffstat (limited to 'drivers')
| -rw-r--r-- | drivers/gpu/drm/amd/display/dc/dce/dce_clocks.c | 4 | ||||
| -rw-r--r-- | drivers/gpu/drm/amd/display/dc/dcn10/dcn10_hw_sequencer.c | 2 |
2 files changed, 5 insertions, 1 deletions
diff --git a/drivers/gpu/drm/amd/display/dc/dce/dce_clocks.c b/drivers/gpu/drm/amd/display/dc/dce/dce_clocks.c index f17677971d0f..684da3db7568 100644 --- a/drivers/gpu/drm/amd/display/dc/dce/dce_clocks.c +++ b/drivers/gpu/drm/amd/display/dc/dce/dce_clocks.c | |||
| @@ -625,7 +625,9 @@ static void dcn1_update_clocks(struct dccg *dccg, | |||
| 625 | } | 625 | } |
| 626 | 626 | ||
| 627 | /* dcn1 dppclk is tied to dispclk */ | 627 | /* dcn1 dppclk is tied to dispclk */ |
| 628 | if (should_set_clock(safe_to_lower, new_clocks->dispclk_khz, dccg->clks.dispclk_khz)) { | 628 | /* program dispclk on = as a w/a for sleep resume clock ramping issues */ |
| 629 | if (should_set_clock(safe_to_lower, new_clocks->dispclk_khz, dccg->clks.dispclk_khz) | ||
| 630 | || new_clocks->dispclk_khz == dccg->clks.dispclk_khz) { | ||
| 629 | dcn1_ramp_up_dispclk_with_dpp(dccg, new_clocks); | 631 | dcn1_ramp_up_dispclk_with_dpp(dccg, new_clocks); |
| 630 | dccg->clks.dispclk_khz = new_clocks->dispclk_khz; | 632 | dccg->clks.dispclk_khz = new_clocks->dispclk_khz; |
| 631 | 633 | ||
diff --git a/drivers/gpu/drm/amd/display/dc/dcn10/dcn10_hw_sequencer.c b/drivers/gpu/drm/amd/display/dc/dcn10/dcn10_hw_sequencer.c index f5d8242eb047..cfcc54f2ce65 100644 --- a/drivers/gpu/drm/amd/display/dc/dcn10/dcn10_hw_sequencer.c +++ b/drivers/gpu/drm/amd/display/dc/dcn10/dcn10_hw_sequencer.c | |||
| @@ -1089,6 +1089,8 @@ static void dcn10_init_hw(struct dc *dc) | |||
| 1089 | } | 1089 | } |
| 1090 | 1090 | ||
| 1091 | enable_power_gating_plane(dc->hwseq, true); | 1091 | enable_power_gating_plane(dc->hwseq, true); |
| 1092 | |||
| 1093 | memset(&dc->res_pool->dccg->clks, 0, sizeof(dc->res_pool->dccg->clks)); | ||
| 1092 | } | 1094 | } |
| 1093 | 1095 | ||
| 1094 | static void reset_hw_ctx_wrap( | 1096 | static void reset_hw_ctx_wrap( |
