diff mbox

drm/dp/mst: dump branch OUI in debugfs

Message ID 1436837679-14551-1-git-send-email-airlied@gmail.com (mailing list archive)
State New, archived
Headers show

Commit Message

Dave Airlie July 14, 2015, 1:34 a.m. UTC
From: Dave Airlie <airlied@redhat.com>

It appears some MST docks are worse than other, but the only
way to know is to see the sw revisions in here, so dump
the branch OUI so we can look at the sw revision.

Signed-off-by: Dave Airlie <airlied@redhat.com>
---
 drivers/gpu/drm/drm_dp_mst_topology.c | 5 +++++
 1 file changed, 5 insertions(+)

Comments

Thierry Reding July 14, 2015, 8:28 a.m. UTC | #1
On Tue, Jul 14, 2015 at 11:34:39AM +1000, Dave Airlie wrote:
> From: Dave Airlie <airlied@redhat.com>
> 
> It appears some MST docks are worse than other, but the only
> way to know is to see the sw revisions in here, so dump
> the branch OUI so we can look at the sw revision.
> 
> Signed-off-by: Dave Airlie <airlied@redhat.com>
> ---
>  drivers/gpu/drm/drm_dp_mst_topology.c | 5 +++++
>  1 file changed, 5 insertions(+)
> 
> diff --git a/drivers/gpu/drm/drm_dp_mst_topology.c b/drivers/gpu/drm/drm_dp_mst_topology.c
> index 8a3bfcd..e17a639 100644
> --- a/drivers/gpu/drm/drm_dp_mst_topology.c
> +++ b/drivers/gpu/drm/drm_dp_mst_topology.c
> @@ -2657,6 +2657,11 @@ void drm_dp_mst_dump_topology(struct seq_file *m,
>  			seq_printf(m, "%02x ", buf[i]);
>  		seq_printf(m, "\n");
>  
> +		ret = drm_dp_dpcd_read(mgr->aux, DP_BRANCH_OUI, buf, DP_RECEIVER_CAP_SIZE);

According to the specification, the OUI is 24-bit, whereas the receiver
capability field is 15 bytes (well, at least that is the value defined
for DP_RECEIVER_CAP_SIZE)...

> +		seq_printf(m, "branch oui: ");
> +		for (i = 0; i < DP_RECEIVER_CAP_SIZE; i++)
> +			seq_printf(m, "%02x ", buf[i]);
> +		seq_printf(m, "\n");

So this will really dump out more than just the OUI. Perhaps it'd be
worth splitting that up further? 0x503 to 0x508 is an identification
string and displaying it as string would presumably be more useful than
the hexdump equivalent. Similarly 0x509 is a hardware revision and
0x50a/0x50b the firmware major/minor version, which might be more
readable in an idiomatic format (X.Y).

Thierry
Dave Airlie July 15, 2015, 12:09 a.m. UTC | #2
On 14 July 2015 at 18:28, Thierry Reding <thierry.reding@gmail.com> wrote:
> On Tue, Jul 14, 2015 at 11:34:39AM +1000, Dave Airlie wrote:
>> From: Dave Airlie <airlied@redhat.com>
>>
>> It appears some MST docks are worse than other, but the only
>> way to know is to see the sw revisions in here, so dump
>> the branch OUI so we can look at the sw revision.
>>
>> Signed-off-by: Dave Airlie <airlied@redhat.com>
>> ---
>>  drivers/gpu/drm/drm_dp_mst_topology.c | 5 +++++
>>  1 file changed, 5 insertions(+)
>>
>> diff --git a/drivers/gpu/drm/drm_dp_mst_topology.c b/drivers/gpu/drm/drm_dp_mst_topology.c
>> index 8a3bfcd..e17a639 100644
>> --- a/drivers/gpu/drm/drm_dp_mst_topology.c
>> +++ b/drivers/gpu/drm/drm_dp_mst_topology.c
>> @@ -2657,6 +2657,11 @@ void drm_dp_mst_dump_topology(struct seq_file *m,
>>                       seq_printf(m, "%02x ", buf[i]);
>>               seq_printf(m, "\n");
>>
>> +             ret = drm_dp_dpcd_read(mgr->aux, DP_BRANCH_OUI, buf, DP_RECEIVER_CAP_SIZE);
>
> According to the specification, the OUI is 24-bit, whereas the receiver
> capability field is 15 bytes (well, at least that is the value defined
> for DP_RECEIVER_CAP_SIZE)...
>
>> +             seq_printf(m, "branch oui: ");
>> +             for (i = 0; i < DP_RECEIVER_CAP_SIZE; i++)
>> +                     seq_printf(m, "%02x ", buf[i]);
>> +             seq_printf(m, "\n");
>
> So this will really dump out more than just the OUI. Perhaps it'd be
> worth splitting that up further? 0x503 to 0x508 is an identification
> string and displaying it as string would presumably be more useful than
> the hexdump equivalent. Similarly 0x509 is a hardware revision and
> 0x50a/0x50b the firmware major/minor version, which might be more
> readable in an idiomatic format (X.Y).
>
Yes I wanted to dump a portion of OUI space for debugging. I don't
really care if humans want to parse it, it's debugfs after all.

Dave.
diff mbox

Patch

diff --git a/drivers/gpu/drm/drm_dp_mst_topology.c b/drivers/gpu/drm/drm_dp_mst_topology.c
index 8a3bfcd..e17a639 100644
--- a/drivers/gpu/drm/drm_dp_mst_topology.c
+++ b/drivers/gpu/drm/drm_dp_mst_topology.c
@@ -2657,6 +2657,11 @@  void drm_dp_mst_dump_topology(struct seq_file *m,
 			seq_printf(m, "%02x ", buf[i]);
 		seq_printf(m, "\n");
 
+		ret = drm_dp_dpcd_read(mgr->aux, DP_BRANCH_OUI, buf, DP_RECEIVER_CAP_SIZE);
+		seq_printf(m, "branch oui: ");
+		for (i = 0; i < DP_RECEIVER_CAP_SIZE; i++)
+			seq_printf(m, "%02x ", buf[i]);
+		seq_printf(m, "\n");
 		bret = dump_dp_payload_table(mgr, buf);
 		if (bret == true) {
 			seq_printf(m, "payload table: ");