mirror of
https://github.com/AsahiLinux/u-boot
synced 2025-02-16 14:08:45 +00:00
usb: storage: Only clear READY flag on error
Clear the USB_READY flag in the storage driver only in case there is an error, otherwise usb_stor_BBB_transport() waits 5 mS before doing anything every single time. This is because the USB_READY flag is only ever set in usb_test_unit_ready(), which is called only upon storage device probe, not between each and every request. However, the device cannot move out of USB_READY state once it was initialized. Signed-off-by: Marek Vasut <marek.vasut+renesas@gmail.com> Cc: Bin Meng <bmeng.cn@gmail.com> Cc: Simon Glass <sjg@chromium.org>
This commit is contained in:
parent
7d6fd7f0ba
commit
da3d1c499f
1 changed files with 3 additions and 3 deletions
|
@ -1180,6 +1180,7 @@ retry_it:
|
|||
srb->pdata = (unsigned char *)buf_addr;
|
||||
if (usb_read_10(srb, ss, start, smallblks)) {
|
||||
debug("Read ERROR\n");
|
||||
ss->flags &= ~USB_READY;
|
||||
usb_request_sense(srb, ss);
|
||||
if (retry--)
|
||||
goto retry_it;
|
||||
|
@ -1190,7 +1191,6 @@ retry_it:
|
|||
blks -= smallblks;
|
||||
buf_addr += srb->datalen;
|
||||
} while (blks != 0);
|
||||
ss->flags &= ~USB_READY;
|
||||
|
||||
debug("usb_read: end startblk " LBAF ", blccnt %x buffer %lx\n",
|
||||
start, smallblks, buf_addr);
|
||||
|
@ -1265,6 +1265,7 @@ retry_it:
|
|||
srb->pdata = (unsigned char *)buf_addr;
|
||||
if (usb_write_10(srb, ss, start, smallblks)) {
|
||||
debug("Write ERROR\n");
|
||||
ss->flags &= ~USB_READY;
|
||||
usb_request_sense(srb, ss);
|
||||
if (retry--)
|
||||
goto retry_it;
|
||||
|
@ -1275,7 +1276,6 @@ retry_it:
|
|||
blks -= smallblks;
|
||||
buf_addr += srb->datalen;
|
||||
} while (blks != 0);
|
||||
ss->flags &= ~USB_READY;
|
||||
|
||||
debug("usb_write: end startblk " LBAF ", blccnt %x buffer %lx\n",
|
||||
start, smallblks, buf_addr);
|
||||
|
@ -1470,10 +1470,10 @@ int usb_stor_get_info(struct usb_device *dev, struct us_data *ss,
|
|||
memset(pccb->pdata, 0, 8);
|
||||
if (usb_read_capacity(pccb, ss) != 0) {
|
||||
printf("READ_CAP ERROR\n");
|
||||
ss->flags &= ~USB_READY;
|
||||
cap[0] = 2880;
|
||||
cap[1] = 0x200;
|
||||
}
|
||||
ss->flags &= ~USB_READY;
|
||||
debug("Read Capacity returns: 0x%08x, 0x%08x\n", cap[0], cap[1]);
|
||||
#if 0
|
||||
if (cap[0] > (0x200000 * 10)) /* greater than 10 GByte */
|
||||
|
|
Loading…
Add table
Reference in a new issue