diff options
Diffstat (limited to 'meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/3101-drm-amd-display-disable-eDP-backlight-for-extend-mon.patch')
-rw-r--r-- | meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/3101-drm-amd-display-disable-eDP-backlight-for-extend-mon.patch | 64 |
1 files changed, 64 insertions, 0 deletions
diff --git a/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/3101-drm-amd-display-disable-eDP-backlight-for-extend-mon.patch b/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/3101-drm-amd-display-disable-eDP-backlight-for-extend-mon.patch new file mode 100644 index 00000000..ba7eb2e1 --- /dev/null +++ b/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/3101-drm-amd-display-disable-eDP-backlight-for-extend-mon.patch @@ -0,0 +1,64 @@ +From 4628395c0e38641015d90c146f59180bc4c7e886 Mon Sep 17 00:00:00 2001 +From: Yongqiang Sun <yongqiang.sun@amd.com> +Date: Mon, 18 Dec 2017 16:59:44 -0500 +Subject: [PATCH 3101/4131] drm/amd/display: disable eDP backlight for extend + monitor only reboot use case. + +Signed-off-by: Yongqiang Sun <yongqiang.sun@amd.com> +Reviewed-by: Tony Cheng <Tony.Cheng@amd.com> +Acked-by: Harry Wentland <harry.wentland@amd.com> +--- + drivers/gpu/drm/amd/display/dc/core/dc.c | 28 +++++++++++++++++++++++++++- + 1 file changed, 27 insertions(+), 1 deletion(-) + +diff --git a/drivers/gpu/drm/amd/display/dc/core/dc.c b/drivers/gpu/drm/amd/display/dc/core/dc.c +index a744dee..9427eaf 100644 +--- a/drivers/gpu/drm/amd/display/dc/core/dc.c ++++ b/drivers/gpu/drm/amd/display/dc/core/dc.c +@@ -649,7 +649,31 @@ bool dc_enable_stereo( + return ret; + } + ++static void disable_eDP_not_in_use(struct dc *dc, struct dc_state *context) ++{ ++ int i; ++ struct dc_link *link = NULL; + ++ /* check if eDP panel is suppose to be set mode, if yes, no need to disable */ ++ for (i = 0; i < context->stream_count; i++) { ++ if (context->streams[i]->signal == SIGNAL_TYPE_EDP) ++ return; ++ } ++ ++ /* check if there is an eDP panel not in use */ ++ for (i = 0; i < dc->link_count; i++) { ++ if (dc->links[i]->local_sink && ++ dc->links[i]->local_sink->sink_signal == SIGNAL_TYPE_EDP) { ++ link = dc->links[i]; ++ break; ++ } ++ } ++ ++ if (link) { ++ dc->hwss.edp_backlight_control(link, false); ++ dc->hwss.edp_power_control(link, false); ++ } ++} + /* + * Applies given context to HW and copy it into current context. + * It's up to the user to release the src context afterwards. +@@ -667,8 +691,10 @@ static enum dc_status dc_commit_state_no_check(struct dc *dc, struct dc_state *c + for (i = 0; i < context->stream_count; i++) + dc_streams[i] = context->streams[i]; + +- if (!dcb->funcs->is_accelerated_mode(dcb)) ++ if (!dcb->funcs->is_accelerated_mode(dcb)) { + dc->hwss.enable_accelerated_mode(dc); ++ disable_eDP_not_in_use(dc, context); ++ } + + /* re-program planes for existing stream, in case we need to + * free up plane resource for later use +-- +2.7.4 + |