summaryrefslogtreecommitdiff
path: root/drivers/usb
diff options
context:
space:
mode:
authorStefan Roese <sr@denx.de>2009-01-21 16:12:01 (GMT)
committerRemy Bohmer <linux@bohmer.net>2009-01-28 18:57:31 (GMT)
commit597eb28bd9691266b7b804364cda577cdb51d106 (patch)
treee5a2802486bee6d50593c0aff6a8ca36ccef1728 /drivers/usb
parent20cc06611ea33fc0a67a5e56e6476379d2de3091 (diff)
downloadu-boot-fsl-qoriq-597eb28bd9691266b7b804364cda577cdb51d106.tar.xz
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 <sr@denx.de> Signed-off-by: Remy Bohmer <linux@bohmer.net>
Diffstat (limited to 'drivers/usb')
-rw-r--r--drivers/usb/usb_ehci_core.c17
1 files changed, 16 insertions, 1 deletions
diff --git a/drivers/usb/usb_ehci_core.c b/drivers/usb/usb_ehci_core.c
index 9736707..28962fa 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;