You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
118 lines
4.7 KiB
118 lines
4.7 KiB
3 years ago
|
/*!
|
||
|
\file msc_scsi.h
|
||
|
\brief definitions for the USB MSC SCSI commands
|
||
|
|
||
|
\version 2019-06-05, V1.0.0, firmware for GD32VF103
|
||
|
*/
|
||
|
|
||
|
/*
|
||
|
Copyright (c) 2019, GigaDevice Semiconductor Inc.
|
||
|
|
||
|
Redistribution and use in source and binary forms, with or without modification,
|
||
|
are permitted provided that the following conditions are met:
|
||
|
|
||
|
1. Redistributions of source code must retain the above copyright notice, this
|
||
|
list of conditions and the following disclaimer.
|
||
|
2. Redistributions in binary form must reproduce the above copyright notice,
|
||
|
this list of conditions and the following disclaimer in the documentation
|
||
|
and/or other materials provided with the distribution.
|
||
|
3. Neither the name of the copyright holder nor the names of its contributors
|
||
|
may be used to endorse or promote products derived from this software without
|
||
|
specific prior written permission.
|
||
|
|
||
|
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
||
|
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||
|
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
|
||
|
IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
|
||
|
INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
|
||
|
NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
|
||
|
PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
|
||
|
WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
|
||
|
ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY
|
||
|
OF SUCH DAMAGE.
|
||
|
*/
|
||
|
|
||
|
#ifndef __MSC_SCSI_H
|
||
|
#define __MSC_SCSI_H
|
||
|
|
||
|
#include "usb_ch9_std.h"
|
||
|
|
||
|
/* SCSI commands */
|
||
|
#define SCSI_FORMAT_UNIT 0x04U
|
||
|
#define SCSI_INQUIRY 0x12U
|
||
|
#define SCSI_MODE_SELECT6 0x15U
|
||
|
#define SCSI_MODE_SELECT10 0x55U
|
||
|
#define SCSI_MODE_SENSE6 0x1AU
|
||
|
#define SCSI_READ_TOC_DATA 0x43U
|
||
|
#define SCSI_MODE_SENSE10 0x5AU
|
||
|
#define SCSI_ALLOW_MEDIUM_REMOVAL 0x1EU
|
||
|
#define SCSI_READ6 0x08U
|
||
|
#define SCSI_READ10 0x28U
|
||
|
#define SCSI_READ12 0xA8U
|
||
|
#define SCSI_READ16 0x88U
|
||
|
|
||
|
#define SCSI_READ_CAPACITY10 0x25U
|
||
|
#define SCSI_READ_CAPACITY16 0x9EU
|
||
|
|
||
|
#define SCSI_REQUEST_SENSE 0x03U
|
||
|
#define SCSI_START_STOP_UNIT 0x1BU
|
||
|
#define SCSI_TEST_UNIT_READY 0x00U
|
||
|
#define SCSI_WRITE6 0x0AU
|
||
|
#define SCSI_WRITE10 0x2AU
|
||
|
#define SCSI_WRITE12 0xAAU
|
||
|
#define SCSI_WRITE16 0x8AU
|
||
|
|
||
|
#define SCSI_VERIFY10 0x2FU
|
||
|
#define SCSI_VERIFY12 0xAFU
|
||
|
#define SCSI_VERIFY16 0x8FU
|
||
|
|
||
|
#define SCSI_SEND_DIAGNOSTIC 0x1DU
|
||
|
#define SCSI_READ_FORMAT_CAPACITIES 0x23U
|
||
|
|
||
|
#define INVALID_CDB 0x20U
|
||
|
#define INVALID_FIELED_IN_COMMAND 0x24U
|
||
|
#define PARAMETER_LIST_LENGTH_ERROR 0x1AU
|
||
|
#define INVALID_FIELD_IN_PARAMETER_LIST 0x26U
|
||
|
#define ADDRESS_OUT_OF_RANGE 0x21U
|
||
|
#define MEDIUM_NOT_PRESENT 0x3AU
|
||
|
#define MEDIUM_HAVE_CHANGED 0x28U
|
||
|
#define WRITE_PROTECTED 0x27U
|
||
|
#define UNRECOVERED_READ_ERROR 0x11U
|
||
|
#define WRITE_FAULT 0x03U
|
||
|
|
||
|
#define READ_FORMAT_CAPACITY_DATA_LEN 0x0CU
|
||
|
#define READ_CAPACITY10_DATA_LEN 0x08U
|
||
|
#define MODE_SENSE10_DATA_LEN 0x08U
|
||
|
#define MODE_SENSE6_DATA_LEN 0x04U
|
||
|
#define READ_TOC_CMD_LEN 0x14U
|
||
|
#define REQUEST_SENSE_DATA_LEN 0x12U
|
||
|
#define STANDARD_INQUIRY_DATA_LEN 0x24U
|
||
|
#define BLKVFY 0x04U
|
||
|
|
||
|
enum sense_state {
|
||
|
NO_SENSE = 0U,
|
||
|
RECOVERED_ERROR,
|
||
|
NOT_READY,
|
||
|
MEDIUM_ERROR,
|
||
|
HARDWARE_ERROR,
|
||
|
ILLEGAL_REQUEST,
|
||
|
UNIT_ATTENTION,
|
||
|
DATA_PROTECT,
|
||
|
BLANK_CHECK,
|
||
|
VENDOR_SPECIFIC,
|
||
|
COPY_ABORTED,
|
||
|
ABORTED_COMMAND,
|
||
|
RESERVED,
|
||
|
VOLUME_OVERFLOW,
|
||
|
MISCOMPARE
|
||
|
};
|
||
|
|
||
|
typedef struct {
|
||
|
uint8_t SenseKey;
|
||
|
uint32_t Information;
|
||
|
uint8_t ASC;
|
||
|
uint8_t ASCQ;
|
||
|
} msc_scsi_sense;
|
||
|
|
||
|
#endif /* __MSC_SCSI_H */
|