From: Max Tseng <[email protected]>

Add control flag to dc_stream_state to skip eDP BL off/link off.

Acked-by: Stylon Wang <[email protected]>
Signed-off-by: Max Tseng <[email protected]>
Reviewed-by: Anthony Koo <[email protected]>
---
 drivers/gpu/drm/amd/display/dc/dc_stream.h                 | 1 +
 .../gpu/drm/amd/display/dc/dce110/dce110_hw_sequencer.c    | 3 ++-
 drivers/gpu/drm/amd/display/dc/link/link_dpms.c            | 7 ++++---
 3 files changed, 7 insertions(+), 4 deletions(-)

diff --git a/drivers/gpu/drm/amd/display/dc/dc_stream.h 
b/drivers/gpu/drm/amd/display/dc/dc_stream.h
index d5b3e3a32cc6..3697ea1d14c1 100644
--- a/drivers/gpu/drm/amd/display/dc/dc_stream.h
+++ b/drivers/gpu/drm/amd/display/dc/dc_stream.h
@@ -302,6 +302,7 @@ struct dc_stream_state {
        bool vblank_synchronized;
        bool fpo_in_use;
        struct mall_stream_config mall_stream_config;
+       bool skip_edp_power_down;
 };
 
 #define ABM_LEVEL_IMMEDIATE_DISABLE 255
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 d4cacb8df631..6c9ca43d1040 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
@@ -1216,7 +1216,8 @@ void dce110_blank_stream(struct pipe_ctx *pipe_ctx)
        struct dce_hwseq *hws = link->dc->hwseq;
 
        if (link->local_sink && link->local_sink->sink_signal == 
SIGNAL_TYPE_EDP) {
-               hws->funcs.edp_backlight_control(link, false);
+               if (!stream->skip_edp_power_down)
+                       hws->funcs.edp_backlight_control(link, false);
                link->dc->hwss.set_abm_immediate_disable(pipe_ctx);
        }
 
diff --git a/drivers/gpu/drm/amd/display/dc/link/link_dpms.c 
b/drivers/gpu/drm/amd/display/dc/link/link_dpms.c
index 2963267fe74a..d719a666f974 100644
--- a/drivers/gpu/drm/amd/display/dc/link/link_dpms.c
+++ b/drivers/gpu/drm/amd/display/dc/link/link_dpms.c
@@ -2207,9 +2207,8 @@ static enum dc_status enable_link(
         * link settings. Need to call disable first before enabling at
         * new link settings.
         */
-       if (link->link_status.link_active) {
+       if (link->link_status.link_active && !stream->skip_edp_power_down)
                disable_link(link, &pipe_ctx->link_res, 
pipe_ctx->stream->signal);
-       }
 
        switch (pipe_ctx->stream->signal) {
        case SIGNAL_TYPE_DISPLAY_PORT:
@@ -2327,7 +2326,9 @@ void link_set_dpms_off(struct pipe_ctx *pipe_ctx)
                dc->hwss.disable_stream(pipe_ctx);
        } else {
                dc->hwss.disable_stream(pipe_ctx);
-               disable_link(pipe_ctx->stream->link, &pipe_ctx->link_res, 
pipe_ctx->stream->signal);
+               if (!pipe_ctx->stream->skip_edp_power_down) {
+                       disable_link(pipe_ctx->stream->link, 
&pipe_ctx->link_res, pipe_ctx->stream->signal);
+               }
        }
 
        if (pipe_ctx->stream->timing.flags.DSC) {
-- 
2.40.1

Reply via email to