diff options
| author | Gabe Black <gabeblack@chromium.org> | 2012-10-12 14:26:07 +0000 | 
|---|---|---|
| committer | Marek Vasut <marex@denx.de> | 2012-10-22 08:25:07 +0200 | 
| commit | e81e79ede1aa1052735b9ee9a364f99b93605a08 (patch) | |
| tree | 368b7c74f85051d49efa04b048afd81dbeb3da85 /common/usb_storage.c | |
| parent | 99070db0dc0b0e881841a0091f06d53351244a34 (diff) | |
| download | olio-uboot-2014.01-e81e79ede1aa1052735b9ee9a364f99b93605a08.tar.xz olio-uboot-2014.01-e81e79ede1aa1052735b9ee9a364f99b93605a08.zip | |
usb: Support the CONFIG_SYS_64BIT_LBA option
usb_storage wouldn't compile when the CONFIG_SYS_64BIT_LBA option is
turned on because the used fixed size data types in their exported
functions when they should have used lbaint_t for the block count
parameter. That meant that when the sizes happened to be the same, when
using a 28 bit LBA, the driver would build, but when it wasn't, a 48 bit
LBA, things broke.
This change adjusts the signatures to use the right type and makes small
adjustments in the affected functions.
Signed-off-by: Gabe Black <gabeblack@chromium.org>
Signed-off-by: Simon Glass <sjg@chromium.org>
Reviewed-by: Marek Vasut <marex@denx.de>
Diffstat (limited to 'common/usb_storage.c')
| -rw-r--r-- | common/usb_storage.c | 24 | 
1 files changed, 14 insertions, 10 deletions
| diff --git a/common/usb_storage.c b/common/usb_storage.c index 950451e11..0c2a4c718 100644 --- a/common/usb_storage.c +++ b/common/usb_storage.c @@ -179,9 +179,9 @@ int usb_stor_get_info(struct usb_device *dev, struct us_data *us,  int usb_storage_probe(struct usb_device *dev, unsigned int ifnum,  		      struct us_data *ss);  unsigned long usb_stor_read(int device, unsigned long blknr, -			    unsigned long blkcnt, void *buffer); +			    lbaint_t blkcnt, void *buffer);  unsigned long usb_stor_write(int device, unsigned long blknr, -			     unsigned long blkcnt, const void *buffer); +			     lbaint_t blkcnt, const void *buffer);  struct usb_device * usb_get_dev_index(int index);  void uhci_show_temp_int_td(void); @@ -1053,9 +1053,10 @@ static void usb_bin_fixup(struct usb_device_descriptor descriptor,  #endif /* CONFIG_USB_BIN_FIXUP */  unsigned long usb_stor_read(int device, unsigned long blknr, -			    unsigned long blkcnt, void *buffer) +			    lbaint_t blkcnt, void *buffer)  { -	unsigned long start, blks, buf_addr; +	lbaint_t start, blks; +	uintptr_t buf_addr;  	unsigned short smallblks;  	struct usb_device *dev;  	struct us_data *ss; @@ -1084,7 +1085,7 @@ unsigned long usb_stor_read(int device, unsigned long blknr,  	start = blknr;  	blks = blkcnt; -	USB_STOR_PRINTF("\nusb_read: dev %d startblk %lx, blccnt %lx" +	USB_STOR_PRINTF("\nusb_read: dev %d startblk " LBAF ", blccnt " LBAF  			" buffer %lx\n", device, start, blks, buf_addr);  	do { @@ -1114,7 +1115,8 @@ retry_it:  	} while (blks != 0);  	ss->flags &= ~USB_READY; -	USB_STOR_PRINTF("usb_read: end startblk %lx, blccnt %x buffer %lx\n", +	USB_STOR_PRINTF("usb_read: end startblk " LBAF +			", blccnt %x buffer %lx\n",  			start, smallblks, buf_addr);  	usb_disable_asynch(0); /* asynch transfer allowed */ @@ -1124,9 +1126,10 @@ retry_it:  }  unsigned long usb_stor_write(int device, unsigned long blknr, -				unsigned long blkcnt, const void *buffer) +				lbaint_t blkcnt, const void *buffer)  { -	unsigned long start, blks, buf_addr; +	lbaint_t start, blks; +	uintptr_t buf_addr;  	unsigned short smallblks;  	struct usb_device *dev;  	struct us_data *ss; @@ -1156,7 +1159,7 @@ unsigned long usb_stor_write(int device, unsigned long blknr,  	start = blknr;  	blks = blkcnt; -	USB_STOR_PRINTF("\nusb_write: dev %d startblk %lx, blccnt %lx" +	USB_STOR_PRINTF("\nusb_write: dev %d startblk " LBAF ", blccnt " LBAF  			" buffer %lx\n", device, start, blks, buf_addr);  	do { @@ -1188,7 +1191,8 @@ retry_it:  	} while (blks != 0);  	ss->flags &= ~USB_READY; -	USB_STOR_PRINTF("usb_write: end startblk %lx, blccnt %x buffer %lx\n", +	USB_STOR_PRINTF("usb_write: end startblk " LBAF +			", blccnt %x buffer %lx\n",  			start, smallblks, buf_addr);  	usb_disable_asynch(0); /* asynch transfer allowed */ |