aboutsummaryrefslogtreecommitdiffstats
path: root/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/0318-drm-amd-display-Remove-get_connector_for_link.patch
diff options
context:
space:
mode:
Diffstat (limited to 'meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/0318-drm-amd-display-Remove-get_connector_for_link.patch')
-rw-r--r--meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/0318-drm-amd-display-Remove-get_connector_for_link.patch128
1 files changed, 128 insertions, 0 deletions
diff --git a/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/0318-drm-amd-display-Remove-get_connector_for_link.patch b/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/0318-drm-amd-display-Remove-get_connector_for_link.patch
new file mode 100644
index 00000000..86bc62a6
--- /dev/null
+++ b/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/0318-drm-amd-display-Remove-get_connector_for_link.patch
@@ -0,0 +1,128 @@
+From 0d7cce54f629f37d4f3e5c20ef9c6927e863d60a Mon Sep 17 00:00:00 2001
+From: Andrey Grodzovsky <Andrey.Grodzovsky@amd.com>
+Date: Tue, 14 Feb 2017 13:50:17 -0500
+Subject: [PATCH 0318/4131] drm/amd/display: Remove get_connector_for_link.
+
+We can keep a 1:1 relation between a link and a physical
+connector and hence skip the iteration. This function
+is used in context of only physical connetors.
+
+Signed-off-by: Andrey Grodzovsky <Andrey.Grodzovsky@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 | 36 +++-------------------
+ .../drm/amd/display/amdgpu_dm/amdgpu_dm_types.c | 1 +
+ drivers/gpu/drm/amd/display/dc/dc.h | 2 ++
+ 3 files changed, 8 insertions(+), 31 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 e503677..961d8d1 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
+@@ -148,21 +148,6 @@ static struct amdgpu_connector *get_connector_for_sink(
+ return NULL;
+ }
+
+-static struct amdgpu_connector *get_connector_for_link(
+- struct drm_device *dev,
+- const struct dc_link *link)
+-{
+- 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_link == link)
+- return aconnector;
+- }
+-
+- return NULL;
+-}
+-
+ static void get_payload_table(
+ struct amdgpu_connector *aconnector,
+ struct dp_mst_stream_allocation_table *proposed_table)
+@@ -362,9 +347,7 @@ bool dm_helpers_dp_mst_start_top_mgr(
+ 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);
++ struct amdgpu_connector *aconnector = link->priv;
+
+ if (!aconnector) {
+ DRM_ERROR("Failed to found connector for link!");
+@@ -387,9 +370,7 @@ void dm_helpers_dp_mst_stop_top_mgr(
+ struct dc_context *ctx,
+ const struct dc_link *link)
+ {
+- struct amdgpu_device *adev = ctx->driver_context;
+- struct drm_device *dev = adev->ddev;
+- struct amdgpu_connector *aconnector = get_connector_for_link(dev, link);
++ struct amdgpu_connector *aconnector = link->priv;
+
+ if (!aconnector) {
+ DRM_ERROR("Failed to found connector for link!");
+@@ -411,9 +392,7 @@ bool dm_helpers_dp_read_dpcd(
+ uint32_t size)
+ {
+
+- struct amdgpu_device *adev = ctx->driver_context;
+- struct drm_device *dev = adev->ddev;
+- struct amdgpu_connector *aconnector = get_connector_for_link(dev, link);
++ struct amdgpu_connector *aconnector = link->priv;
+
+ if (!aconnector) {
+ DRM_ERROR("Failed to found connector for link!");
+@@ -431,10 +410,7 @@ bool dm_helpers_dp_write_dpcd(
+ const uint8_t *data,
+ uint32_t size)
+ {
+-
+- struct amdgpu_device *adev = ctx->driver_context;
+- struct drm_device *dev = adev->ddev;
+- struct amdgpu_connector *aconnector = get_connector_for_link(dev, link);
++ struct amdgpu_connector *aconnector = link->priv;
+
+ if (!aconnector) {
+ DRM_ERROR("Failed to found connector for link!");
+@@ -450,9 +426,7 @@ bool dm_helpers_submit_i2c(
+ const struct dc_link *link,
+ struct i2c_command *cmd)
+ {
+- struct amdgpu_device *adev = ctx->driver_context;
+- struct drm_device *dev = adev->ddev;
+- struct amdgpu_connector *aconnector = get_connector_for_link(dev, link);
++ struct amdgpu_connector *aconnector = link->priv;
+ struct i2c_msg *msgs;
+ int i = 0;
+ int num = cmd->number_of_payloads;
+diff --git a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_types.c b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_types.c
+index 1b23081..bf38bdd 100644
+--- a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_types.c
++++ b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_types.c
+@@ -2173,6 +2173,7 @@ int amdgpu_dm_connector_init(
+ struct dc *dc = dm->dc;
+ const struct dc_link *link = dc_get_link_at_index(dc, link_index);
+ struct amdgpu_i2c_adapter *i2c;
++ ((struct dc_link *)link)->priv = aconnector;
+
+ DRM_DEBUG_KMS("%s()\n", __func__);
+
+diff --git a/drivers/gpu/drm/amd/display/dc/dc.h b/drivers/gpu/drm/amd/display/dc/dc.h
+index 9dd8b2a..6bb6ad2 100644
+--- a/drivers/gpu/drm/amd/display/dc/dc.h
++++ b/drivers/gpu/drm/amd/display/dc/dc.h
+@@ -592,6 +592,8 @@ struct dc_link {
+ struct psr_caps psr_caps;
+ bool test_pattern_enabled;
+ union compliance_test_state compliance_test_state;
++
++ void *priv;
+ };
+
+ struct dpcd_caps {
+--
+2.7.4
+