These changes are the raw update to linux-4.4.6-rt14. Kernel sources
[kvmfornfv.git] / kernel / drivers / usb / host / xhci-dbg.c
index 745717e..74c42f7 100644 (file)
@@ -58,16 +58,17 @@ void xhci_dbg_regs(struct xhci_hcd *xhci)
 static void xhci_print_cap_regs(struct xhci_hcd *xhci)
 {
        u32 temp;
+       u32 hci_version;
 
        xhci_dbg(xhci, "xHCI capability registers at %p:\n", xhci->cap_regs);
 
        temp = readl(&xhci->cap_regs->hc_capbase);
+       hci_version = HC_VERSION(temp);
        xhci_dbg(xhci, "CAPLENGTH AND HCIVERSION 0x%x:\n",
                        (unsigned int) temp);
        xhci_dbg(xhci, "CAPLENGTH: 0x%x\n",
                        (unsigned int) HC_LENGTH(temp));
-       xhci_dbg(xhci, "HCIVERSION: 0x%x\n",
-                       (unsigned int) HC_VERSION(temp));
+       xhci_dbg(xhci, "HCIVERSION: 0x%x\n", hci_version);
 
        temp = readl(&xhci->cap_regs->hcs_params1);
        xhci_dbg(xhci, "HCSPARAMS 1: 0x%x\n",
@@ -99,11 +100,27 @@ static void xhci_print_cap_regs(struct xhci_hcd *xhci)
        xhci_dbg(xhci, "HCC PARAMS 0x%x:\n", (unsigned int) temp);
        xhci_dbg(xhci, "  HC generates %s bit addresses\n",
                        HCC_64BIT_ADDR(temp) ? "64" : "32");
+       xhci_dbg(xhci, "  HC %s Contiguous Frame ID Capability\n",
+                       HCC_CFC(temp) ? "has" : "hasn't");
+       xhci_dbg(xhci, "  HC %s generate Stopped - Short Package event\n",
+                       HCC_SPC(temp) ? "can" : "can't");
        /* FIXME */
        xhci_dbg(xhci, "  FIXME: more HCCPARAMS debugging\n");
 
        temp = readl(&xhci->cap_regs->run_regs_off);
        xhci_dbg(xhci, "RTSOFF 0x%x:\n", temp & RTSOFF_MASK);
+
+       /* xhci 1.1 controllers have the HCCPARAMS2 register */
+       if (hci_version > 100) {
+               temp = readl(&xhci->cap_regs->hcc_params2);
+               xhci_dbg(xhci, "HCC PARAMS2 0x%x:\n", (unsigned int) temp);
+               xhci_dbg(xhci, "  HC %s Force save context capability",
+                        HCC2_FSC(temp) ? "supports" : "doesn't support");
+               xhci_dbg(xhci, "  HC %s Large ESIT Payload Capability",
+                        HCC2_LEC(temp) ? "supports" : "doesn't support");
+               xhci_dbg(xhci, "  HC %s Extended TBC capability",
+                        HCC2_ETC(temp) ? "supports" : "doesn't support");
+       }
 }
 
 static void xhci_print_command_reg(struct xhci_hcd *xhci)