aboutsummaryrefslogtreecommitdiffstats
path: root/common/recipes-kernel/linux/files/0622-drm-amd-dal-Fix-IRQ-sources-for-HPD-control-config.patch
diff options
context:
space:
mode:
Diffstat (limited to 'common/recipes-kernel/linux/files/0622-drm-amd-dal-Fix-IRQ-sources-for-HPD-control-config.patch')
-rw-r--r--common/recipes-kernel/linux/files/0622-drm-amd-dal-Fix-IRQ-sources-for-HPD-control-config.patch82
1 files changed, 82 insertions, 0 deletions
diff --git a/common/recipes-kernel/linux/files/0622-drm-amd-dal-Fix-IRQ-sources-for-HPD-control-config.patch b/common/recipes-kernel/linux/files/0622-drm-amd-dal-Fix-IRQ-sources-for-HPD-control-config.patch
new file mode 100644
index 00000000..a5a1a86a
--- /dev/null
+++ b/common/recipes-kernel/linux/files/0622-drm-amd-dal-Fix-IRQ-sources-for-HPD-control-config.patch
@@ -0,0 +1,82 @@
+From d424d082f83547cd54d00be2d29b965143ac90d4 Mon Sep 17 00:00:00 2001
+From: David Rokhvarg <David.Rokhvarg@amd.com>
+Date: Mon, 14 Dec 2015 17:10:45 -0500
+Subject: [PATCH 0622/1110] drm/amd/dal: Fix IRQ sources for HPD
+ control/config.
+
+This resolves the "headless boot/hpd" issue by removing the
+use of "amdgpu_connector->hpd.hpd" (which was not properly
+initialized).
+Instead, only "dc_link->irq_source_hpd" will be used
+for HPD irq control/config.
+
+Signed-off-by: David Rokhvarg <David.Rokhvarg@amd.com>
+Acked-by: Jordan Lazare <Jordan.Lazare@amd.com>
+---
+ drivers/gpu/drm/amd/dal/amdgpu_dm/amdgpu_dm_irq.c | 20 ++++++++++----------
+ drivers/gpu/drm/amd/dal/amdgpu_dm/amdgpu_dm_types.c | 4 +---
+ 2 files changed, 11 insertions(+), 13 deletions(-)
+
+diff --git a/drivers/gpu/drm/amd/dal/amdgpu_dm/amdgpu_dm_irq.c b/drivers/gpu/drm/amd/dal/amdgpu_dm/amdgpu_dm_irq.c
+index 05a0053..ab6df66 100644
+--- a/drivers/gpu/drm/amd/dal/amdgpu_dm/amdgpu_dm_irq.c
++++ b/drivers/gpu/drm/amd/dal/amdgpu_dm/amdgpu_dm_irq.c
+@@ -761,9 +761,7 @@ void amdgpu_dm_hpd_init(struct amdgpu_device *adev)
+ list_for_each_entry(connector, &dev->mode_config.connector_list, head) {
+ struct amdgpu_connector *amdgpu_connector =
+ to_amdgpu_connector(connector);
+- enum dc_irq_source src =
+- amdgpu_dm_hpd_to_dal_irq_source(
+- amdgpu_connector->hpd.hpd);
++
+ const struct dc_link *dc_link = amdgpu_connector->dc_link;
+
+ if (connector->connector_type == DRM_MODE_CONNECTOR_eDP ||
+@@ -777,8 +775,7 @@ void amdgpu_dm_hpd_init(struct amdgpu_device *adev)
+ continue;
+ }
+
+- dc_interrupt_set(adev->dm.dc, src, true);
+- amdgpu_irq_get(adev, &adev->hpd_irq, amdgpu_connector->hpd.hpd);
++ dc_interrupt_set(adev->dm.dc, dc_link->irq_source_hpd, true);
+
+ if (DC_IRQ_SOURCE_INVALID != dc_link->irq_source_hpd_rx) {
+ dc_interrupt_set(adev->dm.dc,
+@@ -804,11 +801,14 @@ void amdgpu_dm_hpd_fini(struct amdgpu_device *adev)
+ list_for_each_entry(connector, &dev->mode_config.connector_list, head) {
+ struct amdgpu_connector *amdgpu_connector =
+ to_amdgpu_connector(connector);
+- enum dc_irq_source src =
+- amdgpu_dm_hpd_to_dal_irq_source(
+- amdgpu_connector->hpd.hpd);
++ const struct dc_link *dc_link = amdgpu_connector->dc_link;
+
+- dc_interrupt_set(adev->dm.dc, src, false);
+- amdgpu_irq_put(adev, &adev->hpd_irq, amdgpu_connector->hpd.hpd);
++ dc_interrupt_set(adev->dm.dc, dc_link->irq_source_hpd, false);
++
++ if (DC_IRQ_SOURCE_INVALID != dc_link->irq_source_hpd_rx) {
++ dc_interrupt_set(adev->dm.dc,
++ dc_link->irq_source_hpd_rx,
++ false);
++ }
+ }
+ }
+diff --git a/drivers/gpu/drm/amd/dal/amdgpu_dm/amdgpu_dm_types.c b/drivers/gpu/drm/amd/dal/amdgpu_dm/amdgpu_dm_types.c
+index 326242f..465d9bf 100644
+--- a/drivers/gpu/drm/amd/dal/amdgpu_dm/amdgpu_dm_types.c
++++ b/drivers/gpu/drm/amd/dal/amdgpu_dm/amdgpu_dm_types.c
+@@ -1768,9 +1768,7 @@ void amdgpu_dm_connector_init_helper(
+ aconnector->base.interlace_allowed = true;
+ aconnector->base.doublescan_allowed = true;
+ aconnector->base.dpms = DRM_MODE_DPMS_OFF;
+- aconnector->hpd.hpd = link_index; /* maps to 'enum amdgpu_hpd_id' */
+-
+-
++ aconnector->hpd.hpd = AMDGPU_HPD_NONE; /* not used */
+
+ /*configure suport HPD hot plug connector_>polled default value is 0
+ * which means HPD hot plug not supported*/
+--
+2.7.4
+