120 lines
3.9 KiB
C
120 lines
3.9 KiB
C
/***********************************************************************
|
|
* $Id:: mw_usbd_msc.h 197 2011-06-12 20:22:41Z usb06052 $
|
|
*
|
|
* Project: USB device ROM Stack
|
|
*
|
|
* Description:
|
|
* Mass Storage Class definitions.
|
|
*
|
|
***********************************************************************
|
|
* Copyright(C) 2011, NXP Semiconductor
|
|
* All rights reserved.
|
|
*
|
|
* Software that is described herein is for illustrative purposes only
|
|
* which provides customers with programming information regarding the
|
|
* products. This software is supplied "AS IS" without any warranties.
|
|
* NXP Semiconductors assumes no responsibility or liability for the
|
|
* use of the software, conveys no license or title under any patent,
|
|
* copyright, or mask work right to the product. NXP Semiconductors
|
|
* reserves the right to make changes in the software without
|
|
* notification. NXP Semiconductors also make no representation or
|
|
* warranty that such application will be suitable for the specified
|
|
* use without further testing or modification.
|
|
**********************************************************************/
|
|
|
|
#ifndef __MSC_H__
|
|
#define __MSC_H__
|
|
|
|
#include "mw_usbd.h"
|
|
|
|
/** \file
|
|
* \brief Mass Storage calss (MSC) descriptors.
|
|
*
|
|
* Definition of MSC class descriptors and their bit defines.
|
|
*
|
|
*/
|
|
|
|
/* MSC Subclass Codes */
|
|
#define MSC_SUBCLASS_RBC 0x01
|
|
#define MSC_SUBCLASS_SFF8020I_MMC2 0x02
|
|
#define MSC_SUBCLASS_QIC157 0x03
|
|
#define MSC_SUBCLASS_UFI 0x04
|
|
#define MSC_SUBCLASS_SFF8070I 0x05
|
|
#define MSC_SUBCLASS_SCSI 0x06
|
|
|
|
/* MSC Protocol Codes */
|
|
#define MSC_PROTOCOL_CBI_INT 0x00
|
|
#define MSC_PROTOCOL_CBI_NOINT 0x01
|
|
#define MSC_PROTOCOL_BULK_ONLY 0x50
|
|
|
|
|
|
/* MSC Request Codes */
|
|
#define MSC_REQUEST_RESET 0xFF
|
|
#define MSC_REQUEST_GET_MAX_LUN 0xFE
|
|
|
|
|
|
/* MSC Bulk-only Stage */
|
|
#define MSC_BS_CBW 0 /* Command Block Wrapper */
|
|
#define MSC_BS_DATA_OUT 1 /* Data Out Phase */
|
|
#define MSC_BS_DATA_IN 2 /* Data In Phase */
|
|
#define MSC_BS_DATA_IN_LAST 3 /* Data In Last Phase */
|
|
#define MSC_BS_DATA_IN_LAST_STALL 4 /* Data In Last Phase with Stall */
|
|
#define MSC_BS_CSW 5 /* Command Status Wrapper */
|
|
#define MSC_BS_ERROR 6 /* Error */
|
|
|
|
|
|
/* Bulk-only Command Block Wrapper */
|
|
PRE_PACK struct POST_PACK _MSC_CBW
|
|
{
|
|
uint32_t dSignature;
|
|
uint32_t dTag;
|
|
uint32_t dDataLength;
|
|
uint8_t bmFlags;
|
|
uint8_t bLUN;
|
|
uint8_t bCBLength;
|
|
uint8_t CB[16];
|
|
} ;
|
|
typedef struct _MSC_CBW MSC_CBW;
|
|
|
|
/* Bulk-only Command Status Wrapper */
|
|
PRE_PACK struct POST_PACK _MSC_CSW
|
|
{
|
|
uint32_t dSignature;
|
|
uint32_t dTag;
|
|
uint32_t dDataResidue;
|
|
uint8_t bStatus;
|
|
} ;
|
|
typedef struct _MSC_CSW MSC_CSW;
|
|
|
|
#define MSC_CBW_Signature 0x43425355
|
|
#define MSC_CSW_Signature 0x53425355
|
|
|
|
|
|
/* CSW Status Definitions */
|
|
#define CSW_CMD_PASSED 0x00
|
|
#define CSW_CMD_FAILED 0x01
|
|
#define CSW_PHASE_ERROR 0x02
|
|
|
|
|
|
/* SCSI Commands */
|
|
#define SCSI_TEST_UNIT_READY 0x00
|
|
#define SCSI_REQUEST_SENSE 0x03
|
|
#define SCSI_FORMAT_UNIT 0x04
|
|
#define SCSI_INQUIRY 0x12
|
|
#define SCSI_MODE_SELECT6 0x15
|
|
#define SCSI_MODE_SENSE6 0x1A
|
|
#define SCSI_START_STOP_UNIT 0x1B
|
|
#define SCSI_MEDIA_REMOVAL 0x1E
|
|
#define SCSI_READ_FORMAT_CAPACITIES 0x23
|
|
#define SCSI_READ_CAPACITY 0x25
|
|
#define SCSI_READ10 0x28
|
|
#define SCSI_WRITE10 0x2A
|
|
#define SCSI_VERIFY10 0x2F
|
|
#define SCSI_READ12 0xA8
|
|
#define SCSI_WRITE12 0xAA
|
|
#define SCSI_MODE_SELECT10 0x55
|
|
#define SCSI_MODE_SENSE10 0x5A
|
|
|
|
|
|
#endif /* __MSC_H__ */
|