diff options
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.patch | 241 |
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 + |