Skip to content

Commit 51108f2

Browse files
Jim Bridedanvet
authored andcommitted
drm/dp/mst: Enhance DP MST debugfs output
Add some additional information (input vs. output port, sink associated with VC, peer device type, max number of VCs supported) and ensure that any embedded '\0' characters in a branch device's devid string are not written to debugfs. v2: Rebase + change drm_edid_get_monitor_name() call to reflect new signature. v3: Minor changes suggested by Jani + rebase. v4: Rebase cc: dri-devel@lists.freedesktop.org cc: Jani Nikula <jani.nikula@linux.intel.com> Reviewed-by: Jani Nikula <jani.nikula@intel.com> Signed-off-by: Jim Bride <jim.bride@linux.intel.com> Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch> Link: http://patchwork.freedesktop.org/patch/msgid/1460654317-31288-2-git-send-email-jim.bride@linux.intel.com
1 parent 59f7c0f commit 51108f2

File tree

1 file changed

+24
-5
lines changed

1 file changed

+24
-5
lines changed

drivers/gpu/drm/drm_dp_mst_topology.c

Lines changed: 24 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2729,7 +2729,7 @@ static void drm_dp_mst_dump_mstb(struct seq_file *m,
27292729

27302730
seq_printf(m, "%smst: %p, %d\n", prefix, mstb, mstb->num_ports);
27312731
list_for_each_entry(port, &mstb->ports, next) {
2732-
seq_printf(m, "%sport: %d: ddps: %d ldps: %d, sdp: %d/%d, %p, conn: %p\n", prefix, port->port_num, port->ddps, port->ldps, port->num_sdp_streams, port->num_sdp_stream_sinks, port, port->connector);
2732+
seq_printf(m, "%sport: %d: input: %d: pdt: %d, ddps: %d ldps: %d, sdp: %d/%d, %p, conn: %p\n", prefix, port->port_num, port->input, port->pdt, port->ddps, port->ldps, port->num_sdp_streams, port->num_sdp_stream_sinks, port, port->connector);
27332733
if (port->mstb)
27342734
drm_dp_mst_dump_mstb(m, port->mstb);
27352735
}
@@ -2750,6 +2750,16 @@ static bool dump_dp_payload_table(struct drm_dp_mst_topology_mgr *mgr,
27502750
return false;
27512751
}
27522752

2753+
static void fetch_monitor_name(struct drm_dp_mst_topology_mgr *mgr,
2754+
struct drm_dp_mst_port *port, char *name,
2755+
int namelen)
2756+
{
2757+
struct edid *mst_edid;
2758+
2759+
mst_edid = drm_dp_mst_get_edid(port->connector, mgr, port);
2760+
drm_edid_get_monitor_name(mst_edid, name, namelen);
2761+
}
2762+
27532763
/**
27542764
* drm_dp_mst_dump_topology(): dump topology to seq file.
27552765
* @m: seq_file to dump output to
@@ -2762,6 +2772,7 @@ void drm_dp_mst_dump_topology(struct seq_file *m,
27622772
{
27632773
int i;
27642774
struct drm_dp_mst_port *port;
2775+
27652776
mutex_lock(&mgr->lock);
27662777
if (mgr->mst_primary)
27672778
drm_dp_mst_dump_mstb(m, mgr->mst_primary);
@@ -2770,14 +2781,21 @@ void drm_dp_mst_dump_topology(struct seq_file *m,
27702781
mutex_unlock(&mgr->lock);
27712782

27722783
mutex_lock(&mgr->payload_lock);
2773-
seq_printf(m, "vcpi: %lx %lx\n", mgr->payload_mask, mgr->vcpi_mask);
2784+
seq_printf(m, "vcpi: %lx %lx %d\n", mgr->payload_mask, mgr->vcpi_mask,
2785+
mgr->max_payloads);
27742786

27752787
for (i = 0; i < mgr->max_payloads; i++) {
27762788
if (mgr->proposed_vcpis[i]) {
2789+
char name[14];
2790+
27772791
port = container_of(mgr->proposed_vcpis[i], struct drm_dp_mst_port, vcpi);
2778-
seq_printf(m, "vcpi %d: %d %d %d\n", i, port->port_num, port->vcpi.vcpi, port->vcpi.num_slots);
2792+
fetch_monitor_name(mgr, port, name, sizeof(name));
2793+
seq_printf(m, "vcpi %d: %d %d %d sink name: %s\n", i,
2794+
port->port_num, port->vcpi.vcpi,
2795+
port->vcpi.num_slots,
2796+
(*name != 0) ? name : "Unknown");
27792797
} else
2780-
seq_printf(m, "vcpi %d:unsed\n", i);
2798+
seq_printf(m, "vcpi %d:unused\n", i);
27812799
}
27822800
for (i = 0; i < mgr->max_payloads; i++) {
27832801
seq_printf(m, "payload %d: %d, %d, %d\n",
@@ -2817,8 +2835,9 @@ void drm_dp_mst_dump_topology(struct seq_file *m,
28172835
for (i = 0; i < 0x3; i++)
28182836
seq_printf(m, "%02x", buf[i]);
28192837
seq_printf(m, " devid: ");
2820-
for (i = 0x3; i < 0x8; i++)
2838+
for (i = 0x3; i < 0x8 && buf[i]; i++)
28212839
seq_printf(m, "%c", buf[i]);
2840+
28222841
seq_printf(m, " revision: hw: %x.%x sw: %x.%x", buf[0x9] >> 4, buf[0x9] & 0xf, buf[0xa], buf[0xb]);
28232842
seq_printf(m, "\n");
28242843
bret = dump_dp_payload_table(mgr, buf);

0 commit comments

Comments
 (0)