From: Nicholas Kazlauskas <[email protected]>

[WHY]
It's possible we still allow IPS2 when all streams are DPMS off but this
is unexpected.

[HOW]
Pass the DM config value into DC so it can use the pure stream count
to decide. We will be in 0 streams for S0i3 so this will still allow
it for D3.

Reviewed-by: Ovidiu Bunea <[email protected]>
Signed-off-by: Nicholas Kazlauskas <[email protected]>
Signed-off-by: Alex Hung <[email protected]>
---
 drivers/gpu/drm/amd/display/dc/dc.h          | 1 +
 drivers/gpu/drm/amd/display/dc/dc_dmub_srv.c | 2 +-
 2 files changed, 2 insertions(+), 1 deletion(-)

diff --git a/drivers/gpu/drm/amd/display/dc/dc.h 
b/drivers/gpu/drm/amd/display/dc/dc.h
index 104051935884..b5613b71742f 100644
--- a/drivers/gpu/drm/amd/display/dc/dc.h
+++ b/drivers/gpu/drm/amd/display/dc/dc.h
@@ -462,6 +462,7 @@ struct dc_config {
        bool enable_auto_dpm_test_logs;
        unsigned int disable_ips;
        unsigned int disable_ips_in_vpb;
+       bool disable_ips_in_dpms_off;
        bool usb4_bw_alloc_support;
        bool allow_0_dtb_clk;
        bool use_assr_psp_message;
diff --git a/drivers/gpu/drm/amd/display/dc/dc_dmub_srv.c 
b/drivers/gpu/drm/amd/display/dc/dc_dmub_srv.c
index f90fc154549a..775c58637f46 100644
--- a/drivers/gpu/drm/amd/display/dc/dc_dmub_srv.c
+++ b/drivers/gpu/drm/amd/display/dc/dc_dmub_srv.c
@@ -1245,7 +1245,7 @@ static int count_active_streams(const struct dc *dc)
        for (i = 0; i < dc->current_state->stream_count; ++i) {
                struct dc_stream_state *stream = dc->current_state->streams[i];
 
-               if (stream && !stream->dpms_off)
+               if (stream && (!stream->dpms_off || 
dc->config.disable_ips_in_dpms_off))
                        count += 1;
        }
 
-- 
2.43.0

Reply via email to