diff options
Diffstat (limited to 'meta-v1000/recipes-kernel/linux/linux-yocto-4.14.71/0366-drm-amd-display-USB-c-DP-HDMI-dongle-shows-garbage-o.patch')
-rw-r--r-- | meta-v1000/recipes-kernel/linux/linux-yocto-4.14.71/0366-drm-amd-display-USB-c-DP-HDMI-dongle-shows-garbage-o.patch | 129 |
1 files changed, 129 insertions, 0 deletions
diff --git a/meta-v1000/recipes-kernel/linux/linux-yocto-4.14.71/0366-drm-amd-display-USB-c-DP-HDMI-dongle-shows-garbage-o.patch b/meta-v1000/recipes-kernel/linux/linux-yocto-4.14.71/0366-drm-amd-display-USB-c-DP-HDMI-dongle-shows-garbage-o.patch new file mode 100644 index 00000000..3f4ecd88 --- /dev/null +++ b/meta-v1000/recipes-kernel/linux/linux-yocto-4.14.71/0366-drm-amd-display-USB-c-DP-HDMI-dongle-shows-garbage-o.patch @@ -0,0 +1,129 @@ +From f335d0647256400cd2d1a464a75e11dc4d6bd2fd Mon Sep 17 00:00:00 2001 +From: Charlene Liu <charlene.liu@amd.com> +Date: Fri, 21 Apr 2017 17:15:40 -0400 +Subject: [PATCH 0366/4131] drm/amd/display: USB-c DP-HDMI dongle shows garbage + on Sony TV + +Signed-off-by: Charlene Liu <charlene.liu@amd.com> +Acked-by: Harry Wentland <Harry.Wentland@amd.com> +Reviewed-by: Charlene Liu <Charlene.Liu@amd.com> +Signed-off-by: Alex Deucher <alexander.deucher@amd.com> +--- + drivers/gpu/drm/amd/display/dc/core/dc_link_dp.c | 21 ++++++++++++++++++++- + drivers/gpu/drm/amd/display/dc/dc.h | 2 +- + drivers/gpu/drm/amd/display/dc/dc_dp_types.h | 8 ++++++-- + drivers/gpu/drm/amd/display/dc/dc_types.h | 20 ++++++++++++++++++++ + 4 files changed, 47 insertions(+), 4 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 4ef3fec..953e201 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 +@@ -1951,14 +1951,33 @@ static void get_active_converter_info( + link->dpcd_caps.dongle_type = + DISPLAY_DONGLE_DP_HDMI_CONVERTER; + ++ link->dpcd_caps.dongle_caps.dongle_type = link->dpcd_caps.dongle_type; + if (ds_port.fields.DETAILED_CAPS) { + + union dwnstream_port_caps_byte3_hdmi + hdmi_caps = {.raw = det_caps[3] }; ++ union dwnstream_port_caps_byte1 ++ hdmi_color_caps = {.raw = det_caps[2] }; ++ link->dpcd_caps.dongle_caps.dp_hdmi_max_pixel_clk = ++ det_caps[1] * 25000; + +- link->dpcd_caps.is_dp_hdmi_s3d_converter = ++ link->dpcd_caps.dongle_caps.is_dp_hdmi_s3d_converter = + hdmi_caps.bits.FRAME_SEQ_TO_FRAME_PACK; ++ link->dpcd_caps.dongle_caps.is_dp_hdmi_ycbcr422_pass_through = ++ hdmi_caps.bits.YCrCr422_PASS_THROUGH; ++ link->dpcd_caps.dongle_caps.is_dp_hdmi_ycbcr420_pass_through = ++ hdmi_caps.bits.YCrCr420_PASS_THROUGH; ++ link->dpcd_caps.dongle_caps.is_dp_hdmi_ycbcr422_converter = ++ hdmi_caps.bits.YCrCr422_CONVERSION; ++ link->dpcd_caps.dongle_caps.is_dp_hdmi_ycbcr420_converter = ++ hdmi_caps.bits.YCrCr420_CONVERSION; ++ ++ link->dpcd_caps.dongle_caps.dp_hdmi_max_bpc = ++ hdmi_color_caps.bits.MAX_BITS_PER_COLOR_COMPONENT; ++ ++ link->dpcd_caps.dongle_caps.extendedCapValid = true; + } ++ + break; + } + } +diff --git a/drivers/gpu/drm/amd/display/dc/dc.h b/drivers/gpu/drm/amd/display/dc/dc.h +index 1b3fd79..d35fa01 100644 +--- a/drivers/gpu/drm/amd/display/dc/dc.h ++++ b/drivers/gpu/drm/amd/display/dc/dc.h +@@ -623,7 +623,7 @@ struct dpcd_caps { + union sink_count sink_count; + /* If dongle_type == DISPLAY_DONGLE_DP_HDMI_CONVERTER, + indicates 'Frame Sequential-to-lllFrame Pack' conversion capability.*/ +- bool is_dp_hdmi_s3d_converter; ++ struct dc_dongle_caps dongle_caps; + + bool allow_invalid_MSA_timing_param; + bool panel_mode_edp; +diff --git a/drivers/gpu/drm/amd/display/dc/dc_dp_types.h b/drivers/gpu/drm/amd/display/dc/dc_dp_types.h +index cd2323a..77e2de6 100644 +--- a/drivers/gpu/drm/amd/display/dc/dc_dp_types.h ++++ b/drivers/gpu/drm/amd/display/dc/dc_dp_types.h +@@ -255,7 +255,7 @@ enum dpcd_downstream_port_detailed_type { + DOWN_STREAM_DETAILED_DP_PLUS_PLUS + }; + +-union dwnstream_port_caps_byte2 { ++union dwnstream_port_caps_byte1 { + struct { + uint8_t MAX_BITS_PER_COLOR_COMPONENT:2; + uint8_t RESERVED:6; +@@ -287,7 +287,11 @@ union dwnstream_port_caps_byte3_dvi { + union dwnstream_port_caps_byte3_hdmi { + struct { + uint8_t FRAME_SEQ_TO_FRAME_PACK:1; +- uint8_t RESERVED:7; ++ uint8_t YCrCr422_PASS_THROUGH:1; ++ uint8_t YCrCr420_PASS_THROUGH:1; ++ uint8_t YCrCr422_CONVERSION:1; ++ uint8_t YCrCr420_CONVERSION:1; ++ uint8_t RESERVED:3; + } bits; + uint8_t raw; + }; +diff --git a/drivers/gpu/drm/amd/display/dc/dc_types.h b/drivers/gpu/drm/amd/display/dc/dc_types.h +index e0436e3..2ba02b5 100644 +--- a/drivers/gpu/drm/amd/display/dc/dc_types.h ++++ b/drivers/gpu/drm/amd/display/dc/dc_types.h +@@ -338,6 +338,26 @@ enum { + LAYER_INDEX_PRIMARY = -1, + }; + ++enum dpcd_downstream_port_max_bpc { ++ DOWN_STREAM_MAX_8BPC = 0, ++ DOWN_STREAM_MAX_10BPC, ++ DOWN_STREAM_MAX_12BPC, ++ DOWN_STREAM_MAX_16BPC ++}; ++struct dc_dongle_caps { ++ /* dongle type (DP converter, CV smart dongle) */ ++ enum display_dongle_type dongle_type; ++ bool extendedCapValid; ++ /* If dongle_type == DISPLAY_DONGLE_DP_HDMI_CONVERTER, ++ indicates 'Frame Sequential-to-lllFrame Pack' conversion capability.*/ ++ bool is_dp_hdmi_s3d_converter; ++ bool is_dp_hdmi_ycbcr422_pass_through; ++ bool is_dp_hdmi_ycbcr420_pass_through; ++ bool is_dp_hdmi_ycbcr422_converter; ++ bool is_dp_hdmi_ycbcr420_converter; ++ uint32_t dp_hdmi_max_bpc; ++ uint32_t dp_hdmi_max_pixel_clk; ++}; + /* Scaling format */ + enum scaling_transformation { + SCALING_TRANSFORMATION_UNINITIALIZED, +-- +2.7.4 + |