aboutsummaryrefslogtreecommitdiffstats
path: root/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/3101-drm-amd-display-disable-eDP-backlight-for-extend-mon.patch
diff options
context:
space:
mode:
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.patch64
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
+