aboutsummaryrefslogtreecommitdiffstats
path: root/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/1895-drm-amd-display-color-space-ycbcr709-support.patch
diff options
context:
space:
mode:
Diffstat (limited to 'meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/1895-drm-amd-display-color-space-ycbcr709-support.patch')
-rw-r--r--meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/1895-drm-amd-display-color-space-ycbcr709-support.patch147
1 files changed, 147 insertions, 0 deletions
diff --git a/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/1895-drm-amd-display-color-space-ycbcr709-support.patch b/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/1895-drm-amd-display-color-space-ycbcr709-support.patch
new file mode 100644
index 00000000..6f6f80b2
--- /dev/null
+++ b/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/1895-drm-amd-display-color-space-ycbcr709-support.patch
@@ -0,0 +1,147 @@
+From 24342f561cd33657e7a6aa22586bec75447ef212 Mon Sep 17 00:00:00 2001
+From: Charlene Liu <charlene.liu@amd.com>
+Date: Wed, 17 Apr 2019 19:15:15 -0400
+Subject: [PATCH 1895/2940] drm/amd/display: color space ycbcr709 support
+
+Change-Id: I7ca5ff67a2d2f701e7e974cae7a93e7622669ac5
+Signed-off-by: Charlene Liu <charlene.liu@amd.com>
+Reviewed-by: Duke Du <Duke.Du@amd.com>
+Acked-by: Bhawanpreet Lakha <Bhawanpreet Lakha@amd.com>
+---
+ .../drm/amd/display/dc/core/dc_hw_sequencer.c | 29 +++++++++++++++++--
+ .../gpu/drm/amd/display/dc/core/dc_stream.c | 4 +--
+ drivers/gpu/drm/amd/display/dc/dc_hw_types.h | 1 +
+ .../amd/display/dc/dce/dce_stream_encoder.c | 1 +
+ .../display/dc/dcn10/dcn10_stream_encoder.c | 1 +
+ 5 files changed, 31 insertions(+), 5 deletions(-)
+
+diff --git a/drivers/gpu/drm/amd/display/dc/core/dc_hw_sequencer.c b/drivers/gpu/drm/amd/display/dc/core/dc_hw_sequencer.c
+index 83d121510ef5..ca50ede37183 100644
+--- a/drivers/gpu/drm/amd/display/dc/core/dc_hw_sequencer.c
++++ b/drivers/gpu/drm/amd/display/dc/core/dc_hw_sequencer.c
+@@ -45,8 +45,10 @@ enum dc_color_space_type {
+ COLOR_SPACE_RGB_LIMITED_TYPE,
+ COLOR_SPACE_YCBCR601_TYPE,
+ COLOR_SPACE_YCBCR709_TYPE,
++ COLOR_SPACE_YCBCR2020_TYPE,
+ COLOR_SPACE_YCBCR601_LIMITED_TYPE,
+- COLOR_SPACE_YCBCR709_LIMITED_TYPE
++ COLOR_SPACE_YCBCR709_LIMITED_TYPE,
++ COLOR_SPACE_YCBCR709_BLACK_TYPE,
+ };
+
+ static const struct tg_color black_color_format[] = {
+@@ -80,7 +82,6 @@ static const struct out_csc_color_matrix_type output_csc_matrix[] = {
+ { COLOR_SPACE_YCBCR709_TYPE,
+ { 0xE04, 0xF345, 0xFEB7, 0x1004, 0x5D3, 0x1399, 0x1FA,
+ 0x201, 0xFCCA, 0xF533, 0xE04, 0x1004} },
+-
+ /* TODO: correct values below */
+ { COLOR_SPACE_YCBCR601_LIMITED_TYPE,
+ { 0xE00, 0xF447, 0xFDB9, 0x1000, 0x991,
+@@ -88,6 +89,12 @@ static const struct out_csc_color_matrix_type output_csc_matrix[] = {
+ { COLOR_SPACE_YCBCR709_LIMITED_TYPE,
+ { 0xE00, 0xF349, 0xFEB7, 0x1000, 0x6CE, 0x16E3,
+ 0x24F, 0x200, 0xFCCB, 0xF535, 0xE00, 0x1000} },
++ { COLOR_SPACE_YCBCR2020_TYPE,
++ { 0x1000, 0xF149, 0xFEB7, 0x0000, 0x0868, 0x15B2,
++ 0x01E6, 0x0000, 0xFB88, 0xF478, 0x1000, 0x0000} },
++ { COLOR_SPACE_YCBCR709_BLACK_TYPE,
++ { 0x0000, 0x0000, 0x0000, 0x1000, 0x0000, 0x0000,
++ 0x0000, 0x0200, 0x0000, 0x0000, 0x0000, 0x1000} },
+ };
+
+ static bool is_rgb_type(
+@@ -149,6 +156,16 @@ static bool is_ycbcr709_type(
+ return ret;
+ }
+
++static bool is_ycbcr2020_type(
++ enum dc_color_space color_space)
++{
++ bool ret = false;
++
++ if (color_space == COLOR_SPACE_2020_YCBCR)
++ ret = true;
++ return ret;
++}
++
+ static bool is_ycbcr709_limited_type(
+ enum dc_color_space color_space)
+ {
+@@ -174,7 +191,12 @@ enum dc_color_space_type get_color_space_type(enum dc_color_space color_space)
+ type = COLOR_SPACE_YCBCR601_LIMITED_TYPE;
+ else if (is_ycbcr709_limited_type(color_space))
+ type = COLOR_SPACE_YCBCR709_LIMITED_TYPE;
+-
++ else if (is_ycbcr2020_type(color_space))
++ type = COLOR_SPACE_YCBCR2020_TYPE;
++ else if (color_space == COLOR_SPACE_YCBCR709)
++ type = COLOR_SPACE_YCBCR709_BLACK_TYPE;
++ else if (color_space == COLOR_SPACE_YCBCR709_BLACK)
++ type = COLOR_SPACE_YCBCR709_BLACK_TYPE;
+ return type;
+ }
+
+@@ -206,6 +228,7 @@ void color_space_to_black_color(
+ switch (colorspace) {
+ case COLOR_SPACE_YCBCR601:
+ case COLOR_SPACE_YCBCR709:
++ case COLOR_SPACE_YCBCR709_BLACK:
+ case COLOR_SPACE_YCBCR601_LIMITED:
+ case COLOR_SPACE_YCBCR709_LIMITED:
+ case COLOR_SPACE_2020_YCBCR:
+diff --git a/drivers/gpu/drm/amd/display/dc/core/dc_stream.c b/drivers/gpu/drm/amd/display/dc/core/dc_stream.c
+index 96e97d25d639..a79f608b2f79 100644
+--- a/drivers/gpu/drm/amd/display/dc/core/dc_stream.c
++++ b/drivers/gpu/drm/amd/display/dc/core/dc_stream.c
+@@ -47,8 +47,8 @@ void update_stream_signal(struct dc_stream_state *stream, struct dc_sink *sink)
+
+ if (dc_is_dvi_signal(stream->signal)) {
+ if (stream->ctx->dc->caps.dual_link_dvi &&
+- (stream->timing.pix_clk_100hz / 10) > TMDS_MAX_PIXEL_CLOCK &&
+- sink->sink_signal != SIGNAL_TYPE_DVI_SINGLE_LINK)
++ (stream->timing.pix_clk_100hz / 10) > TMDS_MAX_PIXEL_CLOCK &&
++ sink->sink_signal != SIGNAL_TYPE_DVI_SINGLE_LINK)
+ stream->signal = SIGNAL_TYPE_DVI_DUAL_LINK;
+ else
+ stream->signal = SIGNAL_TYPE_DVI_SINGLE_LINK;
+diff --git a/drivers/gpu/drm/amd/display/dc/dc_hw_types.h b/drivers/gpu/drm/amd/display/dc/dc_hw_types.h
+index da55d623647a..c91b8aad78c9 100644
+--- a/drivers/gpu/drm/amd/display/dc/dc_hw_types.h
++++ b/drivers/gpu/drm/amd/display/dc/dc_hw_types.h
+@@ -534,6 +534,7 @@ enum dc_color_space {
+ COLOR_SPACE_DOLBYVISION,
+ COLOR_SPACE_APPCTRL,
+ COLOR_SPACE_CUSTOMPOINTS,
++ COLOR_SPACE_YCBCR709_BLACK,
+ };
+
+ enum dc_dither_option {
+diff --git a/drivers/gpu/drm/amd/display/dc/dce/dce_stream_encoder.c b/drivers/gpu/drm/amd/display/dc/dce/dce_stream_encoder.c
+index d612e544d4a5..da4671df57d8 100644
+--- a/drivers/gpu/drm/amd/display/dc/dce/dce_stream_encoder.c
++++ b/drivers/gpu/drm/amd/display/dc/dce/dce_stream_encoder.c
+@@ -418,6 +418,7 @@ static void dce110_stream_encoder_dp_set_stream_attribute(
+ break;
+ case COLOR_SPACE_YCBCR709:
+ case COLOR_SPACE_YCBCR709_LIMITED:
++ case COLOR_SPACE_YCBCR709_BLACK:
+ misc0 = misc0 | 0x18; /* bit3=1, bit4=1 */
+ misc1 = misc1 & ~0x80; /* bit7 = 0*/
+ dynamic_range_ycbcr = 1; /*bt709*/
+diff --git a/drivers/gpu/drm/amd/display/dc/dcn10/dcn10_stream_encoder.c b/drivers/gpu/drm/amd/display/dc/dcn10/dcn10_stream_encoder.c
+index 8ee9f6dc1d62..c259c51dff9a 100644
+--- a/drivers/gpu/drm/amd/display/dc/dcn10/dcn10_stream_encoder.c
++++ b/drivers/gpu/drm/amd/display/dc/dcn10/dcn10_stream_encoder.c
+@@ -415,6 +415,7 @@ void enc1_stream_encoder_dp_set_stream_attribute(
+ case COLOR_SPACE_APPCTRL:
+ case COLOR_SPACE_CUSTOMPOINTS:
+ case COLOR_SPACE_UNKNOWN:
++ case COLOR_SPACE_YCBCR709_BLACK:
+ /* do nothing */
+ break;
+ }
+--
+2.17.1
+