From: Vincent Palatin Date: Thu, 13 Dec 2012 01:55:29 +0000 (-0800) Subject: usb: properly detect empty mass storage media reader X-Git-Tag: v2013.01-rc3~14^2~5 X-Git-Url: https://git.sur5r.net/?a=commitdiff_plain;h=8b57e2f0814a2fd9aed1fa09d8279eaf90764560;p=u-boot usb: properly detect empty mass storage media reader When a USB card reader is empty, it will return "Not Ready - medium not present" as Key Code Qualifier. In that situation, it's useless waiting for the full timeout since the result won't change until the user inserts a card. Signed-off-by: Vincent Palatin Signed-off-by: Vadim Bendebury Signed-off-by: Simon Glass --- diff --git a/common/usb_storage.c b/common/usb_storage.c index 2d92ee1bb3..fb322b4015 100644 --- a/common/usb_storage.c +++ b/common/usb_storage.c @@ -970,6 +970,16 @@ static int usb_test_unit_ready(ccb *srb, struct us_data *ss) 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 immediately 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; mdelay(100); } while (retries--);