Intense-PC is Compulab's mini-desktop with Intel Panther Point chipset. Unconditional switchover to xHCI provided by function usb_enable_xhci_ports() leads to surprising results, after shutdown system powered-on again after a few seconds. On Windows power related problems were not observed. Switching back to EHCI solves the problem. The patch switches usb ports back to EHCI during xhci shutdown for Intense-PC. Signed-off-by: Denis Turischev <denis@xxxxxxxxxxxxxx> --- drivers/usb/host/xhci.c | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/drivers/usb/host/xhci.c b/drivers/usb/host/xhci.c index a979cd0..541efaa 100644 --- a/drivers/usb/host/xhci.c +++ b/drivers/usb/host/xhci.c @@ -26,6 +26,8 @@ #include <linux/module.h> #include <linux/moduleparam.h> #include <linux/slab.h> +#include <linux/dmi.h> +#include "pci-quirks.h" #include "xhci.h" @@ -656,8 +658,20 @@ void xhci_stop(struct usb_hcd *hcd) */ void xhci_shutdown(struct usb_hcd *hcd) { + struct pci_dev *pdev; + const char *brd_name; struct xhci_hcd *xhci = hcd_to_xhci(hcd); + pdev = to_pci_dev(hcd->self.controller); + + if (usb_is_intel_switchable_xhci(pdev)) { + brd_name = dmi_get_system_info(DMI_BOARD_NAME); + + /* quirk for Compulab's Intense-PC board */ + if (brd_name && strstr(brd_name, "Intense-PC")) + usb_disable_xhci_ports(pdev); + } + spin_lock_irq(&xhci->lock); xhci_halt(xhci); spin_unlock_irq(&xhci->lock); -- 1.7.9.5 -- To unsubscribe from this list: send the line "unsubscribe linux-usb" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html