aboutsummaryrefslogtreecommitdiffstats
path: root/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/4007-drm-amd-display-fix-link-bw-calculation-for-422-and-.patch
diff options
context:
space:
mode:
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-.patch92
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
+