]> git.kernelconcepts.de Git - karo-tx-linux.git/commitdiff
USB: EHCI: enhance "async" debugfs output
authorAlan Stern <stern@rowland.harvard.edu>
Fri, 20 Nov 2015 18:53:45 +0000 (13:53 -0500)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Tue, 1 Dec 2015 18:44:19 +0000 (10:44 -0800)
This patch enhances the "async" debugfs file in ehci-hcd by printing
out several additional fields in the hardware-accessible data
structures.  These fields are important for determining the hardware's
view of the async schedule, in particular, the addresses of the
current and next qTDs for each QH along with the start address of each
qTD's data buffer.

Signed-off-by: Alan Stern <stern@rowland.harvard.edu>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/usb/host/ehci-dbg.c

index b26b96e25a131d0fb1fff30ce2983bf4c3b9f54d..b7d623f1523c5cdb21728e465aaba523f52ea0e1 100644 (file)
@@ -436,7 +436,8 @@ static void qh_lines (
        scratch = hc32_to_cpup(ehci, &hw->hw_info1);
        hw_curr = (mark == '*') ? hc32_to_cpup(ehci, &hw->hw_current) : 0;
        temp = scnprintf (next, size,
-                       "qh/%p dev%d %cs ep%d %08x %08x (%08x%c %s nak%d)",
+                       "qh/%p dev%d %cs ep%d %08x %08x (%08x%c %s nak%d)"
+                       " [cur %08x next %08x buf[0] %08x]",
                        qh, scratch & 0x007f,
                        speed_char (scratch),
                        (scratch >> 8) & 0x000f,
@@ -444,7 +445,10 @@ static void qh_lines (
                        hc32_to_cpup(ehci, &hw->hw_token), mark,
                        (cpu_to_hc32(ehci, QTD_TOGGLE) & hw->hw_token)
                                ? "data1" : "data0",
-                       (hc32_to_cpup(ehci, &hw->hw_alt_next) >> 1) & 0x0f);
+                       (hc32_to_cpup(ehci, &hw->hw_alt_next) >> 1) & 0x0f,
+                       hc32_to_cpup(ehci, &hw->hw_current),
+                       hc32_to_cpup(ehci, &hw->hw_qtd_next),
+                       hc32_to_cpup(ehci, &hw->hw_buf[0]));
        size -= temp;
        next += temp;
 
@@ -464,7 +468,8 @@ static void qh_lines (
                                mark = '/';
                }
                temp = snprintf (next, size,
-                               "\n\t%p%c%s len=%d %08x urb %p",
+                               "\n\t%p%c%s len=%d %08x urb %p"
+                               " [td %08x buf[0] %08x]",
                                td, mark, ({ char *tmp;
                                 switch ((scratch>>8)&0x03) {
                                 case 0: tmp = "out"; break;
@@ -474,7 +479,9 @@ static void qh_lines (
                                 } tmp;}),
                                (scratch >> 16) & 0x7fff,
                                scratch,
-                               td->urb);
+                               td->urb,
+                               (u32) td->qtd_dma,
+                               hc32_to_cpup(ehci, &td->hw_buf[0]));
                if (size < temp)
                        temp = size;
                size -= temp;