X-Git-Url: https://git.librecmc.org/?a=blobdiff_plain;f=common%2Fusb_storage.c;h=ff254419951ffafbe1a8375c8f36870d6c44caf5;hb=8ec27b01bc8b492a3aacc76a299f4e24b1a44d0c;hp=097b6729c14d14c1dfd968499e056d8b07b60775;hpb=5f7ff6d63eeb81ad2c071ff5f5adae5bcc94f7a4;p=oweals%2Fu-boot.git diff --git a/common/usb_storage.c b/common/usb_storage.c index 097b6729c1..ff25441995 100644 --- a/common/usb_storage.c +++ b/common/usb_storage.c @@ -33,15 +33,19 @@ #include +#include #include #include #include +#include #include #include #include +#include #include #include #include +#include #include #include @@ -1157,6 +1161,7 @@ static unsigned long usb_stor_read(struct blk_desc *block_dev, lbaint_t blknr, ss = (struct us_data *)udev->privptr; usb_disable_asynch(1); /* asynch transfer not allowed */ + usb_lock_async(udev, 1); srb->lun = block_dev->lun; buf_addr = (uintptr_t)buffer; start = blknr; @@ -1195,6 +1200,7 @@ retry_it: debug("usb_read: end startblk " LBAF ", blccnt %x buffer %lx\n", start, smallblks, buf_addr); + usb_lock_async(udev, 0); usb_disable_asynch(0); /* asynch transfer allowed */ if (blkcnt >= ss->max_xfer_blk) debug("\n"); @@ -1239,6 +1245,7 @@ static unsigned long usb_stor_write(struct blk_desc *block_dev, lbaint_t blknr, ss = (struct us_data *)udev->privptr; usb_disable_asynch(1); /* asynch transfer not allowed */ + usb_lock_async(udev, 1); srb->lun = block_dev->lun; buf_addr = (uintptr_t)buffer; @@ -1280,6 +1287,7 @@ retry_it: debug("usb_write: end startblk " LBAF ", blccnt %x buffer %lx\n", start, smallblks, buf_addr); + usb_lock_async(udev, 0); usb_disable_asynch(0); /* asynch transfer allowed */ if (blkcnt >= ss->max_xfer_blk) debug("\n");