diff options
| author | Puneet Saxena <puneets@nvidia.com> | 2012-04-03 14:56:06 +0530 | 
|---|---|---|
| committer | Marek Vasut <marex@denx.de> | 2012-05-20 08:32:32 +0200 | 
| commit | f57661394a8b00029e37a5567a869e92bd13f3b8 (patch) | |
| tree | d00363f82c23324c8e69353c7bfb38ae183c803c /common/usb_hub.c | |
| parent | 66cf64107b891d1cc8112ff76b5687195af2f5b0 (diff) | |
| download | olio-uboot-2014.01-f57661394a8b00029e37a5567a869e92bd13f3b8.tar.xz olio-uboot-2014.01-f57661394a8b00029e37a5567a869e92bd13f3b8.zip | |
USB: Align buffers at cacheline
This avoids cache-alignment warnings shown in console
when a usb command is entered.
Whenever X bytes of unaligned buffer is invalidated, arm core
invalidates X + Y bytes as per the cache line size and throws
these warnings.
Signed-off-by: Puneet Saxena <puneets@nvidia.com>
Signed-off-by: Marek Vasut <marex@denx.de>
Diffstat (limited to 'common/usb_hub.c')
| -rw-r--r-- | common/usb_hub.c | 27 | 
1 files changed, 14 insertions, 13 deletions
| diff --git a/common/usb_hub.c b/common/usb_hub.c index e0edaad56..f35ad9532 100644 --- a/common/usb_hub.c +++ b/common/usb_hub.c @@ -153,7 +153,7 @@ int hub_port_reset(struct usb_device *dev, int port,  			unsigned short *portstat)  {  	int tries; -	struct usb_port_status portsts; +	ALLOC_CACHE_ALIGN_BUFFER(struct usb_port_status, portsts, 1);  	unsigned short portstatus, portchange;  	USB_HUB_PRINTF("hub_port_reset: resetting port %d...\n", port); @@ -162,13 +162,13 @@ int hub_port_reset(struct usb_device *dev, int port,  		usb_set_port_feature(dev, port + 1, USB_PORT_FEAT_RESET);  		mdelay(200); -		if (usb_get_port_status(dev, port + 1, &portsts) < 0) { +		if (usb_get_port_status(dev, port + 1, portsts) < 0) {  			USB_HUB_PRINTF("get_port_status failed status %lX\n",  					dev->status);  			return -1;  		} -		portstatus = le16_to_cpu(portsts.wPortStatus); -		portchange = le16_to_cpu(portsts.wPortChange); +		portstatus = le16_to_cpu(portsts->wPortStatus); +		portchange = le16_to_cpu(portsts->wPortChange);  		USB_HUB_PRINTF("portstatus %x, change %x, %s\n",  				portstatus, portchange, @@ -206,19 +206,19 @@ int hub_port_reset(struct usb_device *dev, int port,  void usb_hub_port_connect_change(struct usb_device *dev, int port)  {  	struct usb_device *usb; -	struct usb_port_status portsts; +	ALLOC_CACHE_ALIGN_BUFFER(struct usb_port_status, portsts, 1);  	unsigned short portstatus;  	/* Check status */ -	if (usb_get_port_status(dev, port + 1, &portsts) < 0) { +	if (usb_get_port_status(dev, port + 1, portsts) < 0) {  		USB_HUB_PRINTF("get_port_status failed\n");  		return;  	} -	portstatus = le16_to_cpu(portsts.wPortStatus); +	portstatus = le16_to_cpu(portsts->wPortStatus);  	USB_HUB_PRINTF("portstatus %x, change %x, %s\n",  			portstatus, -			le16_to_cpu(portsts.wPortChange), +			le16_to_cpu(portsts->wPortChange),  			portspeed(portstatus));  	/* Clear the connection change status */ @@ -267,7 +267,8 @@ void usb_hub_port_connect_change(struct usb_device *dev, int port)  static int usb_hub_configure(struct usb_device *dev)  {  	int i; -	unsigned char buffer[USB_BUFSIZ], *bitmap; +	ALLOC_CACHE_ALIGN_BUFFER(unsigned char, buffer, USB_BUFSIZ); +	unsigned char *bitmap;  	struct usb_hub_descriptor *descriptor;  	struct usb_hub_device *hub;  #ifdef USB_HUB_DEBUG @@ -389,16 +390,16 @@ static int usb_hub_configure(struct usb_device *dev)  	usb_hub_power_on(hub);  	for (i = 0; i < dev->maxchild; i++) { -		struct usb_port_status portsts; +		ALLOC_CACHE_ALIGN_BUFFER(struct usb_port_status, portsts, 1);  		unsigned short portstatus, portchange; -		if (usb_get_port_status(dev, i + 1, &portsts) < 0) { +		if (usb_get_port_status(dev, i + 1, portsts) < 0) {  			USB_HUB_PRINTF("get_port_status failed\n");  			continue;  		} -		portstatus = le16_to_cpu(portsts.wPortStatus); -		portchange = le16_to_cpu(portsts.wPortChange); +		portstatus = le16_to_cpu(portsts->wPortStatus); +		portchange = le16_to_cpu(portsts->wPortChange);  		USB_HUB_PRINTF("Port %d Status %X Change %X\n",  				i + 1, portstatus, portchange); |