Expose key Type-C port data in i915_display_info to make it easier to
understand the port configuration and active mode, especially whether
the link is in DP-Alt or TBT-Alt, without having to scan kernel logs.
Tested in DP-Alt, TBT-Alt, SST, and MST.
Expected output:
[CONNECTOR:290:DP-2]: status: connected
TC Port: E/TC#2 mode: tbt-alt pin assignment: - max lanes: 4
physical dimensions: 600x340mm
...
[CONNECTOR:263:DP-5]: status: connected
TC Port: G/TC#4 mode: dp-alt pin assignment: C max lanes: 4
physical dimensions: 610x350mm
Cc: Imre Deak <[email protected]>
Cc: Jani Nikula <[email protected]>
Signed-off-by: Khaled Almahallawy <[email protected]>
---
drivers/gpu/drm/i915/display/intel_display_debugfs.c | 4 ++++
drivers/gpu/drm/i915/display/intel_tc.c | 10 ++++++++++
drivers/gpu/drm/i915/display/intel_tc.h | 3 +++
3 files changed, 17 insertions(+)
diff --git a/drivers/gpu/drm/i915/display/intel_display_debugfs.c
b/drivers/gpu/drm/i915/display/intel_display_debugfs.c
index 10dddec3796f..6687fc18e1f5 100644
--- a/drivers/gpu/drm/i915/display/intel_display_debugfs.c
+++ b/drivers/gpu/drm/i915/display/intel_display_debugfs.c
@@ -47,6 +47,7 @@
#include "intel_psr_regs.h"
#include "intel_vdsc.h"
#include "intel_wm.h"
+#include "intel_tc.h"
static struct intel_display *node_to_intel_display(struct drm_info_node *node)
{
@@ -254,6 +255,9 @@ static void intel_connector_info(struct seq_file *m,
if (connector->status == connector_status_disconnected)
return;
+ if (intel_encoder_is_tc(intel_attached_encoder(intel_connector)))
+ intel_tc_info(m, intel_attached_dig_port(intel_connector));
+
seq_printf(m, "\tphysical dimensions: %dx%dmm\n",
connector->display_info.width_mm,
connector->display_info.height_mm);
diff --git a/drivers/gpu/drm/i915/display/intel_tc.c
b/drivers/gpu/drm/i915/display/intel_tc.c
index c4a5601c5107..4cd7ccac28b7 100644
--- a/drivers/gpu/drm/i915/display/intel_tc.c
+++ b/drivers/gpu/drm/i915/display/intel_tc.c
@@ -1703,6 +1703,16 @@ void intel_tc_port_sanitize_mode(struct
intel_digital_port *dig_port,
mutex_unlock(&tc->lock);
}
+void intel_tc_info(struct seq_file *m, struct intel_digital_port *dig_port)
+{
+ struct intel_tc_port *tc = to_tc_port(dig_port);
+
+ seq_printf(m, "\tTC Port: %s mode: %s pin assignment: %c max lanes:
%d\n", tc->port_name,
+ tc_port_mode_name(tc->mode),
+ pin_assignment_name(tc->pin_assignment),
+ tc->max_lane_count);
+}
+
/*
* The type-C ports are different because even when they are connected, they
may
* not be available/usable by the graphics driver: see the comment on
diff --git a/drivers/gpu/drm/i915/display/intel_tc.h
b/drivers/gpu/drm/i915/display/intel_tc.h
index fff8b96e4972..3e983d1cc0b8 100644
--- a/drivers/gpu/drm/i915/display/intel_tc.h
+++ b/drivers/gpu/drm/i915/display/intel_tc.h
@@ -7,6 +7,7 @@
#define __INTEL_TC_H__
#include <linux/types.h>
+#include <linux/seq_file.h>
struct intel_crtc_state;
struct intel_digital_port;
@@ -113,4 +114,6 @@ void intel_tc_port_cleanup(struct intel_digital_port
*dig_port);
bool intel_tc_cold_requires_aux_pw(struct intel_digital_port *dig_port);
+void intel_tc_info(struct seq_file *m, struct intel_digital_port *dig_port);
+
#endif /* __INTEL_TC_H__ */
--
2.43.0