diff options
| author | Michael Trimarchi <trimarchi@gandalf.sssup.it> | 2008-12-18 10:05:37 +0100 | 
|---|---|---|
| committer | Remy Bohmer <linux@bohmer.net> | 2009-01-28 19:57:28 +0100 | 
| commit | 366523c26b6320af171459b19e6e0e9e3baa83ca (patch) | |
| tree | 378b9ed1ced3cf7d093cd461e1e83f550770fa98 /common/usb.c | |
| parent | c0d722fe7ee1cb452dfd9246419188b3f6d9c4df (diff) | |
| download | olio-uboot-2014.01-366523c26b6320af171459b19e6e0e9e3baa83ca.tar.xz olio-uboot-2014.01-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/usb.c')
| -rw-r--r-- | common/usb.c | 12 | 
1 files changed, 10 insertions, 2 deletions
| diff --git a/common/usb.c b/common/usb.c index 313845234..335012798 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; |