summaryrefslogtreecommitdiff
path: root/common
diff options
context:
space:
mode:
authorMichael Trimarchi <trimarchi@gandalf.sssup.it>2008-12-18 10:05:37 +0100
committerRemy Bohmer <linux@bohmer.net>2009-01-28 19:57:28 +0100
commit366523c26b6320af171459b19e6e0e9e3baa83ca (patch)
tree378b9ed1ced3cf7d093cd461e1e83f550770fa98 /common
parentc0d722fe7ee1cb452dfd9246419188b3f6d9c4df (diff)
downloadu-boot-366523c26b6320af171459b19e6e0e9e3baa83ca.tar.gz
u-boot-366523c26b6320af171459b19e6e0e9e3baa83ca.tar.bz2
u-boot-366523c26b6320af171459b19e6e0e9e3baa83ca.zip
USB change speed
USB changes the speed according to the port status Signed-off-by: Michael Trimarchi <trimarchimichael@yahoo.it> Signed-off-by: Remy Bohmer <linux@bohmer.net>
Diffstat (limited to 'common')
-rw-r--r--common/usb.c12
1 files changed, 10 insertions, 2 deletions
diff --git a/common/usb.c b/common/usb.c
index 313845234f..335012798c 100644
--- a/common/usb.c
+++ b/common/usb.c
@@ -1061,10 +1061,12 @@ static int hub_port_reset(struct usb_device *dev, int port,
}
portstatus = le16_to_cpu(portsts.wPortStatus);
portchange = le16_to_cpu(portsts.wPortChange);
+
USB_HUB_PRINTF("portstatus %x, change %x, %s\n",
portstatus, portchange,
- portstatus&(1<<USB_PORT_FEAT_LOWSPEED) ? \
+ portstatus & (1 << USB_PORT_FEAT_LOWSPEED) ? \
"Low Speed" : "High Speed");
+
USB_HUB_PRINTF("STAT_C_CONNECTION = %d STAT_CONNECTION = %d" \
" USB_PORT_STAT_ENABLE %d\n",
(portchange & USB_PORT_STAT_C_CONNECTION) ? 1 : 0,
@@ -1136,7 +1138,13 @@ void usb_hub_port_connect_change(struct usb_device *dev, int port)
/* Allocate a new device struct for it */
usb = usb_alloc_new_device();
- usb->speed = (portstatus & USB_PORT_STAT_LOW_SPEED) ? 1 : 0;
+
+ if (portstatus & USB_PORT_STAT_HIGH_SPEED)
+ usb->speed = USB_SPEED_HIGH;
+ else if (portstatus & USB_PORT_STAT_LOW_SPEED)
+ usb->speed = USB_SPEED_LOW;
+ else
+ usb->speed = USB_SPEED_FULL;
dev->children[port] = usb;
usb->parent = dev;