Blob Blame History Raw
From: Corbin McElhanney <corbin.mcelhanney@amd.com>
Date: Fri, 23 Jun 2017 17:45:50 -0400
Subject: drm/amd/display: Add extra mode and clock info to DTN logs
Git-commit: 9ff1bb090b40949cddfbb904e613395ad2633fc7
Patch-mainline: v4.15-rc1
References: FATE#326289 FATE#326079 FATE#326049 FATE#322398 FATE#326166

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>
Acked-by: Petr Tesarik <ptesarik@suse.com>
---
 drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_helpers.c |    2 
 drivers/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 -
 drivers/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(-)

--- 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_allo
 	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;
 }
--- 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);
--- 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
 		{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
 		(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) | \
--- 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);
--- 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,
--- 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,
--- 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,