mirror of
https://github.com/AuxXxilium/linux_dsm_epyc7002.git
synced 2024-12-26 22:35:14 +07:00
drm/amd/display: fix DMCU hang when going into Modern Standby
[why] When the system is going into suspend, set_backlight gets called after the eDP got blanked. Since smooth brightness is enabled, the driver will make a call into the DMCU to ramp the brightness. The DMCU would try to enable ABM to do so. But since the display is blanked, this ends up causing ABM1_ACE_DBUF_REG_UPDATE_PENDING to get stuck at 1, which results in a dead lock in the DMCU firmware. [how] Disable brightness ramping when the eDP display is blanked. Signed-off-by: Zi Yu Liao <ziyu.liao@amd.com> Reviewed-by: Eric Yang <eric.yang2@amd.com> Acked-by: Anthony Koo <Anthony.Koo@amd.com> Acked-by: Leo Li <sunpeng.li@amd.com> Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
This commit is contained in:
parent
1d0610bc26
commit
5a42dc2be0
@ -2352,7 +2352,7 @@ bool dc_link_set_backlight_level(const struct dc_link *link,
|
||||
if (core_dc->current_state->res_ctx.pipe_ctx[i].stream) {
|
||||
if (core_dc->current_state->res_ctx.
|
||||
pipe_ctx[i].stream->link
|
||||
== link)
|
||||
== link) {
|
||||
/* DMCU -1 for all controller id values,
|
||||
* therefore +1 here
|
||||
*/
|
||||
@ -2360,6 +2360,13 @@ bool dc_link_set_backlight_level(const struct dc_link *link,
|
||||
core_dc->current_state->
|
||||
res_ctx.pipe_ctx[i].stream_res.tg->inst +
|
||||
1;
|
||||
|
||||
/* Disable brightness ramping when the display is blanked
|
||||
* as it can hang the DMCU
|
||||
*/
|
||||
if (core_dc->current_state->res_ctx.pipe_ctx[i].plane_state == NULL)
|
||||
frame_ramp = 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
abm->funcs->set_backlight_level_pwm(
|
||||
|
Loading…
Reference in New Issue
Block a user