usb-msc: go through TEST UNIT READY for hard disks.
[seabios.git] / src / usb-msc.c
index efcb9c6ad2d233f561e78286c19215992b110a95..2bdc957b30c0b2cbaa433cedd1fb10b7e9cdfa78 100644 (file)
@@ -238,16 +238,21 @@ usb_msc_init(struct usb_pipe *pipe
             , vendor, product, rev, pdt, removable);
     udrive_g->drive.removable = removable;
 
-    if (pdt == USB_MSC_TYPE_CDROM) {
+    if (pdt == SCSI_TYPE_CDROM) {
         char *desc = znprintf(MAXDESCSIZE, "DVD/CD [USB Drive %s %s %s]"
                               , vendor, product, rev);
         ret = setup_drive_cdrom(&udrive_g->drive, desc);
     } else {
+        ret = scsi_is_ready(&dop);
+        if (ret) {
+            dprintf(1, "scsi_is_ready returned %d\n", ret);
+            return ret;
+        }
+
         struct cdbres_read_capacity capdata;
         ret = cdb_read_capacity(&dop, &capdata);
         if (ret)
             return ret;
-        // XXX - retry for some timeout?
 
         // READ CAPACITY returns the address of the last block
         udrive_g->drive.blksize = ntohl(capdata.blksize);