The sequence to put port in test mode is not complete. According EHCI specification all enabled ports must be put in suspend. Signed-off-by: Boris Todorov <boris.st.todorov@xxxxxxxxx> --- drivers/usb/host/ehci-hub.c | 13 +++++++++++++ 1 files changed, 13 insertions(+), 0 deletions(-) diff --git a/drivers/usb/host/ehci-hub.c b/drivers/usb/host/ehci-hub.c index ea6184b..4b513e4 100644 --- a/drivers/usb/host/ehci-hub.c +++ b/drivers/usb/host/ehci-hub.c @@ -52,6 +52,7 @@ static void ehci_handover_companion_ports(struct ehci_hcd *ehci) int port; __le32 buf; struct usb_hcd *hcd = ehci_to_hcd(ehci); + u32 __iomem *port_sreg; if (!ehci->owned_ports) return; @@ -1120,6 +1121,18 @@ static int ehci_hub_control ( if (!selector || selector > 5) goto error; ehci_quiesce(ehci); + /* put all enabled ports in suspend */ + while(ports--) { + port_sreg = &ehci->regs->port_status[ports]; + + /* first check if port is enabled + * else results are undefined (according spec) + */ + if(ehci_readl(ehci, port_sreg) & PORT_PE) + ehci_writel(ehci, + ehci_readl(ehci, port_sreg)|PORT_SUSPEND, + port_sreg); + } ehci_halt(ehci); temp |= selector << 16; ehci_writel(ehci, temp, status_reg); -- 1.7.0.4 -- 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