aboutsummaryrefslogtreecommitdiffstats
path: root/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/0560-drm-amd-display-Add-extra-mode-and-clock-info-to-DTN.patch
blob: a6581981f86f45c573aff80a30b37e9bf3bc8351 (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
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
From 762d7cc071cdd08d6c046a3adf4663f986d4caa0 Mon Sep 17 00:00:00 2001
From: Corbin McElhanney <corbin.mcelhanney@amd.com>
Date: Fri, 23 Jun 2017 17:45:50 -0400
Subject: [PATCH 0560/4131] drm/amd/display: Add extra mode and clock info to
 DTN logs

Adds some additional information to logs in dc_commit_streams to
better match Dal2.

Also adds a new function, dc_raw_log, that has the same
functionality as dc_conn_log, but does not attach display specific
prefixes to the log output.

Finally, adds a new DC log type, LOG_DTN, that logs to
LogMinor_DispConnect_dtn in DM. This new log type and dc_raw_log
are used to generate clock info in the logs to match Dal2.

Signed-off-by: Corbin McElhanney <corbin.mcelhanney@amd.com>
Reviewed-by: Aric Cyr <Aric.Cyr@amd.com>
Acked-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  |  2 +-
 .../gpu/drm/amd/display/dc/basics/log_helpers.c    | 30 +++++++++++++++++++++-
 drivers/gpu/drm/amd/display/dc/basics/logger.c     |  6 +++--
 drivers/gpu/drm/amd/display/dc/core/dc.c           |  7 ++++-
 drivers/gpu/drm/amd/display/dc/dm_helpers.h        |  3 ++-
 .../gpu/drm/amd/display/include/logger_interface.h |  5 ++++
 drivers/gpu/drm/amd/display/include/logger_types.h |  1 +
 7 files changed, 48 insertions(+), 6 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 64db62e..df4d221 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
@@ -322,7 +322,7 @@ bool dm_helpers_dp_mst_send_payload_allocation(
 	return true;
 }
 
-bool dm_helpers_dc_conn_log(struct dc_context*ctx, const char *msg)
+bool dm_helpers_dc_conn_log(struct dc_context *ctx, struct log_entry *entry, enum dc_log_type event)
 {
 	return true;
 }
diff --git a/drivers/gpu/drm/amd/display/dc/basics/log_helpers.c b/drivers/gpu/drm/amd/display/dc/basics/log_helpers.c
index 1268be9..070ae6f 100644
--- a/drivers/gpu/drm/amd/display/dc/basics/log_helpers.c
+++ b/drivers/gpu/drm/amd/display/dc/basics/log_helpers.c
@@ -95,7 +95,35 @@ void dc_conn_log(struct dc_context *ctx,
 			dm_logger_append(&entry, "%2.2X ", hex_data[i]);
 
 	dm_logger_append(&entry, "^\n");
-	dm_helpers_dc_conn_log(ctx, entry.buf);
+	dm_helpers_dc_conn_log(ctx, &entry, event);
+	dm_logger_close(&entry);
+
+	va_end(args);
+}
+
+void dc_raw_log(struct dc_context *ctx,
+		enum dc_log_type event,
+		const char *msg,
+		...)
+{
+	va_list args;
+	struct log_entry entry = { 0 };
+
+	dm_logger_open(ctx->logger, &entry, event);
+
+	va_start(args, msg);
+	entry.buf_offset += dm_log_to_buffer(
+		&entry.buf[entry.buf_offset],
+		LOG_MAX_LINE_SIZE - entry.buf_offset,
+		msg, args);
+
+	if (entry.buf[strlen(entry.buf) - 1] == '\n') {
+		entry.buf[strlen(entry.buf) - 1] = '\0';
+		entry.buf_offset--;
+	}
+
+	dm_logger_append(&entry, "^\n");
+	dm_helpers_dc_conn_log(ctx, &entry, event);
 	dm_logger_close(&entry);
 
 	va_end(args);
diff --git a/drivers/gpu/drm/amd/display/dc/basics/logger.c b/drivers/gpu/drm/amd/display/dc/basics/logger.c
index 4be8370..0b17374 100644
--- a/drivers/gpu/drm/amd/display/dc/basics/logger.c
+++ b/drivers/gpu/drm/amd/display/dc/basics/logger.c
@@ -59,7 +59,8 @@ static const struct dc_log_type_info log_type_info_tbl[] = {
 		{LOG_EVENT_LINK_TRAINING,   "LKTN"},
 		{LOG_EVENT_LINK_LOSS,       "LinkLoss"},
 		{LOG_EVENT_UNDERFLOW,       "Underflow"},
-		{LOG_IF_TRACE,				"InterfaceTrace"}
+		{LOG_IF_TRACE,              "InterfaceTrace"},
+		{LOG_DTN,                   "DTN"}
 };
 
 
@@ -84,7 +85,8 @@ static const struct dc_log_type_info log_type_info_tbl[] = {
 		(1 << LOG_DETECTION_DP_CAPS) | \
 		(1 << LOG_BACKLIGHT)) | \
 		(1 << LOG_I2C_AUX) | \
-		(1 << LOG_IF_TRACE) /* | \
+		(1 << LOG_IF_TRACE) | \
+		(1 << LOG_DTN) /* | \
 		(1 << LOG_DEBUG) | \
 		(1 << LOG_BIOS) | \
 		(1 << LOG_SURFACE) | \
diff --git a/drivers/gpu/drm/amd/display/dc/core/dc.c b/drivers/gpu/drm/amd/display/dc/core/dc.c
index 51e4cb3..c113c1a 100644
--- a/drivers/gpu/drm/amd/display/dc/core/dc.c
+++ b/drivers/gpu/drm/amd/display/dc/core/dc.c
@@ -944,9 +944,14 @@ bool dc_commit_streams(
 			dc_enable_stereo(dc, context, streams, stream_count);
 		}
 
-		CONN_MSG_MODE(sink->link, "{%dx%d, %dx%d@%dKhz}",
+		CONN_MSG_MODE(sink->link, "{%ux%u, %ux%u@%u, %ux%u@%uKhz}",
+				context->streams[i]->public.src.width,
+				context->streams[i]->public.src.height,
 				context->streams[i]->public.timing.h_addressable,
 				context->streams[i]->public.timing.v_addressable,
+				context->streams[i]->public.timing.pix_clk_khz * 1000 /
+					context->streams[i]->public.timing.h_total /
+					context->streams[i]->public.timing.v_total, // Refresh rate
 				context->streams[i]->public.timing.h_total,
 				context->streams[i]->public.timing.v_total,
 				context->streams[i]->public.timing.pix_clk_khz);
diff --git a/drivers/gpu/drm/amd/display/dc/dm_helpers.h b/drivers/gpu/drm/amd/display/dc/dm_helpers.h
index 9fb606c..a831421 100644
--- a/drivers/gpu/drm/amd/display/dc/dm_helpers.h
+++ b/drivers/gpu/drm/amd/display/dc/dm_helpers.h
@@ -70,7 +70,8 @@ bool dm_helpers_dp_mst_start_top_mgr(
 
 bool dm_helpers_dc_conn_log(
 		struct dc_context*ctx,
-		const char *msg);
+		struct log_entry *entry,
+		enum dc_log_type event);
 
 void dm_helpers_dp_mst_stop_top_mgr(
 		struct dc_context *ctx,
diff --git a/drivers/gpu/drm/amd/display/include/logger_interface.h b/drivers/gpu/drm/amd/display/include/logger_interface.h
index b75c343..ce5fef2 100644
--- a/drivers/gpu/drm/amd/display/include/logger_interface.h
+++ b/drivers/gpu/drm/amd/display/include/logger_interface.h
@@ -70,6 +70,11 @@ void dc_conn_log(struct dc_context *ctx,
 		const char *msg,
 		...);
 
+void dc_raw_log(struct dc_context *ctx,
+		enum dc_log_type event,
+		const char *msg,
+		...);
+
 void logger_write(struct dal_logger *logger,
 		enum dc_log_type log_type,
 		const char *msg,
diff --git a/drivers/gpu/drm/amd/display/include/logger_types.h b/drivers/gpu/drm/amd/display/include/logger_types.h
index dfc0f10..42ffb93 100644
--- a/drivers/gpu/drm/amd/display/include/logger_types.h
+++ b/drivers/gpu/drm/amd/display/include/logger_types.h
@@ -37,6 +37,7 @@ enum dc_log_type {
 	LOG_WARNING,
 	LOG_DEBUG,
 	LOG_DC,
+	LOG_DTN,
 	LOG_SURFACE,
 	LOG_HW_HOTPLUG,
 	LOG_HW_LINK_TRAINING,
-- 
2.7.4