summaryrefslogtreecommitdiff
path: root/common/usb_storage.c
diff options
context:
space:
mode:
Diffstat (limited to 'common/usb_storage.c')
-rw-r--r--common/usb_storage.c9
1 files changed, 9 insertions, 0 deletions
diff --git a/common/usb_storage.c b/common/usb_storage.c
index 2ce2dcd2b2..413562607a 100644
--- a/common/usb_storage.c
+++ b/common/usb_storage.c
@@ -968,6 +968,15 @@ static int usb_test_unit_ready(ccb *srb, struct us_data *ss)
if (ss->transport(srb, ss) == USB_STOR_TRANSPORT_GOOD)
return 0;
usb_request_sense(srb, ss);
+ /* Check the Key Code Qualifier, if it matches
+ * "Not Ready - medium not present"
+ * (the sense Key equals 0x2 and the ASC is 0x3a)
+ * return immediatly as the medium being absent won't change
+ * unless there is a user action.
+ */
+ if ((srb->sense_buf[2] == 0x02) &&
+ (srb->sense_buf[12] == 0x3a))
+ return -1;
wait_ms(100);
} while (retry--);