--- zzzz-none-000/linux-2.6.32.60/drivers/usb/host/xhci-hub.c 2012-10-07 21:41:24.000000000 +0000 +++ ur8-7270-606/linux-2.6.32.60/drivers/usb/host/xhci-hub.c 2013-08-09 09:53:44.000000000 +0000 @@ -24,6 +24,8 @@ #include "xhci.h" +extern int usb3port_config; + static void xhci_hub_descriptor(struct xhci_hcd *xhci, struct usb_hub_descriptor *desc) { @@ -167,6 +169,9 @@ status |= 1 << USB_PORT_FEAT_C_ENABLE; if ((temp & PORT_OCC)) status |= 1 << USB_PORT_FEAT_C_OVER_CURRENT; + /* AVM/WK Workaround: tell USB core about RESET completion */ + if (temp & PORT_RC) + status |= 1 << USB_PORT_FEAT_C_RESET; /* * FIXME ignoring suspend, reset, and USB 2.1/3.0 specific * changes @@ -202,8 +207,12 @@ * However, khubd will ignore the roothub events until * the roothub is registered. */ - xhci_writel(xhci, temp | PORT_POWER, addr); - + if ((wIndex < 2) && !((1<op_regs->port_status_base + NUM_PORT_REGS*i; temp = xhci_readl(xhci, addr); - if (temp & (PORT_CSC | PORT_PEC | PORT_OCC)) { + /* AVM/WK Workaround: PORT_RC added */ + if (temp & (PORT_CSC | PORT_PEC | PORT_OCC|PORT_RC)) { if (i < 7) buf[0] |= 1 << (i + 1); else