From: Stefan Roese Date: Wed, 21 Jan 2009 16:12:01 +0000 (+0100) Subject: USB: Fix speed detection on EHCI cntr with root hub transaction translators X-Git-Tag: v2009.03-rc1~146^2~5 X-Git-Url: https://git.sur5r.net/?a=commitdiff_plain;h=597eb28bd9691266b7b804364cda577cdb51d106;p=u-boot USB: Fix speed detection on EHCI cntr with root hub transaction translators This patch fixes an issue that the speed of USB devices was not detected correctly on some EHCI controllers. This will be used on the upcoming VCT EHCI support. Signed-off-by: Stefan Roese Signed-off-by: Remy Bohmer --- diff --git a/drivers/usb/usb_ehci_core.c b/drivers/usb/usb_ehci_core.c index 97367076e2..28962fa026 100644 --- a/drivers/usb/usb_ehci_core.c +++ b/drivers/usb/usb_ehci_core.c @@ -546,7 +546,22 @@ ehci_submit_root(struct usb_device *dev, unsigned long pipe, void *buffer, } if (reg & EHCI_PS_PP) tmpbuf[1] |= USB_PORT_STAT_POWER >> 8; - tmpbuf[1] |= USB_PORT_STAT_HIGH_SPEED >> 8; + + if (ehci_is_TDI()) { + switch ((reg >> 26) & 3) { + case 0: + break; + case 1: + tmpbuf[1] |= USB_PORT_STAT_LOW_SPEED >> 8; + break; + case 2: + default: + tmpbuf[1] |= USB_PORT_STAT_HIGH_SPEED >> 8; + break; + } + } else { + tmpbuf[1] |= USB_PORT_STAT_HIGH_SPEED >> 8; + } if (reg & EHCI_PS_CSC) tmpbuf[2] |= USB_PORT_STAT_C_CONNECTION;