123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117 |
- /*!
- \file msc_scsi.h
- \brief definitions for the USB MSC SCSI commands
- \version 2023-06-30, V2.1.6, firmware for GD32F30x
- */
- /*
- Copyright (c) 2023, 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 */
|