aboutsummaryrefslogtreecommitdiffstats
path: root/common/recipes-kernel/linux/files/0755-drm-amd-dal-add-kernel-version-control-for-mst.patch
diff options
context:
space:
mode:
Diffstat (limited to 'common/recipes-kernel/linux/files/0755-drm-amd-dal-add-kernel-version-control-for-mst.patch')
-rw-r--r--common/recipes-kernel/linux/files/0755-drm-amd-dal-add-kernel-version-control-for-mst.patch241
1 files changed, 241 insertions, 0 deletions
diff --git a/common/recipes-kernel/linux/files/0755-drm-amd-dal-add-kernel-version-control-for-mst.patch b/common/recipes-kernel/linux/files/0755-drm-amd-dal-add-kernel-version-control-for-mst.patch
new file mode 100644
index 00000000..28ea6eb1
--- /dev/null
+++ b/common/recipes-kernel/linux/files/0755-drm-amd-dal-add-kernel-version-control-for-mst.patch
@@ -0,0 +1,241 @@
+From 0bbf8cfd004910d6cdb502c3147d3a4acac0bf52 Mon Sep 17 00:00:00 2001
+From: Eric Yang <eric.yang2@amd.com>
+Date: Mon, 1 Feb 2016 16:32:21 -0500
+Subject: [PATCH 0755/1110] drm/amd/dal: add kernel version control for mst
+
+resolve 4.2 dependencies when using dkms
+
+Signed-off-by: Eric Yang <eric.yang2@amd.com>
+Reviewed-by: Harry Wentland <harry.wentland@amd.com>
+---
+ drivers/gpu/drm/amd/dal/amdgpu_dm/amdgpu_dm.c | 2 +-
+ .../gpu/drm/amd/dal/amdgpu_dm/amdgpu_dm_helpers.c | 29 +++++++++++++++++++++-
+ .../drm/amd/dal/amdgpu_dm/amdgpu_dm_mst_types.c | 11 ++++++--
+ 3 files changed, 38 insertions(+), 4 deletions(-)
+
+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 47de461..c758fc6 100644
+--- a/drivers/gpu/drm/amd/dal/amdgpu_dm/amdgpu_dm.c
++++ b/drivers/gpu/drm/amd/dal/amdgpu_dm/amdgpu_dm.c
+@@ -608,7 +608,7 @@ static void detect_link_for_all_connectors(struct drm_device *dev)
+
+ drm_modeset_lock(&dev->mode_config.connection_mutex, NULL);
+
+- drm_for_each_connector(connector, dev) {
++ list_for_each_entry(connector, &dev->mode_config.connector_list, head) {
+ 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",
+diff --git a/drivers/gpu/drm/amd/dal/amdgpu_dm/amdgpu_dm_helpers.c b/drivers/gpu/drm/amd/dal/amdgpu_dm/amdgpu_dm_helpers.c
+index e2c68fd..bbc60a6 100644
+--- a/drivers/gpu/drm/amd/dal/amdgpu_dm/amdgpu_dm_helpers.c
++++ b/drivers/gpu/drm/amd/dal/amdgpu_dm/amdgpu_dm_helpers.c
+@@ -25,6 +25,7 @@
+
+ #include <linux/string.h>
+ #include <linux/acpi.h>
++#include <linux/version.h>
+
+ #include <drm/drmP.h>
+ #include <drm/drm_crtc_helper.h>
+@@ -126,7 +127,7 @@ enum dc_edid_status dm_helpers_parse_edid_caps(
+ return result;
+ }
+
+-
++#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 3, 0)
+ static struct amdgpu_connector *get_connector_for_sink(
+ struct drm_device *dev,
+ const struct dc_sink *sink)
+@@ -142,6 +143,7 @@ static struct amdgpu_connector *get_connector_for_sink(
+
+ return aconnector;
+ }
++#endif
+
+ static struct amdgpu_connector *get_connector_for_link(
+ struct drm_device *dev,
+@@ -159,6 +161,8 @@ static struct amdgpu_connector *get_connector_for_link(
+ return aconnector;
+ }
+
++
++#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 3, 0)
+ static void get_payload_table(
+ struct amdgpu_connector *aconnector,
+ struct dp_mst_stream_allocation_table *proposed_table)
+@@ -195,6 +199,7 @@ static void get_payload_table(
+
+ mutex_unlock(&mst_mgr->payload_lock);
+ }
++#endif
+
+ /*
+ * Writes payload allocation table in immediate downstream device.
+@@ -205,6 +210,7 @@ bool dm_helpers_dp_mst_write_payload_allocation_table(
+ struct dp_mst_stream_allocation_table *proposed_table,
+ bool enable)
+ {
++#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 3, 0)
+ struct amdgpu_device *adev = ctx->driver_context;
+ struct drm_device *dev = adev->ddev;
+ struct amdgpu_connector *aconnector;
+@@ -284,6 +290,9 @@ bool dm_helpers_dp_mst_write_payload_allocation_table(
+ return false;
+
+ return true;
++#else
++ return false;
++#endif
+ }
+
+ /*
+@@ -294,6 +303,7 @@ bool dm_helpers_dp_mst_poll_for_allocation_change_trigger(
+ struct dc_context *ctx,
+ const struct dc_stream *stream)
+ {
++#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 3, 0)
+ struct amdgpu_device *adev = ctx->driver_context;
+ struct drm_device *dev = adev->ddev;
+ struct amdgpu_connector *aconnector;
+@@ -316,6 +326,9 @@ bool dm_helpers_dp_mst_poll_for_allocation_change_trigger(
+ return false;
+
+ return true;
++#else
++ return false;
++#endif
+ }
+
+ bool dm_helpers_dp_mst_send_payload_allocation(
+@@ -323,6 +336,7 @@ bool dm_helpers_dp_mst_send_payload_allocation(
+ const struct dc_stream *stream,
+ bool enable)
+ {
++#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 3, 0)
+ struct amdgpu_device *adev = ctx->driver_context;
+ struct drm_device *dev = adev->ddev;
+ struct amdgpu_connector *aconnector;
+@@ -351,10 +365,14 @@ bool dm_helpers_dp_mst_send_payload_allocation(
+ drm_dp_mst_deallocate_vcpi(mst_mgr, mst_port);
+
+ return true;
++#else
++ return false;
++#endif
+ }
+
+ void dm_helpers_dp_mst_handle_mst_hpd_rx_irq(void *param)
+ {
++#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 3, 0)
+ uint8_t esi[8] = { 0 };
+ uint8_t dret;
+ bool new_irq_handled = true;
+@@ -393,6 +411,9 @@ void dm_helpers_dp_mst_handle_mst_hpd_rx_irq(void *param)
+ DP_SINK_COUNT_ESI, esi, 8);
+ }
+ }
++#else
++ return false;
++#endif
+ }
+
+ bool dm_helpers_dp_mst_start_top_mgr(
+@@ -400,6 +421,7 @@ bool dm_helpers_dp_mst_start_top_mgr(
+ const struct dc_link *link,
+ bool boot)
+ {
++#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 3, 0)
+ struct amdgpu_device *adev = ctx->driver_context;
+ struct drm_device *dev = adev->ddev;
+ struct amdgpu_connector *aconnector = get_connector_for_link(dev, link);
+@@ -414,12 +436,16 @@ bool dm_helpers_dp_mst_start_top_mgr(
+ aconnector, aconnector->base.base.id);
+
+ return (drm_dp_mst_topology_mgr_set_mst(&aconnector->mst_mgr, true) == 0);
++#else
++ return false;
++#endif
+ }
+
+ void dm_helpers_dp_mst_stop_top_mgr(
+ struct dc_context *ctx,
+ const struct dc_link *link)
+ {
++#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 3, 0)
+ struct amdgpu_device *adev = ctx->driver_context;
+ struct drm_device *dev = adev->ddev;
+ struct amdgpu_connector *aconnector = get_connector_for_link(dev, link);
+@@ -429,6 +455,7 @@ void dm_helpers_dp_mst_stop_top_mgr(
+
+ if (aconnector->mst_mgr.mst_state == true)
+ drm_dp_mst_topology_mgr_set_mst(&aconnector->mst_mgr, false);
++#endif
+ }
+
+ bool dm_helper_dp_read_dpcd(
+diff --git a/drivers/gpu/drm/amd/dal/amdgpu_dm/amdgpu_dm_mst_types.c b/drivers/gpu/drm/amd/dal/amdgpu_dm/amdgpu_dm_mst_types.c
+index 3f1d545..2362003 100644
+--- a/drivers/gpu/drm/amd/dal/amdgpu_dm/amdgpu_dm_mst_types.c
++++ b/drivers/gpu/drm/amd/dal/amdgpu_dm/amdgpu_dm_mst_types.c
+@@ -23,6 +23,7 @@
+ *
+ */
+
++#include <linux/version.h>
+ #include <drm/drm_atomic_helper.h>
+ #include "dm_services.h"
+ #include "amdgpu.h"
+@@ -32,6 +33,7 @@
+ #include "dc.h"
+ #include "dm_helpers.h"
+
++
+ /* #define TRACE_DPCD */
+
+ #ifdef TRACE_DPCD
+@@ -114,6 +116,7 @@ static ssize_t dm_dp_aux_transfer(struct drm_dp_aux *aux, struct drm_dp_aux_msg
+ return msg->size;
+ }
+
++#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 3, 0)
+ static enum drm_connector_status
+ dm_dp_mst_detect(struct drm_connector *connector, bool force)
+ {
+@@ -323,7 +326,7 @@ static struct drm_connector *dm_dp_add_mst_connector(struct drm_dp_mst_topology_
+ struct drm_connector *connector;
+
+ drm_modeset_lock(&dev->mode_config.connection_mutex, NULL);
+- drm_for_each_connector(connector, dev) {
++ list_for_each_entry(connector, &dev->mode_config.connector_list, head) {
+ aconnector = to_amdgpu_connector(connector);
+ if (aconnector->mst_port == master
+ && !aconnector->port) {
+@@ -454,6 +457,8 @@ struct drm_dp_mst_topology_cbs dm_mst_cbs = {
+ .hotplug = dm_dp_mst_hotplug,
+ .register_connector = dm_dp_mst_register_connector
+ };
++#endif
++
+
+ void amdgpu_dm_initialize_mst_connector(
+ struct amdgpu_display_manager *dm,
+@@ -465,7 +470,7 @@ void amdgpu_dm_initialize_mst_connector(
+ aconnector->dm_dp_aux.link_index = aconnector->connector_id;
+
+ drm_dp_aux_register(&aconnector->dm_dp_aux.aux);
+-
++#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 3, 0)
+ aconnector->mst_mgr.cbs = &dm_mst_cbs;
+ drm_dp_mst_topology_mgr_init(
+ &aconnector->mst_mgr,
+@@ -474,4 +479,6 @@ void amdgpu_dm_initialize_mst_connector(
+ 16,
+ 4,
+ aconnector->connector_id);
++#endif
+ }
++
+--
+2.7.4
+