Skip to content
Snippets Groups Projects
Commit 71b94526 authored by Hans de Goede's avatar Hans de Goede Committed by Simon Glass
Browse files

usb: Fix handover of full-speed devices from ehci to companion


When after a reset the port status connection bit is still set and the enable
bit is not then we're dealing with a full-speed device and should hand it over
to the companion controller.

Signed-off-by: default avatarHans de Goede <hdegoede@redhat.com>
parent 4588d61a
No related branches found
No related tags found
No related merge requests found
......@@ -897,11 +897,21 @@ static int ehci_submit_root(struct usb_device *dev, unsigned long pipe,
*/
ret = handshake(status_reg, EHCI_PS_PR, 0,
2 * 1000);
if (!ret)
ctrl->portreset |= 1 << port;
else
if (!ret) {
reg = ehci_readl(status_reg);
if ((reg & (EHCI_PS_PE | EHCI_PS_CS))
== EHCI_PS_CS && !ehci_is_TDI()) {
debug("port %d full speed --> companion\n", port - 1);
reg &= ~EHCI_PS_CLEAR;
reg |= EHCI_PS_PO;
ehci_writel(status_reg, reg);
} else {
ctrl->portreset |= 1 << port;
}
} else {
printf("port(%d) reset error\n",
port - 1);
}
}
break;
case USB_PORT_FEAT_TEST:
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment