diff options
Diffstat (limited to 'common/recipes-kernel/linux/linux-yocto-4.14.71/0319-drm-amd-display-Remove-get_connector_for_sink.patch')
-rw-r--r-- | common/recipes-kernel/linux/linux-yocto-4.14.71/0319-drm-amd-display-Remove-get_connector_for_sink.patch | 136 |
1 files changed, 136 insertions, 0 deletions
diff --git a/common/recipes-kernel/linux/linux-yocto-4.14.71/0319-drm-amd-display-Remove-get_connector_for_sink.patch b/common/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/common/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 + |