diff options
author | Roman Li <Roman.Li@amd.com> | 2018-03-29 10:56:17 -0400 |
---|---|---|
committer | Alex Deucher <alexander.deucher@amd.com> | 2018-04-11 14:17:25 -0400 |
commit | c3d7bad88e3b35b981eecc1645ddbb3f13a8b54f (patch) | |
tree | 053d8807545dd0e5ea0bb4f97e875e8cd7ae56fa /drivers | |
parent | af2ac326087da632e9580f65205f4cc4205caf85 (diff) |
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>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
Diffstat (limited to 'drivers')
-rw-r--r-- | drivers/gpu/drm/amd/display/dc/core/dc_link.c | 13 | ||||
-rw-r--r-- | drivers/gpu/drm/amd/display/dc/dc_link.h | 2 | ||||
-rw-r--r-- | drivers/gpu/drm/amd/display/dc/dce110/dce110_hw_sequencer.c | 4 |
3 files changed, 18 insertions, 1 deletions
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 eeb04471b2f5..6d1c4981a185 100644 --- a/drivers/gpu/drm/amd/display/dc/core/dc_link.c +++ b/drivers/gpu/drm/amd/display/dc/core/dc_link.c | |||
@@ -1997,6 +1997,19 @@ bool dc_link_set_backlight_level(const struct dc_link *link, uint32_t level, | |||
1997 | return true; | 1997 | return true; |
1998 | } | 1998 | } |
1999 | 1999 | ||
2000 | bool dc_link_set_abm_disable(const struct dc_link *link) | ||
2001 | { | ||
2002 | struct dc *core_dc = link->ctx->dc; | ||
2003 | struct abm *abm = core_dc->res_pool->abm; | ||
2004 | |||
2005 | if ((abm == NULL) || (abm->funcs->set_backlight_level == NULL)) | ||
2006 | return false; | ||
2007 | |||
2008 | abm->funcs->set_abm_immediate_disable(abm); | ||
2009 | |||
2010 | return true; | ||
2011 | } | ||
2012 | |||
2000 | bool dc_link_set_psr_enable(const struct dc_link *link, bool enable, bool wait) | 2013 | bool dc_link_set_psr_enable(const struct dc_link *link, bool enable, bool wait) |
2001 | { | 2014 | { |
2002 | struct dc *core_dc = link->ctx->dc; | 2015 | 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 fb4d9eafdc6e..dc34515ef01f 100644 --- a/drivers/gpu/drm/amd/display/dc/dc_link.h +++ b/drivers/gpu/drm/amd/display/dc/dc_link.h | |||
@@ -132,6 +132,8 @@ static inline struct dc_link *dc_get_link_at_index(struct dc *dc, uint32_t link_ | |||
132 | bool dc_link_set_backlight_level(const struct dc_link *dc_link, uint32_t level, | 132 | bool dc_link_set_backlight_level(const struct dc_link *dc_link, uint32_t level, |
133 | uint32_t frame_ramp, const struct dc_stream_state *stream); | 133 | uint32_t frame_ramp, const struct dc_stream_state *stream); |
134 | 134 | ||
135 | bool dc_link_set_abm_disable(const struct dc_link *dc_link); | ||
136 | |||
135 | bool dc_link_set_psr_enable(const struct dc_link *dc_link, bool enable, bool wait); | 137 | bool dc_link_set_psr_enable(const struct dc_link *dc_link, bool enable, bool wait); |
136 | 138 | ||
137 | bool dc_link_get_psr_state(const struct dc_link *dc_link, uint32_t *psr_state); | 139 | 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 30dd62f0f5fa..1c644c7a24b7 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 | |||
@@ -1016,8 +1016,10 @@ void dce110_blank_stream(struct pipe_ctx *pipe_ctx) | |||
1016 | struct dc_stream_state *stream = pipe_ctx->stream; | 1016 | struct dc_stream_state *stream = pipe_ctx->stream; |
1017 | struct dc_link *link = stream->sink->link; | 1017 | struct dc_link *link = stream->sink->link; |
1018 | 1018 | ||
1019 | if (link->local_sink && link->local_sink->sink_signal == SIGNAL_TYPE_EDP) | 1019 | if (link->local_sink && link->local_sink->sink_signal == SIGNAL_TYPE_EDP) { |
1020 | link->dc->hwss.edp_backlight_control(link, false); | 1020 | link->dc->hwss.edp_backlight_control(link, false); |
1021 | dc_link_set_abm_disable(link); | ||
1022 | } | ||
1021 | 1023 | ||
1022 | if (dc_is_dp_signal(pipe_ctx->stream->signal)) | 1024 | if (dc_is_dp_signal(pipe_ctx->stream->signal)) |
1023 | pipe_ctx->stream_res.stream_enc->funcs->dp_blank(pipe_ctx->stream_res.stream_enc); | 1025 | pipe_ctx->stream_res.stream_enc->funcs->dp_blank(pipe_ctx->stream_res.stream_enc); |