diff options
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.patch | 164 |
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 + |