diff --git a/patches.suse/drm-amd-display-fix-hw-rotated-modes-when-PSR-SU-is-.patch b/patches.suse/drm-amd-display-fix-hw-rotated-modes-when-PSR-SU-is-.patch new file mode 100644 index 0000000..07f76f8 --- /dev/null +++ b/patches.suse/drm-amd-display-fix-hw-rotated-modes-when-PSR-SU-is-.patch @@ -0,0 +1,86 @@ +From f528ee145bd0076cd0ed7e7b2d435893e6329e98 Mon Sep 17 00:00:00 2001 +From: Hamza Mahfooz +Date: Tue, 5 Dec 2023 14:55:04 -0500 +Subject: [PATCH] drm/amd/display: fix hw rotated modes when PSR-SU is enabled +Git-commit: f528ee145bd0076cd0ed7e7b2d435893e6329e98 +Alt-commit: 0497ae6f8830816d9277a8d5c8d9bf5966f292e1 +Patch-mainline: v6.7-rc6 +References: git-fixes + +We currently don't support dirty rectangles on hardware rotated modes. +So, if a user is using hardware rotated modes with PSR-SU enabled, +use PSR-SU FFU for all rotated planes (including cursor planes). + +Cc: stable@vger.kernel.org +Fixes: 30ebe41582d1 ("drm/amd/display: add FB_DAMAGE_CLIPS support") +Reported-by: Kai-Heng Feng +Closes: https://gitlab.freedesktop.org/drm/amd/-/issues/2952 +Tested-by: Kai-Heng Feng +Tested-by: Bin Li +Reviewed-by: Mario Limonciello +Signed-off-by: Hamza Mahfooz +Signed-off-by: Alex Deucher +Acked-by: Takashi Iwai + +--- + drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c | 3 +++ + drivers/gpu/drm/amd/display/dc/dc_hw_types.h | 1 + + drivers/gpu/drm/amd/display/dc/dcn10/dcn10_hw_sequencer.c | 3 ++- + drivers/gpu/drm/amd/display/dc/dcn20/dcn20_hubp.c | 12 ++++++++++-- + 4 files changed, 16 insertions(+), 3 deletions(-) + +--- a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c ++++ b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c +@@ -4968,6 +4968,9 @@ static void fill_dc_dirty_rects(struct d + if (plane->type == DRM_PLANE_TYPE_CURSOR) + return; + ++ if (new_plane_state->rotation != DRM_MODE_ROTATE_0) ++ goto ffu; ++ + num_clips = drm_plane_get_damage_clips_count(new_plane_state); + clips = drm_plane_get_damage_clips(new_plane_state); + +--- a/drivers/gpu/drm/amd/display/dc/dc_hw_types.h ++++ b/drivers/gpu/drm/amd/display/dc/dc_hw_types.h +@@ -465,6 +465,7 @@ struct dc_cursor_mi_param { + struct fixed31_32 v_scale_ratio; + enum dc_rotation_angle rotation; + bool mirror; ++ struct dc_stream_state *stream; + }; + + /* IPP related types */ +--- a/drivers/gpu/drm/amd/display/dc/dcn10/dcn10_hw_sequencer.c ++++ b/drivers/gpu/drm/amd/display/dc/dcn10/dcn10_hw_sequencer.c +@@ -3433,7 +3433,8 @@ void dcn10_set_cursor_position(struct pi + .h_scale_ratio = pipe_ctx->plane_res.scl_data.ratios.horz, + .v_scale_ratio = pipe_ctx->plane_res.scl_data.ratios.vert, + .rotation = pipe_ctx->plane_state->rotation, +- .mirror = pipe_ctx->plane_state->horizontal_mirror ++ .mirror = pipe_ctx->plane_state->horizontal_mirror, ++ .stream = pipe_ctx->stream, + }; + bool pipe_split_on = false; + bool odm_combine_on = (pipe_ctx->next_odm_pipe != NULL) || +--- a/drivers/gpu/drm/amd/display/dc/dcn20/dcn20_hubp.c ++++ b/drivers/gpu/drm/amd/display/dc/dcn20/dcn20_hubp.c +@@ -1075,8 +1075,16 @@ void hubp2_cursor_set_position( + if (src_y_offset < 0) + src_y_offset = 0; + /* Save necessary cursor info x, y position. w, h is saved in attribute func. */ +- hubp->cur_rect.x = src_x_offset + param->viewport.x; +- hubp->cur_rect.y = src_y_offset + param->viewport.y; ++ if (param->stream->link->psr_settings.psr_version >= DC_PSR_VERSION_SU_1 && ++ param->rotation != ROTATION_ANGLE_0) { ++ hubp->cur_rect.x = 0; ++ hubp->cur_rect.y = 0; ++ hubp->cur_rect.w = param->stream->timing.h_addressable; ++ hubp->cur_rect.h = param->stream->timing.v_addressable; ++ } else { ++ hubp->cur_rect.x = src_x_offset + param->viewport.x; ++ hubp->cur_rect.y = src_y_offset + param->viewport.y; ++ } + } + + void hubp2_clk_cntl(struct hubp *hubp, bool enable) diff --git a/series.conf b/series.conf index 456eefc..b674d8d 100644 --- a/series.conf +++ b/series.conf @@ -44915,6 +44915,7 @@ patches.suse/drm-mediatek-Add-spinlock-for-setting-vblank-event-i.patch patches.suse/drm-i915-Fix-remapped-stride-with-CCS-on-ADL.patch patches.suse/drm-i915-Fix-intel_atomic_setup_scalers-plane_state-.patch + patches.suse/drm-amd-display-fix-hw-rotated-modes-when-PSR-SU-is-.patch patches.suse/drm-amd-display-Disable-PSR-SU-on-Parade-0803-TCON-a.patch patches.suse/drm-amdgpu-sdma5.2-add-begin-end_use-ring-callbacks.patch patches.suse/drm-amdgpu-fix-tear-down-order-in-amdgpu_vm_pt_free.patch