diff options
Diffstat (limited to 'meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/3048-drm-amd-display-fix-DMCU-hang-when-going-into-Modern.patch')
-rw-r--r-- | meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/3048-drm-amd-display-fix-DMCU-hang-when-going-into-Modern.patch | 55 |
1 files changed, 55 insertions, 0 deletions
diff --git a/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/3048-drm-amd-display-fix-DMCU-hang-when-going-into-Modern.patch b/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/3048-drm-amd-display-fix-DMCU-hang-when-going-into-Modern.patch new file mode 100644 index 00000000..f7104f1b --- /dev/null +++ b/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/3048-drm-amd-display-fix-DMCU-hang-when-going-into-Modern.patch @@ -0,0 +1,55 @@ +From ec8ce00544e202a41f305ccf6a23414992870195 Mon Sep 17 00:00:00 2001 +From: Zi Yu Liao <ziyu.liao@amd.com> +Date: Thu, 20 Jun 2019 10:55:26 -0400 +Subject: [PATCH 3048/4256] 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> +--- + drivers/gpu/drm/amd/display/dc/core/dc_link.c | 9 ++++++++- + 1 file changed, 8 insertions(+), 1 deletion(-) + +diff --git a/drivers/gpu/drm/amd/display/dc/core/dc_link.c b/drivers/gpu/drm/amd/display/dc/core/dc_link.c +index fdce64c288c5..b7c2ac3033f2 100644 +--- a/drivers/gpu/drm/amd/display/dc/core/dc_link.c ++++ b/drivers/gpu/drm/amd/display/dc/core/dc_link.c +@@ -2350,7 +2350,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 + */ +@@ -2358,6 +2358,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( +-- +2.17.1 + |