From: Joshua Aberback <joshua.aberb...@amd.com>

[How]
 - use dc interface instead of hwss interface in cursor functions, to keep
dc->idle_optimizations_allowed updated
 - add dc interface to check if idle optimizations might apply to a plane

Signed-off-by: Joshua Aberback <joshua.aberb...@amd.com>
Acked-by: Aurabindo Pillai <aurabindo.pil...@amd.com>
---
 drivers/gpu/drm/amd/display/dc/core/dc.c        |  6 ++++++
 drivers/gpu/drm/amd/display/dc/core/dc_stream.c | 11 +++++------
 drivers/gpu/drm/amd/display/dc/dc.h             |  3 +++
 3 files changed, 14 insertions(+), 6 deletions(-)

diff --git a/drivers/gpu/drm/amd/display/dc/core/dc.c 
b/drivers/gpu/drm/amd/display/dc/core/dc.c
index 1190c58275c3..7ab82d6a5630 100644
--- a/drivers/gpu/drm/amd/display/dc/core/dc.c
+++ b/drivers/gpu/drm/amd/display/dc/core/dc.c
@@ -3039,4 +3039,10 @@ void dc_lock_memory_clock_frequency(struct dc *dc)
                if (dc->current_state->res_ctx.pipe_ctx[i].plane_state)
                        core_link_enable_stream(dc->current_state, 
&dc->current_state->res_ctx.pipe_ctx[i]);
 }
+
+bool dc_is_plane_eligible_for_idle_optimizaitons(struct dc *dc,
+                                                struct dc_plane_state *plane)
+{
+       return false;
+}
 #endif
diff --git a/drivers/gpu/drm/amd/display/dc/core/dc_stream.c 
b/drivers/gpu/drm/amd/display/dc/core/dc_stream.c
index f42a17d765e3..6fef9078f3d1 100644
--- a/drivers/gpu/drm/amd/display/dc/core/dc_stream.c
+++ b/drivers/gpu/drm/amd/display/dc/core/dc_stream.c
@@ -298,7 +298,7 @@ bool dc_stream_set_cursor_attributes(
 #if defined(CONFIG_DRM_AMD_DC_DCN3_0)
        /* disable idle optimizations while updating cursor */
        if (dc->idle_optimizations_allowed) {
-               dc->hwss.apply_idle_power_optimizations(dc, false);
+               dc_allow_idle_optimizations(dc, false);
                reset_idle_optimizations = true;
        }
 
@@ -326,7 +326,7 @@ bool dc_stream_set_cursor_attributes(
 #if defined(CONFIG_DRM_AMD_DC_DCN3_0)
        /* re-enable idle optimizations if necessary */
        if (reset_idle_optimizations)
-               dc->hwss.apply_idle_power_optimizations(dc, true);
+               dc_allow_idle_optimizations(dc, true);
 
 #endif
        return true;
@@ -359,9 +359,8 @@ bool dc_stream_set_cursor_position(
 #if defined(CONFIG_DRM_AMD_DC_DCN3_0)
 
        /* disable idle optimizations if enabling cursor */
-       if (dc->idle_optimizations_allowed &&
-                       !stream->cursor_position.enable && position->enable) {
-               dc->hwss.apply_idle_power_optimizations(dc, false);
+       if (dc->idle_optimizations_allowed && !stream->cursor_position.enable 
&& position->enable) {
+               dc_allow_idle_optimizations(dc, false);
                reset_idle_optimizations = true;
        }
 
@@ -392,7 +391,7 @@ bool dc_stream_set_cursor_position(
 #if defined(CONFIG_DRM_AMD_DC_DCN3_0)
        /* re-enable idle optimizations if necessary */
        if (reset_idle_optimizations)
-               dc->hwss.apply_idle_power_optimizations(dc, true);
+               dc_allow_idle_optimizations(dc, true);
 
 #endif
        return true;
diff --git a/drivers/gpu/drm/amd/display/dc/dc.h 
b/drivers/gpu/drm/amd/display/dc/dc.h
index 8631d290afee..9d7d5dd9e820 100644
--- a/drivers/gpu/drm/amd/display/dc/dc.h
+++ b/drivers/gpu/drm/amd/display/dc/dc.h
@@ -1250,6 +1250,9 @@ enum dc_status dc_set_clock(struct dc *dc, enum 
dc_clock_type clock_type, uint32
 void dc_get_clock(struct dc *dc, enum dc_clock_type clock_type, struct 
dc_clock_config *clock_cfg);
 #if defined(CONFIG_DRM_AMD_DC_DCN3_0)
 
+bool dc_is_plane_eligible_for_idle_optimizations(struct dc *dc,
+                                                struct dc_plane_state *plane);
+
 void dc_allow_idle_optimizations(struct dc *dc, bool allow);
 
 /*
-- 
2.25.1

_______________________________________________
amd-gfx mailing list
amd-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/amd-gfx

Reply via email to