Fork us on GitHub Follow us on Facebook Follow us on Twitter

Changeset ce25903 in mainline for uspace/drv/bus/usb/usbmast/scsi_ms.c


Ignore:
Timestamp:
2015-07-03T20:02:58Z (7 years ago)
Author:
Jan Vesely <jano.vesely@…>
Branches:
lfn, master, serial
Children:
34c9cfc
Parents:
8fc61c8
Message:

ubsmast: Add Test Unit Ready command

Fixes my two flash drive

File:
1 edited

Legend:

Unmodified
Added
Removed
  • uspace/drv/bus/usb/usbmast/scsi_ms.c

    r8fc61c8 rce25903  
    6363static void usbmast_dump_sense(scsi_sense_data_t *sense_buf)
    6464{
    65         unsigned sense_key;
    66 
    67         sense_key = sense_buf->flags_key & 0x0f;
     65        const unsigned sense_key = sense_buf->flags_key & 0x0f;
    6866        printf("Got sense data. Sense key: 0x%x (%s), ASC 0x%02x, "
    6967            "ASCQ 0x%02x.\n", sense_key,
     
    7371}
    7472
     73static int usb_massstor_unit_ready(usbmast_fun_t *mfun)
     74{
     75        scsi_cmd_t cmd;
     76        scsi_cdb_test_unit_ready_t cdb;
     77        int rc;
     78
     79        memset(&cdb, 0, sizeof(cdb));
     80        cdb.op_code = SCSI_CMD_TEST_UNIT_READY;
     81
     82        memset(&cmd, 0, sizeof(cmd));
     83        cmd.cdb = &cdb;
     84        cmd.cdb_size = sizeof(cdb);
     85
     86        rc = usb_massstor_cmd(mfun, 0xDEADBEEF, &cmd);
     87
     88        if (rc != EOK || cmd.status != CMDS_GOOD) {
     89                usb_log_error("Test Unit Ready failed, device %s: %s.\n",
     90                   usb_device_get_name(mfun->mdev->usb_dev), str_error(rc));
     91                return rc;
     92        }
     93
     94        return EOK;
     95}
     96
    7597/** Run SCSI command.
    7698 *
     
    85107
    86108        do {
     109                rc = usb_massstor_unit_ready(mfun);
     110                if (rc != EOK) {
     111                        usb_log_error("Inquiry transport failed, device %s: %s.\n",
     112                           usb_device_get_name(mfun->mdev->usb_dev), str_error(rc));
     113                        return rc;
     114                }
     115
    87116                rc = usb_massstor_cmd(mfun, 0xDEADBEEF, cmd);
    88117                if (rc != EOK) {
Note: See TracChangeset for help on using the changeset viewer.