aboutsummaryrefslogtreecommitdiffstats
path: root/common/recipes-kernel/linux/files/0763-drm-amd-dal-Add-hpd-filter-delay-for-DP-hotplug.patch
blob: ccec282a294dc8d693ea1b4c1848eba4d415e224 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
From 0fda37e836873f9f2e2cbaa244d43d929d20a760 Mon Sep 17 00:00:00 2001
From: Jordan Lazare <Jordan.Lazare@amd.com>
Date: Tue, 2 Feb 2016 17:28:12 -0500
Subject: [PATCH 0763/1110] drm/amd/dal: Add hpd filter delay for DP hotplug

Signed-off-by: Jordan Lazare <Jordan.Lazare@amd.com>
Acked-by: Harry Wentland <harry.wentland@amd.com>
---
 drivers/gpu/drm/amd/dal/dc/core/dc_link.c | 25 ++++++++++++++-----------
 1 file changed, 14 insertions(+), 11 deletions(-)

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 2db5147..b0ef028 100644
--- a/drivers/gpu/drm/amd/dal/dc/core/dc_link.c
+++ b/drivers/gpu/drm/amd/dal/dc/core/dc_link.c
@@ -45,9 +45,6 @@
 		LOG_MAJOR_HW_TRACE, LOG_MINOR_HW_TRACE_HOTPLUG, \
 		__VA_ARGS__)
 
-#define DELAY_ON_CONNECT_IN_MS 500
-#define DELAY_ON_DISCONNECT_IN_MS 100
-
 
 /*******************************************************************************
  * Private structures
@@ -89,20 +86,28 @@ static bool program_hpd_filter(
 
 	struct irq *hpd;
 
-	/* Verify feature is supported */
+	int delay_on_connect_in_ms = 0;
+	int delay_on_disconnect_in_ms = 0;
 
+	/* Verify feature is supported */
 	switch (link->public.connector_signal) {
 	case SIGNAL_TYPE_DVI_SINGLE_LINK:
 	case SIGNAL_TYPE_DVI_DUAL_LINK:
 	case SIGNAL_TYPE_HDMI_TYPE_A:
-		/* program hpd filter */
+		/* Program hpd filter */
+		delay_on_connect_in_ms = 500;
+		delay_on_disconnect_in_ms = 100;
 		break;
-	case SIGNAL_TYPE_LVDS:
 	case SIGNAL_TYPE_DISPLAY_PORT:
 	case SIGNAL_TYPE_DISPLAY_PORT_MST:
+		/* Program hpd filter to allow DP signal to settle */
+		delay_on_connect_in_ms = 20;
+		delay_on_disconnect_in_ms = 0;
+		break;
+	case SIGNAL_TYPE_LVDS:
 	case SIGNAL_TYPE_EDP:
 	default:
-		/* don't program hpd filter */
+		/* Don't program hpd filter */
 		return false;
 	}
 
@@ -114,12 +119,11 @@ static bool program_hpd_filter(
 		return result;
 
 	/* Setup HPD filtering */
-
 	if (dal_irq_open(hpd) == GPIO_RESULT_OK) {
 		struct gpio_hpd_config config;
 
-		config.delay_on_connect = DELAY_ON_CONNECT_IN_MS;
-		config.delay_on_disconnect = DELAY_ON_DISCONNECT_IN_MS;
+		config.delay_on_connect = delay_on_connect_in_ms;
+		config.delay_on_disconnect = delay_on_disconnect_in_ms;
 
 		dal_irq_setup_hpd_filter(hpd, &config);
 
@@ -131,7 +135,6 @@ static bool program_hpd_filter(
 	}
 
 	/* Release HPD handle */
-
 	dal_adapter_service_release_irq(link->adapter_srv, hpd);
 
 	return result;
-- 
2.7.4