diff options
Diffstat (limited to 'meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/4007-drm-amd-display-fix-link-bw-calculation-for-422-and-.patch')
-rw-r--r-- | meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/4007-drm-amd-display-fix-link-bw-calculation-for-422-and-.patch | 92 |
1 files changed, 92 insertions, 0 deletions
diff --git a/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/4007-drm-amd-display-fix-link-bw-calculation-for-422-and-.patch b/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/4007-drm-amd-display-fix-link-bw-calculation-for-422-and-.patch new file mode 100644 index 00000000..41bf6bd4 --- /dev/null +++ b/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/4007-drm-amd-display-fix-link-bw-calculation-for-422-and-.patch @@ -0,0 +1,92 @@ +From 8936e50f62c8d5bad3a23e079db430fe93569357 Mon Sep 17 00:00:00 2001 +From: Eric Yang <Eric.Yang2@amd.com> +Date: Fri, 23 Mar 2018 13:56:16 -0400 +Subject: [PATCH 4007/4131] drm/amd/display: fix link bw calculation for 422 + and 420 encoding + +Link bw required is reduced when we have chroma subsampling. + +Signed-off-by: Eric Yang <Eric.Yang2@amd.com> +Reviewed-by: Charlene Liu <Charlene.Liu@amd.com> +Acked-by: Harry Wentland <harry.wentland@amd.com> +--- + drivers/gpu/drm/amd/display/dc/core/dc_link_dp.c | 53 ++++++++++++++---------- + 1 file changed, 32 insertions(+), 21 deletions(-) + +diff --git a/drivers/gpu/drm/amd/display/dc/core/dc_link_dp.c b/drivers/gpu/drm/amd/display/dc/core/dc_link_dp.c +index e103ce8e..a6dcd42 100644 +--- a/drivers/gpu/drm/amd/display/dc/core/dc_link_dp.c ++++ b/drivers/gpu/drm/amd/display/dc/core/dc_link_dp.c +@@ -1378,37 +1378,48 @@ static uint32_t bandwidth_in_kbps_from_timing( + { + uint32_t bits_per_channel = 0; + uint32_t kbps; +- switch (timing->display_color_depth) { + +- case COLOR_DEPTH_666: +- bits_per_channel = 6; +- break; +- case COLOR_DEPTH_888: +- bits_per_channel = 8; +- break; +- case COLOR_DEPTH_101010: +- bits_per_channel = 10; +- break; +- case COLOR_DEPTH_121212: ++ if (timing->pixel_encoding == PIXEL_ENCODING_YCBCR422) + bits_per_channel = 12; +- break; +- case COLOR_DEPTH_141414: +- bits_per_channel = 14; +- break; +- case COLOR_DEPTH_161616: +- bits_per_channel = 16; +- break; +- default: +- break; ++ else{ ++ ++ switch (timing->display_color_depth) { ++ ++ case COLOR_DEPTH_666: ++ bits_per_channel = 6; ++ break; ++ case COLOR_DEPTH_888: ++ bits_per_channel = 8; ++ break; ++ case COLOR_DEPTH_101010: ++ bits_per_channel = 10; ++ break; ++ case COLOR_DEPTH_121212: ++ bits_per_channel = 12; ++ break; ++ case COLOR_DEPTH_141414: ++ bits_per_channel = 14; ++ break; ++ case COLOR_DEPTH_161616: ++ bits_per_channel = 16; ++ break; ++ default: ++ break; ++ } + } + ASSERT(bits_per_channel != 0); + + kbps = timing->pix_clk_khz; + kbps *= bits_per_channel; + +- if (timing->flags.Y_ONLY != 1) ++ if (timing->flags.Y_ONLY != 1) { + /*Only YOnly make reduce bandwidth by 1/3 compares to RGB*/ + kbps *= 3; ++ if (timing->pixel_encoding == PIXEL_ENCODING_YCBCR420) ++ kbps /= 2; ++ else if (timing->pixel_encoding == PIXEL_ENCODING_YCBCR422) ++ kbps = kbps * 2 / 3; ++ } + + return kbps; + +-- +2.7.4 + |