On Tue, Oct 28, 2025 at 12:07:53PM -0700, Khaled Almahallawy wrote: > 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 > > v2: Use drm_printer (Ville) > Lock/Unlock around the printf (Imre) > v3: Forward Declaration drm_printer struct (Jani) > v4: Handle MST connector with no active encoder (Imre) > Add a delimiter between fields and ":" after the port name (Imre) > v5: Init dig_port and use it in intel_encorder_is_tc and tc_info (Imre) > Move tc->port_name to a newline (Imre) > v6: Use intel_tc_port_lock/Unlock (Imre) > > Cc: Ville Syrjälä <[email protected]> > Cc: Imre Deak <[email protected]> > Cc: Jani Nikula <[email protected]> > Signed-off-by: Khaled Almahallawy <[email protected]>
Reviewed-by: Imre Deak <[email protected]> > --- > .../gpu/drm/i915/display/intel_display_debugfs.c | 8 ++++++++ > drivers/gpu/drm/i915/display/intel_tc.c | 13 +++++++++++++ > drivers/gpu/drm/i915/display/intel_tc.h | 3 +++ > 3 files changed, 24 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..7014331108aa 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) > { > @@ -246,6 +247,8 @@ static void intel_connector_info(struct seq_file *m, > { > struct intel_connector *intel_connector = to_intel_connector(connector); > const struct drm_display_mode *mode; > + struct drm_printer p = drm_seq_file_printer(m); > + struct intel_digital_port *dig_port = NULL; > > seq_printf(m, "[CONNECTOR:%d:%s]: status: %s\n", > connector->base.id, connector->name, > @@ -268,14 +271,19 @@ static void intel_connector_info(struct seq_file *m, > intel_dp_mst_info(m, intel_connector); > else > intel_dp_info(m, intel_connector); > + dig_port = dp_to_dig_port(intel_attached_dp(intel_connector)); > break; > case DRM_MODE_CONNECTOR_HDMIA: > intel_hdmi_info(m, intel_connector); > + dig_port = > hdmi_to_dig_port(intel_attached_hdmi(intel_connector)); > break; > default: > break; > } > > + if (dig_port != NULL && intel_encoder_is_tc(&dig_port->base)) > + intel_tc_info(&p, dig_port); > + > intel_hdcp_info(m, intel_connector); > > seq_printf(m, "\tmax bpc: %u\n", connector->display_info.bpc); > diff --git a/drivers/gpu/drm/i915/display/intel_tc.c > b/drivers/gpu/drm/i915/display/intel_tc.c > index c4a5601c5107..08e94004d3a7 100644 > --- a/drivers/gpu/drm/i915/display/intel_tc.c > +++ b/drivers/gpu/drm/i915/display/intel_tc.c > @@ -1703,6 +1703,19 @@ void intel_tc_port_sanitize_mode(struct > intel_digital_port *dig_port, > mutex_unlock(&tc->lock); > } > > +void intel_tc_info(struct drm_printer *p, struct intel_digital_port > *dig_port) > +{ > + struct intel_tc_port *tc = to_tc_port(dig_port); > + > + intel_tc_port_lock(dig_port); > + drm_printf(p, "\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); > + intel_tc_port_unlock(dig_port); > +} > + > /* > * 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..6719aea5bd58 100644 > --- a/drivers/gpu/drm/i915/display/intel_tc.h > +++ b/drivers/gpu/drm/i915/display/intel_tc.h > @@ -8,6 +8,7 @@ > > #include <linux/types.h> > > +struct drm_printer; > struct intel_crtc_state; > struct intel_digital_port; > struct intel_encoder; > @@ -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 drm_printer *p, struct intel_digital_port > *dig_port); > + > #endif /* __INTEL_TC_H__ */ > -- > 2.43.0 >
