scsi: Retry inquiry 3 times to overcome Unit Attention condition

The UFS SCSI device LUNs are observed to return failure the first time a
unit ready inquiry is sent and pass on the second try. Send this
inquiry 3 times to make sure device is ready.

Signed-off-by: Faiz Abbas <faiz_abbas@ti.com>
This commit is contained in:
Faiz Abbas 2019-10-15 18:24:34 +05:30 committed by Tom Rini
parent 4ff572830e
commit d48f00ed11
1 changed files with 9 additions and 3 deletions

View File

@ -481,6 +481,7 @@ static int scsi_detect_dev(struct udevice *dev, int target, int lun,
lbaint_t capacity;
unsigned long blksz;
struct scsi_cmd *pccb = (struct scsi_cmd *)&tempccb;
int count, err;
pccb->target = target;
pccb->lun = lun;
@ -516,9 +517,14 @@ static int scsi_detect_dev(struct udevice *dev, int target, int lun,
dev_desc->target = pccb->target;
dev_desc->lun = pccb->lun;
pccb->datalen = 0;
scsi_setup_test_unit_ready(pccb);
if (scsi_exec(dev, pccb)) {
for (count = 0; count < 3; count++) {
pccb->datalen = 0;
scsi_setup_test_unit_ready(pccb);
err = scsi_exec(dev, pccb);
if (!err)
break;
}
if (err) {
if (dev_desc->removable) {
dev_desc->type = perq;
goto removable;