aboutsummaryrefslogtreecommitdiffstats
path: root/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/4015-drm-amd-display-Updated-HDR-Static-Metadata-to-direc.patch
diff options
context:
space:
mode:
Diffstat (limited to 'meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/4015-drm-amd-display-Updated-HDR-Static-Metadata-to-direc.patch')
-rw-r--r--meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/4015-drm-amd-display-Updated-HDR-Static-Metadata-to-direc.patch164
1 files changed, 164 insertions, 0 deletions
diff --git a/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/4015-drm-amd-display-Updated-HDR-Static-Metadata-to-direc.patch b/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/4015-drm-amd-display-Updated-HDR-Static-Metadata-to-direc.patch
new file mode 100644
index 00000000..47f69efd
--- /dev/null
+++ b/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/4015-drm-amd-display-Updated-HDR-Static-Metadata-to-direc.patch
@@ -0,0 +1,164 @@
+From 4d0291e58a038d8483fd8476f889a93eddd5cd1c Mon Sep 17 00:00:00 2001
+From: Anthony Koo <Anthony.Koo@amd.com>
+Date: Sun, 25 Mar 2018 16:28:33 -0400
+Subject: [PATCH 4015/4131] drm/amd/display: Updated HDR Static Metadata to
+ directly take info packet raw
+
+Updated HDR Static Metadata to directly take info packet raw
+
+Updating Infopacket does not require Passive
+
+Signed-off-by: Anthony Koo <Anthony.Koo@amd.com>
+Reviewed-by: Anthony Koo <Anthony.Koo@amd.com>
+Acked-by: Harry Wentland <harry.wentland@amd.com>
+---
+ drivers/gpu/drm/amd/display/dc/core/dc.c | 3 -
+ drivers/gpu/drm/amd/display/dc/core/dc_resource.c | 91 +----------------------
+ drivers/gpu/drm/amd/display/dc/dc_stream.h | 4 +-
+ 3 files changed, 5 insertions(+), 93 deletions(-)
+
+diff --git a/drivers/gpu/drm/amd/display/dc/core/dc.c b/drivers/gpu/drm/amd/display/dc/core/dc.c
+index d215eea..9ab7b7d 100644
+--- a/drivers/gpu/drm/amd/display/dc/core/dc.c
++++ b/drivers/gpu/drm/amd/display/dc/core/dc.c
+@@ -1195,9 +1195,6 @@ static enum surface_update_type check_update_surfaces_for_stream(
+ if (stream_update->out_transfer_func)
+ return UPDATE_TYPE_FULL;
+
+- if (stream_update->hdr_static_metadata)
+- return UPDATE_TYPE_FULL;
+-
+ if (stream_update->abm_level)
+ return UPDATE_TYPE_FULL;
+ }
+diff --git a/drivers/gpu/drm/amd/display/dc/core/dc_resource.c b/drivers/gpu/drm/amd/display/dc/core/dc_resource.c
+index b57c540..569c3ac 100644
+--- a/drivers/gpu/drm/amd/display/dc/core/dc_resource.c
++++ b/drivers/gpu/drm/amd/display/dc/core/dc_resource.c
+@@ -2209,97 +2209,12 @@ static void set_hdr_static_info_packet(
+ struct dc_info_packet *info_packet,
+ struct dc_stream_state *stream)
+ {
+- uint16_t i = 0;
+- enum signal_type signal = stream->signal;
+- uint32_t data;
++ /* HDR Static Metadata info packet for HDR10 */
+
+- if (!stream->hdr_static_metadata.hdr_supported)
++ if (!stream->hdr_static_metadata.valid)
+ return;
+
+- if (dc_is_hdmi_signal(signal)) {
+- info_packet->valid = true;
+-
+- info_packet->hb0 = 0x87;
+- info_packet->hb1 = 0x01;
+- info_packet->hb2 = 0x1A;
+- i = 1;
+- } else if (dc_is_dp_signal(signal)) {
+- info_packet->valid = true;
+-
+- info_packet->hb0 = 0x00;
+- info_packet->hb1 = 0x87;
+- info_packet->hb2 = 0x1D;
+- info_packet->hb3 = (0x13 << 2);
+- i = 2;
+- }
+-
+- data = stream->hdr_static_metadata.is_hdr;
+- info_packet->sb[i++] = data ? 0x02 : 0x00;
+- info_packet->sb[i++] = 0x00;
+-
+- data = stream->hdr_static_metadata.chromaticity_green_x / 2;
+- info_packet->sb[i++] = data & 0xFF;
+- info_packet->sb[i++] = (data & 0xFF00) >> 8;
+-
+- data = stream->hdr_static_metadata.chromaticity_green_y / 2;
+- info_packet->sb[i++] = data & 0xFF;
+- info_packet->sb[i++] = (data & 0xFF00) >> 8;
+-
+- data = stream->hdr_static_metadata.chromaticity_blue_x / 2;
+- info_packet->sb[i++] = data & 0xFF;
+- info_packet->sb[i++] = (data & 0xFF00) >> 8;
+-
+- data = stream->hdr_static_metadata.chromaticity_blue_y / 2;
+- info_packet->sb[i++] = data & 0xFF;
+- info_packet->sb[i++] = (data & 0xFF00) >> 8;
+-
+- data = stream->hdr_static_metadata.chromaticity_red_x / 2;
+- info_packet->sb[i++] = data & 0xFF;
+- info_packet->sb[i++] = (data & 0xFF00) >> 8;
+-
+- data = stream->hdr_static_metadata.chromaticity_red_y / 2;
+- info_packet->sb[i++] = data & 0xFF;
+- info_packet->sb[i++] = (data & 0xFF00) >> 8;
+-
+- data = stream->hdr_static_metadata.chromaticity_white_point_x / 2;
+- info_packet->sb[i++] = data & 0xFF;
+- info_packet->sb[i++] = (data & 0xFF00) >> 8;
+-
+- data = stream->hdr_static_metadata.chromaticity_white_point_y / 2;
+- info_packet->sb[i++] = data & 0xFF;
+- info_packet->sb[i++] = (data & 0xFF00) >> 8;
+-
+- data = stream->hdr_static_metadata.max_luminance;
+- info_packet->sb[i++] = data & 0xFF;
+- info_packet->sb[i++] = (data & 0xFF00) >> 8;
+-
+- data = stream->hdr_static_metadata.min_luminance;
+- info_packet->sb[i++] = data & 0xFF;
+- info_packet->sb[i++] = (data & 0xFF00) >> 8;
+-
+- data = stream->hdr_static_metadata.maximum_content_light_level;
+- info_packet->sb[i++] = data & 0xFF;
+- info_packet->sb[i++] = (data & 0xFF00) >> 8;
+-
+- data = stream->hdr_static_metadata.maximum_frame_average_light_level;
+- info_packet->sb[i++] = data & 0xFF;
+- info_packet->sb[i++] = (data & 0xFF00) >> 8;
+-
+- if (dc_is_hdmi_signal(signal)) {
+- uint32_t checksum = 0;
+-
+- checksum += info_packet->hb0;
+- checksum += info_packet->hb1;
+- checksum += info_packet->hb2;
+-
+- for (i = 1; i <= info_packet->hb2; i++)
+- checksum += info_packet->sb[i];
+-
+- info_packet->sb[0] = 0x100 - checksum;
+- } else if (dc_is_dp_signal(signal)) {
+- info_packet->sb[0] = 0x01;
+- info_packet->sb[1] = 0x1A;
+- }
++ *info_packet = stream->hdr_static_metadata;
+ }
+
+ static void set_vsc_info_packet(
+diff --git a/drivers/gpu/drm/amd/display/dc/dc_stream.h b/drivers/gpu/drm/amd/display/dc/dc_stream.h
+index ca437e1..f90c578 100644
+--- a/drivers/gpu/drm/amd/display/dc/dc_stream.h
++++ b/drivers/gpu/drm/amd/display/dc/dc_stream.h
+@@ -64,7 +64,7 @@ struct dc_stream_state {
+
+ struct audio_info audio_info;
+
+- struct dc_hdr_static_metadata hdr_static_metadata;
++ struct dc_info_packet hdr_static_metadata;
+ struct dc_transfer_func *out_transfer_func;
+ struct colorspace_transform gamut_remap_matrix;
+ struct csc_transform csc_color_matrix;
+@@ -119,8 +119,8 @@ struct dc_stream_update {
+ struct rect src;
+ struct rect dst;
+ struct dc_transfer_func *out_transfer_func;
+- struct dc_hdr_static_metadata *hdr_static_metadata;
+ enum color_transfer_func color_output_tf;
++ struct dc_info_packet *hdr_static_metadata;
+ unsigned int *abm_level;
+ unsigned long long *periodic_fn_vsync_delta;
+ struct dc_crtc_timing_adjust *adjust;
+--
+2.7.4
+