diff options
Diffstat (limited to 'meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/2472-drm-amd-display-fix-multi-display-on-CZ.patch')
-rw-r--r-- | meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/2472-drm-amd-display-fix-multi-display-on-CZ.patch | 65 |
1 files changed, 65 insertions, 0 deletions
diff --git a/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/2472-drm-amd-display-fix-multi-display-on-CZ.patch b/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/2472-drm-amd-display-fix-multi-display-on-CZ.patch new file mode 100644 index 00000000..4f715ea6 --- /dev/null +++ b/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/2472-drm-amd-display-fix-multi-display-on-CZ.patch @@ -0,0 +1,65 @@ +From 95f38eb5b266615e3bf91a4ddbd759e5f1282b65 Mon Sep 17 00:00:00 2001 +From: Roman Li <Roman.Li@amd.com> +Date: Mon, 11 Sep 2017 16:28:21 -0400 +Subject: [PATCH 2472/4131] drm/amd/display: fix multi-display on CZ + +- fixed wrong index in dce110_validate_surface_sets() +- formatted for better readability + +Signed-off-by: Roman Li <Roman.Li@amd.com> +Reviewed-by: Harry Wentland <Harry.Wentland@amd.com> +--- + .../drm/amd/display/dc/dce110/dce110_resource.c | 29 ++++++++++++++++------ + 1 file changed, 21 insertions(+), 8 deletions(-) + +diff --git a/drivers/gpu/drm/amd/display/dc/dce110/dce110_resource.c b/drivers/gpu/drm/amd/display/dc/dce110/dce110_resource.c +index 28e768d..8e4ec61 100644 +--- a/drivers/gpu/drm/amd/display/dc/dce110/dce110_resource.c ++++ b/drivers/gpu/drm/amd/display/dc/dce110/dce110_resource.c +@@ -849,7 +849,7 @@ static bool dce110_validate_bandwidth( + static bool dce110_validate_surface_sets( + struct dc_state *context) + { +- int i; ++ int i, j; + + for (i = 0; i < context->stream_count; i++) { + if (context->stream_status[i].plane_count == 0) +@@ -858,14 +858,27 @@ static bool dce110_validate_surface_sets( + if (context->stream_status[i].plane_count > 2) + return false; + +- if ((context->stream_status[i].plane_states[i]->format >= SURFACE_PIXEL_FORMAT_VIDEO_BEGIN) && +- (context->stream_status[i].plane_states[i]->src_rect.width > 1920 || +- context->stream_status[i].plane_states[i]->src_rect.height > 1080)) +- return false; ++ for (j = 0; j < context->stream_status[i].plane_count; j++) { ++ struct dc_plane_state *plane = ++ context->stream_status[i].plane_states[j]; + +- /* irrespective of plane format, stream should be RGB encoded */ +- if (context->streams[i]->timing.pixel_encoding != PIXEL_ENCODING_RGB) +- return false; ++ /* underlay validation */ ++ if (plane->format >= SURFACE_PIXEL_FORMAT_VIDEO_BEGIN) { ++ ++ if ((plane->src_rect.width > 1920 || ++ plane->src_rect.height > 1080)) ++ return false; ++ ++ /* irrespective of plane format, ++ * stream should be RGB encoded ++ */ ++ if (context->streams[i]->timing.pixel_encoding ++ != PIXEL_ENCODING_RGB) ++ return false; ++ ++ } ++ ++ } + } + + return true; +-- +2.7.4 + |