aboutsummaryrefslogtreecommitdiffstats
path: root/common/recipes-kernel/linux/linux-yocto-4.19.8/1005-drm-amd-display-add-plane-size-change-check-conditio.patch
diff options
context:
space:
mode:
Diffstat (limited to 'common/recipes-kernel/linux/linux-yocto-4.19.8/1005-drm-amd-display-add-plane-size-change-check-conditio.patch')
-rw-r--r--common/recipes-kernel/linux/linux-yocto-4.19.8/1005-drm-amd-display-add-plane-size-change-check-conditio.patch69
1 files changed, 69 insertions, 0 deletions
diff --git a/common/recipes-kernel/linux/linux-yocto-4.19.8/1005-drm-amd-display-add-plane-size-change-check-conditio.patch b/common/recipes-kernel/linux/linux-yocto-4.19.8/1005-drm-amd-display-add-plane-size-change-check-conditio.patch
new file mode 100644
index 00000000..864e330c
--- /dev/null
+++ b/common/recipes-kernel/linux/linux-yocto-4.19.8/1005-drm-amd-display-add-plane-size-change-check-conditio.patch
@@ -0,0 +1,69 @@
+From 025fa01700e3230968bfb1e3df5d2f26f8d74b38 Mon Sep 17 00:00:00 2001
+From: Lewis Huang <Lewis.Huang@amd.com>
+Date: Fri, 16 Nov 2018 19:12:46 +0800
+Subject: [PATCH 1005/2940] drm/amd/display: add plane size change check
+ condition
+
+[Why]
+Driver didn't check plane size and surface size is mismatch.
+It will cause pitch data incorrect.
+
+[How]
+Add condition to check is plane change and update surface
+
+Signed-off-by: Lewis Huang <Lewis.Huang@amd.com>
+Reviewed-by: Tony Cheng <Tony.Cheng@amd.com>
+Acked-by: Leo Li <sunpeng.li@amd.com>
+Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
+---
+ drivers/gpu/drm/amd/display/dc/core/dc.c | 6 ++++++
+ drivers/gpu/drm/amd/display/dc/dc.h | 1 +
+ drivers/gpu/drm/amd/display/dc/dcn10/dcn10_hw_sequencer.c | 3 ++-
+ 3 files changed, 9 insertions(+), 1 deletion(-)
+
+diff --git a/drivers/gpu/drm/amd/display/dc/core/dc.c b/drivers/gpu/drm/amd/display/dc/core/dc.c
+index 741e076dfed8..5a029a2b9416 100644
+--- a/drivers/gpu/drm/amd/display/dc/core/dc.c
++++ b/drivers/gpu/drm/amd/display/dc/core/dc.c
+@@ -1220,6 +1220,12 @@ static enum surface_update_type get_plane_info_update_type(const struct dc_surfa
+ */
+ update_flags->bits.bpp_change = 1;
+
++ if (u->plane_info->plane_size.grph.surface_pitch != u->surface->plane_size.grph.surface_pitch
++ || u->plane_info->plane_size.video.luma_pitch != u->surface->plane_size.video.luma_pitch
++ || u->plane_info->plane_size.video.chroma_pitch != u->surface->plane_size.video.chroma_pitch)
++ update_flags->bits.plane_size_change = 1;
++
++
+ if (memcmp(&u->plane_info->tiling_info, &u->surface->tiling_info,
+ sizeof(union dc_tiling_info)) != 0) {
+ update_flags->bits.swizzle_change = 1;
+diff --git a/drivers/gpu/drm/amd/display/dc/dc.h b/drivers/gpu/drm/amd/display/dc/dc.h
+index e13b96de70a6..d0d67d4429f7 100644
+--- a/drivers/gpu/drm/amd/display/dc/dc.h
++++ b/drivers/gpu/drm/amd/display/dc/dc.h
+@@ -445,6 +445,7 @@ union surface_update_flags {
+ uint32_t coeff_reduction_change:1;
+ uint32_t output_tf_change:1;
+ uint32_t pixel_format_change:1;
++ uint32_t plane_size_change:1;
+
+ /* Full updates */
+ uint32_t new_plane:1;
+diff --git a/drivers/gpu/drm/amd/display/dc/dcn10/dcn10_hw_sequencer.c b/drivers/gpu/drm/amd/display/dc/dcn10/dcn10_hw_sequencer.c
+index f1ee64327818..46a92788e17e 100644
+--- a/drivers/gpu/drm/amd/display/dc/dcn10/dcn10_hw_sequencer.c
++++ b/drivers/gpu/drm/amd/display/dc/dcn10/dcn10_hw_sequencer.c
+@@ -2124,7 +2124,8 @@ void update_dchubp_dpp(
+ plane_state->update_flags.bits.swizzle_change ||
+ plane_state->update_flags.bits.dcc_change ||
+ plane_state->update_flags.bits.bpp_change ||
+- plane_state->update_flags.bits.scaling_change) {
++ plane_state->update_flags.bits.scaling_change ||
++ plane_state->update_flags.bits.plane_size_change) {
+ hubp->funcs->hubp_program_surface_config(
+ hubp,
+ plane_state->format,
+--
+2.17.1
+