aboutsummaryrefslogtreecommitdiffstats
path: root/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/1094-drm-amd-display-Fixed-MST-SST-light-up.patch
diff options
context:
space:
mode:
Diffstat (limited to 'meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/1094-drm-amd-display-Fixed-MST-SST-light-up.patch')
-rw-r--r--meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/1094-drm-amd-display-Fixed-MST-SST-light-up.patch108
1 files changed, 108 insertions, 0 deletions
diff --git a/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/1094-drm-amd-display-Fixed-MST-SST-light-up.patch b/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/1094-drm-amd-display-Fixed-MST-SST-light-up.patch
new file mode 100644
index 00000000..d0be0e53
--- /dev/null
+++ b/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/1094-drm-amd-display-Fixed-MST-SST-light-up.patch
@@ -0,0 +1,108 @@
+From a18548d06f2943744f0d32423e6d2c863625e5dd Mon Sep 17 00:00:00 2001
+From: "Jerry (Fangzhi) Zuo" <Jerry.Zuo@amd.com>
+Date: Wed, 3 Jan 2018 14:01:01 -0500
+Subject: [PATCH 1094/4131] drm/amd/display: Fixed MST+SST light up
+
+Signed-off-by: Jerry (Fangzhi) Zuo <Jerry.Zuo@amd.com>
+Reviewed-by: Andrey Grodzovsky <andrey.grodzovsky@amd.com>
+Acked-by: Alex Deucher <alexander.deucher@amd.com>
+---
+ drivers/gpu/drm/amd/display/dc/core/dc_resource.c | 25 -----------------------
+ drivers/gpu/drm/amd/display/dc/core/dc_stream.c | 24 ++++++++++++++++++++++
+ 2 files changed, 24 insertions(+), 25 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 f010039..483fcea 100644
+--- a/drivers/gpu/drm/amd/display/dc/core/dc_resource.c
++++ b/drivers/gpu/drm/amd/display/dc/core/dc_resource.c
+@@ -1217,7 +1217,6 @@ bool resource_validate_attach_surfaces(
+
+ /* Maximum TMDS single link pixel clock 165MHz */
+ #define TMDS_MAX_PIXEL_CLOCK_IN_KHZ 165000
+-#define TMDS_MAX_PIXEL_CLOCK_IN_KHZ_UPMOST 297000
+
+ static void set_stream_engine_in_use(
+ struct resource_context *res_ctx,
+@@ -1326,28 +1325,6 @@ static struct audio *find_first_free_audio(
+ return 0;
+ }
+
+-static void update_stream_signal(struct dc_stream_state *stream)
+-{
+- if (stream->output_signal == SIGNAL_TYPE_NONE) {
+- struct dc_sink *dc_sink = stream->sink;
+-
+- if (dc_sink->sink_signal == SIGNAL_TYPE_NONE)
+- stream->signal = stream->sink->link->connector_signal;
+- else
+- stream->signal = dc_sink->sink_signal;
+- } else {
+- stream->signal = stream->output_signal;
+- }
+-
+- if (dc_is_dvi_signal(stream->signal)) {
+- if (stream->timing.pix_clk_khz > TMDS_MAX_PIXEL_CLOCK_IN_KHZ_UPMOST &&
+- stream->sink->sink_signal != SIGNAL_TYPE_DVI_SINGLE_LINK)
+- stream->signal = SIGNAL_TYPE_DVI_DUAL_LINK;
+- else
+- stream->signal = SIGNAL_TYPE_DVI_SINGLE_LINK;
+- }
+-}
+-
+ bool resource_is_stream_unchanged(
+ struct validate_context *old_context, struct dc_stream_state *stream)
+ {
+@@ -1428,8 +1405,6 @@ static int get_norm_pix_clk(const struct dc_crtc_timing *timing)
+
+ static void calculate_phy_pix_clks(struct dc_stream_state *stream)
+ {
+- update_stream_signal(stream);
+-
+ /* update actual pixel clock on all streams */
+ if (dc_is_hdmi_signal(stream->signal))
+ stream->phy_pix_clk = get_norm_pix_clk(
+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 2de37fe..564c2ea 100644
+--- a/drivers/gpu/drm/amd/display/dc/core/dc_stream.c
++++ b/drivers/gpu/drm/amd/display/dc/core/dc_stream.c
+@@ -33,6 +33,28 @@
+ /*******************************************************************************
+ * Private functions
+ ******************************************************************************/
++#define TMDS_MAX_PIXEL_CLOCK_IN_KHZ_UPMOST 297000
++static void update_stream_signal(struct dc_stream_state *stream)
++{
++ if (stream->output_signal == SIGNAL_TYPE_NONE) {
++ struct dc_sink *dc_sink = stream->sink;
++
++ if (dc_sink->sink_signal == SIGNAL_TYPE_NONE)
++ stream->signal = stream->sink->link->connector_signal;
++ else
++ stream->signal = dc_sink->sink_signal;
++ } else {
++ stream->signal = stream->output_signal;
++ }
++
++ if (dc_is_dvi_signal(stream->signal)) {
++ if (stream->timing.pix_clk_khz > TMDS_MAX_PIXEL_CLOCK_IN_KHZ_UPMOST &&
++ stream->sink->sink_signal != SIGNAL_TYPE_DVI_SINGLE_LINK)
++ stream->signal = SIGNAL_TYPE_DVI_DUAL_LINK;
++ else
++ stream->signal = SIGNAL_TYPE_DVI_SINGLE_LINK;
++ }
++}
+
+ static bool construct(struct dc_stream_state *stream,
+ struct dc_sink *dc_sink_data)
+@@ -81,6 +103,8 @@ static bool construct(struct dc_stream_state *stream,
+ stream->timing.flags.LTE_340MCSC_SCRAMBLE = dc_sink_data->edid_caps.lte_340mcsc_scramble;
+
+ stream->status.link = stream->sink->link;
++
++ update_stream_signal(stream);
+ return true;
+ }
+
+--
+2.7.4
+