diff options
Diffstat (limited to 'common/recipes-kernel/linux/linux-yocto-4.14.71/0125-drm-amd-display-Check-hdr-support-before-setting.patch')
-rw-r--r-- | common/recipes-kernel/linux/linux-yocto-4.14.71/0125-drm-amd-display-Check-hdr-support-before-setting.patch | 76 |
1 files changed, 76 insertions, 0 deletions
diff --git a/common/recipes-kernel/linux/linux-yocto-4.14.71/0125-drm-amd-display-Check-hdr-support-before-setting.patch b/common/recipes-kernel/linux/linux-yocto-4.14.71/0125-drm-amd-display-Check-hdr-support-before-setting.patch new file mode 100644 index 00000000..a84f2821 --- /dev/null +++ b/common/recipes-kernel/linux/linux-yocto-4.14.71/0125-drm-amd-display-Check-hdr-support-before-setting.patch @@ -0,0 +1,76 @@ +From 41f8b96d4a72b0af00ea45941a05ef15720318e5 Mon Sep 17 00:00:00 2001 +From: Yongqiang Sun <yongqiang.sun@amd.com> +Date: Thu, 5 Jan 2017 11:26:59 -0500 +Subject: [PATCH 0125/4131] drm/amd/display: Check hdr support before setting. + +In case of programing info frame to +some monitors don't support HDR, it will +result in black screen or corruption when +unplug monitor. +By checking hdr flag to avoid unnecessary +setting for monitors don't support HDR. + +Signed-off-by: Yongqiang Sun <yongqiang.sun@amd.com> +Acked-by: Harry Wentland <Harry.Wentland@amd.com> +Signed-off-by: Alex Deucher <alexander.deucher@amd.com> +--- + drivers/gpu/drm/amd/display/dc/core/dc_resource.c | 3 +++ + .../drm/amd/display/dc/dce/dce_stream_encoder.c | 27 +++++++++++++--------- + 2 files changed, 19 insertions(+), 11 deletions(-) + +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 80fe6b9..a82f2d6 100644 +--- a/drivers/gpu/drm/amd/display/dc/core/dc_resource.c ++++ b/drivers/gpu/drm/amd/display/dc/core/dc_resource.c +@@ -1742,6 +1742,9 @@ static void set_hdr_static_info_packet( + + hdr_metadata = surface->public.hdr_static_ctx; + ++ if (!hdr_metadata.is_hdr) ++ return; ++ + if (dc_is_hdmi_signal(signal)) { + info_packet->valid = true; + +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 82133ab..8156c6a 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 +@@ -555,18 +555,23 @@ static void dce110_stream_encoder_update_dp_info_packets( + struct dce110_stream_encoder *enc110 = DCE110STRENC_FROM_STRENC(enc); + uint32_t value = REG_READ(DP_SEC_CNTL); + +- dce110_update_generic_info_packet( ++ if (info_frame->vsc.valid) ++ dce110_update_generic_info_packet( ++ enc110, ++ 0, /* packetIndex */ ++ &info_frame->vsc); ++ ++ if (info_frame->spd.valid) ++ dce110_update_generic_info_packet( + enc110, +- 0, /* packetIndex */ +- &info_frame->vsc); +- dce110_update_generic_info_packet( +- enc110, +- 2, /* packetIndex */ +- &info_frame->spd); +- dce110_update_generic_info_packet( +- enc110, +- 3, /* packetIndex */ +- &info_frame->hdrsmd); ++ 2, /* packetIndex */ ++ &info_frame->spd); ++ ++ if (info_frame->hdrsmd.valid) ++ dce110_update_generic_info_packet( ++ enc110, ++ 3, /* packetIndex */ ++ &info_frame->hdrsmd); + + /* enable/disable transmission of packet(s). + * If enabled, packet transmission begins on the next frame +-- +2.7.4 + |