aboutsummaryrefslogtreecommitdiffstats
path: root/common/recipes-kernel/linux/files/0691-drm-amd-dal-Defer-MST-start-to-after-HPD_RX-enabled-.patch
diff options
context:
space:
mode:
Diffstat (limited to 'common/recipes-kernel/linux/files/0691-drm-amd-dal-Defer-MST-start-to-after-HPD_RX-enabled-.patch')
-rw-r--r--common/recipes-kernel/linux/files/0691-drm-amd-dal-Defer-MST-start-to-after-HPD_RX-enabled-.patch207
1 files changed, 0 insertions, 207 deletions
diff --git a/common/recipes-kernel/linux/files/0691-drm-amd-dal-Defer-MST-start-to-after-HPD_RX-enabled-.patch b/common/recipes-kernel/linux/files/0691-drm-amd-dal-Defer-MST-start-to-after-HPD_RX-enabled-.patch
deleted file mode 100644
index 7e769f78..00000000
--- a/common/recipes-kernel/linux/files/0691-drm-amd-dal-Defer-MST-start-to-after-HPD_RX-enabled-.patch
+++ /dev/null
@@ -1,207 +0,0 @@
-From 067bb023f9fef32a30c1ca1974a38f97ab4ea338 Mon Sep 17 00:00:00 2001
-From: Andrey Grodzovsky <Andrey.Grodzovsky@amd.com>
-Date: Wed, 13 Jan 2016 14:49:57 -0500
-Subject: [PATCH 0691/1110] drm/amd/dal: Defer MST start to after HPD_RX
- enabled on boot.
-
-Signed-off-by: Andrey Grodzovsky <Andrey.Grodzovsky@amd.com>
-Acked-by: Jordan Lazare <Jordan.Lazare@amd.com>
----
- .../gpu/drm/amd/dal/amdgpu_dm/amdgpu_dc_helpers.c | 13 +++++---
- drivers/gpu/drm/amd/dal/amdgpu_dm/amdgpu_dm.c | 37 +++++++++++++++++++---
- drivers/gpu/drm/amd/dal/dc/core/dc_link.c | 9 +++---
- drivers/gpu/drm/amd/dal/dc/dc.h | 3 +-
- drivers/gpu/drm/amd/dal/dc/dc_helpers.h | 3 +-
- 5 files changed, 51 insertions(+), 14 deletions(-)
-
-diff --git a/drivers/gpu/drm/amd/dal/amdgpu_dm/amdgpu_dc_helpers.c b/drivers/gpu/drm/amd/dal/amdgpu_dm/amdgpu_dc_helpers.c
-index ff9b5c1..855f9f9 100644
---- a/drivers/gpu/drm/amd/dal/amdgpu_dm/amdgpu_dc_helpers.c
-+++ b/drivers/gpu/drm/amd/dal/amdgpu_dm/amdgpu_dc_helpers.c
-@@ -431,18 +431,23 @@ void dc_helpers_dp_mst_handle_mst_hpd_rx_irq(void *param)
-
- bool dc_helpers_dp_mst_start_top_mgr(
- struct dc_context *ctx,
-- const struct dc_link *link)
-+ const struct dc_link *link,
-+ bool boot)
- {
- struct amdgpu_device *adev = ctx->driver_context;
- struct drm_device *dev = adev->ddev;
- struct amdgpu_connector *aconnector = get_connector_for_link(dev, link);
-
-+ if (boot) {
-+ DRM_INFO("DM_MST: Differing MST start on aconnector: %p [id: %d]\n",
-+ aconnector, aconnector->base.base.id);
-+ return true;
-+ }
-+
- DRM_INFO("DM_MST: starting TM on aconnector: %p [id: %d]\n",
- aconnector, aconnector->base.base.id);
-
-- drm_dp_mst_topology_mgr_set_mst(&aconnector->mst_mgr, true);
--
-- return true;
-+ return (drm_dp_mst_topology_mgr_set_mst(&aconnector->mst_mgr, true) == 0);
- }
-
- void dc_helpers_dp_mst_stop_top_mgr(
-diff --git a/drivers/gpu/drm/amd/dal/amdgpu_dm/amdgpu_dm.c b/drivers/gpu/drm/amd/dal/amdgpu_dm/amdgpu_dm.c
-index cee507c..0f281b6 100644
---- a/drivers/gpu/drm/amd/dal/amdgpu_dm/amdgpu_dm.c
-+++ b/drivers/gpu/drm/amd/dal/amdgpu_dm/amdgpu_dm.c
-@@ -461,7 +461,7 @@ static void detect_on_all_dc_links(struct amdgpu_display_manager *dm)
-
- for (i = 0; i < caps.max_links; i++) {
- dc_link = dc_get_link_at_index(dm->dc, i);
-- dc_link_detect(dc_link);
-+ dc_link_detect(dc_link, false);
- }
- }
-
-@@ -612,6 +612,31 @@ static int dm_sw_fini(void *handle)
- return 0;
- }
-
-+
-+static void detect_link_for_all_connectors(struct drm_device *dev)
-+{
-+ struct amdgpu_connector *aconnector;
-+ struct drm_connector *connector;
-+
-+ drm_modeset_lock(&dev->mode_config.connection_mutex, NULL);
-+
-+ drm_for_each_connector(connector, dev) {
-+ aconnector = to_amdgpu_connector(connector);
-+ if (aconnector->dc_link->type == dc_connection_mst_branch) {
-+ DRM_INFO("DM_MST: starting TM on aconnector: %p [id: %d]\n",
-+ aconnector, aconnector->base.base.id);
-+
-+ if (drm_dp_mst_topology_mgr_set_mst(&aconnector->mst_mgr, true) < 0) {
-+ DRM_ERROR("DM_MST: Failed to start MST\n");
-+ ((struct dc_link *)aconnector->dc_link)->type = dc_connection_single;
-+ }
-+ }
-+ }
-+
-+ drm_modeset_unlock(&dev->mode_config.connection_mutex);
-+}
-+
-+
- static int dm_hw_init(void *handle)
- {
- struct amdgpu_device *adev = (struct amdgpu_device *)handle;
-@@ -620,6 +645,10 @@ static int dm_hw_init(void *handle)
-
- amdgpu_dm_hpd_init(adev);
-
-+ detect_link_for_all_connectors(adev->ddev);
-+
-+
-+
- return 0;
- }
-
-@@ -765,7 +794,7 @@ static void handle_hpd_irq(void *param)
- /* In case of failure or MST no need to update connector status or notify the OS
- * since (for MST case) MST does this in it's own context.
- */
-- if (dc_link_detect(aconnector->dc_link)) {
-+ if (dc_link_detect(aconnector->dc_link, false)) {
- amdgpu_dm_update_connector_after_detect(aconnector);
- drm_kms_helper_hotplug_event(dev);
- }
-@@ -781,7 +810,7 @@ static void handle_hpd_rx_irq(void *param)
- if (dc_link_handle_hpd_rx_irq(aconnector->dc_link) &&
- !is_mst_root_connector) {
- /* Downstream Port status changed. */
-- if (dc_link_detect(aconnector->dc_link)) {
-+ if (dc_link_detect(aconnector->dc_link, false)) {
- amdgpu_dm_update_connector_after_detect(aconnector);
- drm_kms_helper_hotplug_event(dev);
- }
-@@ -1057,7 +1086,7 @@ int amdgpu_dm_initialize_drm_device(struct amdgpu_device *adev)
- goto fail_free_connector;
- }
-
-- if (dc_link_detect(dc_get_link_at_index(dm->dc, i)))
-+ if (dc_link_detect(dc_get_link_at_index(dm->dc, i), true))
- amdgpu_dm_update_connector_after_detect(
- aconnector);
- }
-diff --git a/drivers/gpu/drm/amd/dal/dc/core/dc_link.c b/drivers/gpu/drm/amd/dal/dc/core/dc_link.c
-index a994a4c..b034c2f 100644
---- a/drivers/gpu/drm/amd/dal/dc/core/dc_link.c
-+++ b/drivers/gpu/drm/amd/dal/dc/core/dc_link.c
-@@ -469,7 +469,8 @@ static void detect_dp(
- struct core_link *link,
- struct display_sink_capability *sink_caps,
- bool *converter_disable_audio,
-- union audio_support *audio_support)
-+ union audio_support *audio_support,
-+ bool boot)
- {
- sink_caps->signal = link_detect_sink(link);
- sink_caps->transaction_type =
-@@ -525,7 +526,7 @@ static void detect_dp(
-
- if (dc_helpers_dp_mst_start_top_mgr(
- link->ctx,
-- &link->public)) {
-+ &link->public, boot)) {
- link->public.type = dc_connection_mst_branch;
- } else {
- /* MST not supported */
-@@ -540,7 +541,7 @@ static void detect_dp(
- }
- }
-
--bool dc_link_detect(const struct dc_link *dc_link)
-+bool dc_link_detect(const struct dc_link *dc_link, bool boot)
- {
- struct core_link *link = DC_LINK_TO_LINK(dc_link);
- struct dc_sink_init_data sink_init_data = { 0 };
-@@ -605,7 +606,7 @@ bool dc_link_detect(const struct dc_link *dc_link)
- link,
- &sink_caps,
- &converter_disable_audio,
-- &audio_support);
-+ &audio_support, boot);
-
- if (link->public.type == dc_connection_mst_branch)
- return false;
-diff --git a/drivers/gpu/drm/amd/dal/dc/dc.h b/drivers/gpu/drm/amd/dal/dc/dc.h
-index a2f26cb..f86ddb0 100644
---- a/drivers/gpu/drm/amd/dal/dc/dc.h
-+++ b/drivers/gpu/drm/amd/dal/dc/dc.h
-@@ -297,11 +297,12 @@ const struct graphics_object_id dc_get_link_id_at_index(
- bool dc_link_set_backlight_level(const struct dc_link *dc_link, uint32_t level);
-
- /* Request DC to detect if there is a Panel connected.
-+ * boot - If this call is during initial boot.
- * Return false for any type of detection failure or MST detection
- * true otherwise. True meaning further action is required (status update
- * and OS notification).
- */
--bool dc_link_detect(const struct dc_link *dc_link);
-+bool dc_link_detect(const struct dc_link *dc_link, bool boot);
-
- /* Notify DC about DP RX Interrupt (aka Short Pulse Interrupt).
- * Return:
-diff --git a/drivers/gpu/drm/amd/dal/dc/dc_helpers.h b/drivers/gpu/drm/amd/dal/dc/dc_helpers.h
-index b4c338a..7a14300 100644
---- a/drivers/gpu/drm/amd/dal/dc/dc_helpers.h
-+++ b/drivers/gpu/drm/amd/dal/dc/dc_helpers.h
-@@ -67,7 +67,8 @@ void dc_helpers_dp_mst_handle_mst_hpd_rx_irq(
-
- bool dc_helpers_dp_mst_start_top_mgr(
- struct dc_context *ctx,
-- const struct dc_link *link);
-+ const struct dc_link *link,
-+ bool boot);
-
- void dc_helpers_dp_mst_stop_top_mgr(
- struct dc_context *ctx,
---
-2.7.4
-