On Fri, 26 Sep 2025, Ville Syrjälä <[email protected]> wrote:
> On Thu, Sep 25, 2025 at 04:51: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
>> 
>> 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)
>
> Please use drm_printer instead of seq_file so this can be reused
> elsewhere.

Yeah.

I'm also really not a big fan of throwing everything into
i915_display_info. The general idea of debugfs is to have individual
files for individual things, not to have one massive thing that includes
everything, in a loop across crtcs and connectors.

I get that one file is a convenience, but at some point we have to say
too much is just too much. I think so far we've just added everything
indiscriminately.

I think it's a bit wild that we don't even have per crtc debugfs file
for intel_crtc_info, or per connector file for intel_connector_info, or
most of the individual parts in them.

Anyway, it's a bit difficult to claim this is the straw that breaks the
camel's back, but I think at some point this whole thing needs an
overhaul.


BR,
Jani.


>
>> +{
>> +    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

-- 
Jani Nikula, Intel

Reply via email to