From: Nevenko Stupar <nevenko.stu...@amd.com>

[WHY & HOW]
Fix the cursor size between ODM slices.

Reviewed-by: Sridevi Arvindekar <sridevi.arvinde...@amd.com>
Cc: Mario Limonciello <mario.limoncie...@amd.com>
Cc: Alex Deucher <alexander.deuc...@amd.com>
Cc: sta...@vger.kernel.org
Acked-by: Alex Hung <alex.h...@amd.com>
Signed-off-by: Nevenko Stupar <nevenko.stu...@amd.com>
---
 .../drm/amd/display/dc/hwss/dcn401/dcn401_hwseq.c  | 14 ++++++++++++++
 1 file changed, 14 insertions(+)

diff --git a/drivers/gpu/drm/amd/display/dc/hwss/dcn401/dcn401_hwseq.c 
b/drivers/gpu/drm/amd/display/dc/hwss/dcn401/dcn401_hwseq.c
index 0cf55f557c3c..42753f56d31d 100644
--- a/drivers/gpu/drm/amd/display/dc/hwss/dcn401/dcn401_hwseq.c
+++ b/drivers/gpu/drm/amd/display/dc/hwss/dcn401/dcn401_hwseq.c
@@ -1169,6 +1169,20 @@ void dcn401_set_cursor_position(struct pipe_ctx 
*pipe_ctx)
                x_pos -= (prev_odm_width + prev_odm_offset);
        }
 
+       /* If the position is negative then we need to add to the hotspot
+        * to fix cursor size between ODM slices
+        */
+
+       if (x_pos < 0) {
+               pos_cpy.x_hotspot -= x_pos;
+               x_pos = 0;
+       }
+
+       if (y_pos < 0) {
+               pos_cpy.y_hotspot -= y_pos;
+               y_pos = 0;
+       }
+
        pos_cpy.x = (uint32_t)x_pos;
        pos_cpy.y = (uint32_t)y_pos;
 
-- 
2.34.1

Reply via email to