diff options
| author | Stefan Roese <[email protected]> | 2009-01-21 17:12:01 +0100 |
|---|---|---|
| committer | Remy Bohmer <[email protected]> | 2009-01-28 19:57:31 +0100 |
| commit | 597eb28bd9691266b7b804364cda577cdb51d106 (patch) | |
| tree | e5a2802486bee6d50593c0aff6a8ca36ccef1728 | |
| parent | 20cc06611ea33fc0a67a5e56e6476379d2de3091 (diff) | |
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 <[email protected]>
Signed-off-by: Remy Bohmer <[email protected]>
| -rw-r--r-- | drivers/usb/usb_ehci_core.c | 17 |
1 files changed, 16 insertions, 1 deletions
diff --git a/drivers/usb/usb_ehci_core.c b/drivers/usb/usb_ehci_core.c index 97367076e2f..28962fa0267 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; |
