aboutsummaryrefslogtreecommitdiffstats
path: root/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/0319-drm-amd-display-Remove-get_connector_for_sink.patch
diff options
context:
space:
mode:
Diffstat (limited to 'meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/0319-drm-amd-display-Remove-get_connector_for_sink.patch')
-rw-r--r--meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/0319-drm-amd-display-Remove-get_connector_for_sink.patch136
1 files changed, 136 insertions, 0 deletions
diff --git a/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/0319-drm-amd-display-Remove-get_connector_for_sink.patch b/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/0319-drm-amd-display-Remove-get_connector_for_sink.patch
new file mode 100644
index 00000000..6042fe21
--- /dev/null
+++ b/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/0319-drm-amd-display-Remove-get_connector_for_sink.patch
@@ -0,0 +1,136 @@
+From 43f3d32f0771a24019747dccf3a28103e8c2c6e4 Mon Sep 17 00:00:00 2001
+From: Andrey Grodzovsky <Andrey.Grodzovsky@amd.com>
+Date: Tue, 14 Feb 2017 15:47:24 -0500
+Subject: [PATCH 0319/4131] drm/amd/display: Remove get_connector_for_sink.
+
+Keep 1:1 relation between MST sink and it's MST connector.
+
+Signed-off-by: Andrey Grodzovsky <Andrey.Grodzovsky@amd.com>
+Reviewed-by: Tony Cheng <Tony.Cheng@amd.com>
+Reviewed-by: Harry Wentland <Harry.Wentland@amd.com>
+Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
+---
+ .../drm/amd/display/amdgpu_dm/amdgpu_dm_helpers.c | 27 +++-------------------
+ .../amd/display/amdgpu_dm/amdgpu_dm_mst_types.c | 7 +++++-
+ drivers/gpu/drm/amd/display/dc/dc.h | 1 +
+ 3 files changed, 10 insertions(+), 25 deletions(-)
+
+diff --git a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_helpers.c b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_helpers.c
+index 961d8d1..5d45c0f 100644
+--- a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_helpers.c
++++ b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_helpers.c
+@@ -133,21 +133,6 @@ enum dc_edid_status dm_helpers_parse_edid_caps(
+ return result;
+ }
+
+-static struct amdgpu_connector *get_connector_for_sink(
+- struct drm_device *dev,
+- const struct dc_sink *sink)
+-{
+- struct drm_connector *connector;
+-
+- list_for_each_entry(connector, &dev->mode_config.connector_list, head) {
+- struct amdgpu_connector *aconnector = to_amdgpu_connector(connector);
+- if (aconnector->dc_sink == sink)
+- return aconnector;
+- }
+-
+- return NULL;
+-}
+-
+ static void get_payload_table(
+ struct amdgpu_connector *aconnector,
+ struct dp_mst_stream_allocation_table *proposed_table)
+@@ -194,8 +179,6 @@ bool dm_helpers_dp_mst_write_payload_allocation_table(
+ struct dp_mst_stream_allocation_table *proposed_table,
+ bool enable)
+ {
+- struct amdgpu_device *adev = ctx->driver_context;
+- struct drm_device *dev = adev->ddev;
+ struct amdgpu_connector *aconnector;
+ struct drm_dp_mst_topology_mgr *mst_mgr;
+ struct drm_dp_mst_port *mst_port;
+@@ -205,7 +188,7 @@ bool dm_helpers_dp_mst_write_payload_allocation_table(
+ int bpp = 0;
+ int pbn = 0;
+
+- aconnector = get_connector_for_sink(dev, stream->sink);
++ aconnector = stream->sink->priv;
+
+ if (!aconnector || !aconnector->mst_port)
+ return false;
+@@ -283,13 +266,11 @@ bool dm_helpers_dp_mst_poll_for_allocation_change_trigger(
+ struct dc_context *ctx,
+ const struct dc_stream *stream)
+ {
+- struct amdgpu_device *adev = ctx->driver_context;
+- struct drm_device *dev = adev->ddev;
+ struct amdgpu_connector *aconnector;
+ struct drm_dp_mst_topology_mgr *mst_mgr;
+ int ret;
+
+- aconnector = get_connector_for_sink(dev, stream->sink);
++ aconnector = stream->sink->priv;
+
+ if (!aconnector || !aconnector->mst_port)
+ return false;
+@@ -312,14 +293,12 @@ bool dm_helpers_dp_mst_send_payload_allocation(
+ const struct dc_stream *stream,
+ bool enable)
+ {
+- struct amdgpu_device *adev = ctx->driver_context;
+- struct drm_device *dev = adev->ddev;
+ struct amdgpu_connector *aconnector;
+ struct drm_dp_mst_topology_mgr *mst_mgr;
+ struct drm_dp_mst_port *mst_port;
+ int ret;
+
+- aconnector = get_connector_for_sink(dev, stream->sink);
++ aconnector = stream->sink->priv;
+
+ if (!aconnector || !aconnector->mst_port)
+ return false;
+diff --git a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_mst_types.c b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_mst_types.c
+index 9f3aed77..cea8afb 100644
+--- a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_mst_types.c
++++ b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_mst_types.c
+@@ -327,6 +327,7 @@ static void dm_dp_mst_hotplug(struct drm_dp_mst_topology_mgr *mgr)
+ struct drm_connector *connector;
+ struct amdgpu_connector *aconnector;
+ struct edid *edid;
++ struct dc_sink *dc_sink;
+
+ drm_modeset_lock_all(dev);
+ list_for_each_entry(connector, &dev->mode_config.connector_list, head) {
+@@ -354,11 +355,15 @@ static void dm_dp_mst_hotplug(struct drm_dp_mst_topology_mgr *mgr)
+
+ aconnector->edid = edid;
+
+- aconnector->dc_sink = dc_link_add_remote_sink(
++ dc_sink = dc_link_add_remote_sink(
+ aconnector->dc_link,
+ (uint8_t *)edid,
+ (edid->extensions + 1) * EDID_LENGTH,
+ &init_params);
++
++ dc_sink->priv = aconnector;
++ aconnector->dc_sink = dc_sink;
++
+ if (aconnector->dc_sink)
+ amdgpu_dm_add_sink_to_freesync_module(
+ connector,
+diff --git a/drivers/gpu/drm/amd/display/dc/dc.h b/drivers/gpu/drm/amd/display/dc/dc.h
+index 6bb6ad2..d296055 100644
+--- a/drivers/gpu/drm/amd/display/dc/dc.h
++++ b/drivers/gpu/drm/amd/display/dc/dc.h
+@@ -719,6 +719,7 @@ struct dc_sink {
+ struct dc_container_id *dc_container_id;
+ uint32_t dongle_max_pix_clk;
+ bool converter_disable_audio;
++ void *priv;
+ };
+
+ void dc_sink_retain(const struct dc_sink *sink);
+--
+2.7.4
+