aboutsummaryrefslogtreecommitdiffstats
path: root/common/recipes-kernel/linux/linux-yocto-4.14.71/4201-drm-amd-display-fix-brightness-level-after-resume-fr.patch
diff options
context:
space:
mode:
Diffstat (limited to 'common/recipes-kernel/linux/linux-yocto-4.14.71/4201-drm-amd-display-fix-brightness-level-after-resume-fr.patch')
-rw-r--r--common/recipes-kernel/linux/linux-yocto-4.14.71/4201-drm-amd-display-fix-brightness-level-after-resume-fr.patch74
1 files changed, 74 insertions, 0 deletions
diff --git a/common/recipes-kernel/linux/linux-yocto-4.14.71/4201-drm-amd-display-fix-brightness-level-after-resume-fr.patch b/common/recipes-kernel/linux/linux-yocto-4.14.71/4201-drm-amd-display-fix-brightness-level-after-resume-fr.patch
new file mode 100644
index 00000000..3936b07e
--- /dev/null
+++ b/common/recipes-kernel/linux/linux-yocto-4.14.71/4201-drm-amd-display-fix-brightness-level-after-resume-fr.patch
@@ -0,0 +1,74 @@
+From e00879fc1239810ea04c474b80d0b7702e4ddf80 Mon Sep 17 00:00:00 2001
+From: Roman Li <Roman.Li@amd.com>
+Date: Thu, 29 Mar 2018 10:56:17 -0400
+Subject: [PATCH 4201/5725] drm/amd/display: fix brightness level after resume
+ from suspend
+
+Adding missing call to cache current backlight values.
+Otherwise the brightness resets to default value on resume.
+
+Signed-off-by: Roman Li <Roman.Li@amd.com>
+Reviewed-by: Charlene Liu <Charlene.Liu@amd.com>
+Acked-by: Harry Wentland <harry.wentland@amd.com>
+---
+ drivers/gpu/drm/amd/display/dc/core/dc_link.c | 13 +++++++++++++
+ drivers/gpu/drm/amd/display/dc/dc_link.h | 2 ++
+ drivers/gpu/drm/amd/display/dc/dce110/dce110_hw_sequencer.c | 4 +++-
+ 3 files changed, 18 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 0cd286f..b44cf52 100644
+--- a/drivers/gpu/drm/amd/display/dc/core/dc_link.c
++++ b/drivers/gpu/drm/amd/display/dc/core/dc_link.c
+@@ -2018,6 +2018,19 @@ bool dc_link_set_backlight_level(const struct dc_link *link, uint32_t level,
+ return true;
+ }
+
++bool dc_link_set_abm_disable(const struct dc_link *link)
++{
++ struct dc *core_dc = link->ctx->dc;
++ struct abm *abm = core_dc->res_pool->abm;
++
++ if ((abm == NULL) || (abm->funcs->set_backlight_level == NULL))
++ return false;
++
++ abm->funcs->set_abm_immediate_disable(abm);
++
++ return true;
++}
++
+ bool dc_link_set_psr_enable(const struct dc_link *link, bool enable, bool wait)
+ {
+ struct dc *core_dc = link->ctx->dc;
+diff --git a/drivers/gpu/drm/amd/display/dc/dc_link.h b/drivers/gpu/drm/amd/display/dc/dc_link.h
+index eeff987..8a716baa 100644
+--- a/drivers/gpu/drm/amd/display/dc/dc_link.h
++++ b/drivers/gpu/drm/amd/display/dc/dc_link.h
+@@ -141,6 +141,8 @@ static inline struct dc_link *dc_get_link_at_index(struct dc *dc, uint32_t link_
+ bool dc_link_set_backlight_level(const struct dc_link *dc_link, uint32_t level,
+ uint32_t frame_ramp, const struct dc_stream_state *stream);
+
++bool dc_link_set_abm_disable(const struct dc_link *dc_link);
++
+ bool dc_link_set_psr_enable(const struct dc_link *dc_link, bool enable, bool wait);
+
+ bool dc_link_get_psr_state(const struct dc_link *dc_link, uint32_t *psr_state);
+diff --git a/drivers/gpu/drm/amd/display/dc/dce110/dce110_hw_sequencer.c b/drivers/gpu/drm/amd/display/dc/dce110/dce110_hw_sequencer.c
+index 1e3ed0e..5bed5a3 100644
+--- a/drivers/gpu/drm/amd/display/dc/dce110/dce110_hw_sequencer.c
++++ b/drivers/gpu/drm/amd/display/dc/dce110/dce110_hw_sequencer.c
+@@ -1046,8 +1046,10 @@ void dce110_blank_stream(struct pipe_ctx *pipe_ctx)
+ struct dc_stream_state *stream = pipe_ctx->stream;
+ struct dc_link *link = stream->sink->link;
+
+- if (link->local_sink && link->local_sink->sink_signal == SIGNAL_TYPE_EDP)
++ if (link->local_sink && link->local_sink->sink_signal == SIGNAL_TYPE_EDP) {
+ link->dc->hwss.edp_backlight_control(link, false);
++ dc_link_set_abm_disable(link);
++ }
+
+ if (dc_is_dp_signal(pipe_ctx->stream->signal))
+ pipe_ctx->stream_res.stream_enc->funcs->dp_blank(pipe_ctx->stream_res.stream_enc);
+--
+2.7.4
+