drm/amd/display: Extend dc_plane_get_status with flags
authorTomasz Siemek <Tomasz.Siemek@amd.com>
Fri, 11 Apr 2025 13:05:42 +0000 (15:05 +0200)
committerAlex Deucher <alexander.deucher@amd.com>
Fri, 16 May 2025 17:38:25 +0000 (13:38 -0400)
[WHY]
dc_plane_get_status may be used for reading other plane properties
in the future.

[HOW]
Provide API for choosing plane properties to read.

Reviewed-by: Charlene Liu <charlene.liu@amd.com>
Reviewed-by: Aric Cyr <aric.cyr@amd.com>
Reviewed-by: Swapnil Patel <swapnil.patel@amd.com>
Signed-off-by: Tomasz Siemek <Tomasz.Siemek@amd.com>
Signed-off-by: Tom Chung <chiahsuan.chung@amd.com>
Tested-by: Daniel Wheeler <daniel.wheeler@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
drivers/gpu/drm/amd/display/dc/core/dc_surface.c
drivers/gpu/drm/amd/display/dc/dc_plane.h

index e98500665af3a4739bf40653df227af92516a94d..922f23557f5d9e0c67d6afbd22adec257694d1df 100644 (file)
@@ -109,7 +109,8 @@ struct dc_plane_state *dc_create_plane_state(const struct dc *dc)
  *****************************************************************************
  */
 const struct dc_plane_status *dc_plane_get_status(
-               const struct dc_plane_state *plane_state)
+               const struct dc_plane_state *plane_state,
+               union dc_plane_status_update_flags flags)
 {
        const struct dc_plane_status *plane_status;
        struct dc  *dc;
@@ -136,7 +137,7 @@ const struct dc_plane_status *dc_plane_get_status(
                if (pipe_ctx->plane_state != plane_state)
                        continue;
 
-               if (pipe_ctx->plane_state)
+               if (pipe_ctx->plane_state && flags.bits.address)
                        pipe_ctx->plane_state->status.is_flip_pending = false;
 
                break;
@@ -151,7 +152,8 @@ const struct dc_plane_status *dc_plane_get_status(
                if (pipe_ctx->plane_state != plane_state)
                        continue;
 
-               dc->hwss.update_pending_status(pipe_ctx);
+               if (flags.bits.address)
+                       dc->hwss.update_pending_status(pipe_ctx);
        }
 
        return plane_status;
index 8fe385f52b18184946200c263a86fb94f74258d5..14feb843e694077d7c652889f51db2c2b0b01f74 100644 (file)
 
 #include "dc_hw_types.h"
 
+union dc_plane_status_update_flags {
+       struct {
+               uint32_t address : 1;
+       } bits;
+       uint32_t raw;
+};
+
 struct dc_plane_state *dc_create_plane_state(const struct dc *dc);
 const struct dc_plane_status *dc_plane_get_status(
-               const struct dc_plane_state *plane_state);
+               const struct dc_plane_state *plane_state,
+               union dc_plane_status_update_flags flags);
 void dc_plane_state_retain(struct dc_plane_state *plane_state);
 void dc_plane_state_release(struct dc_plane_state *plane_state);