mirror of
https://github.com/ARMmbed/DAPLink.git
synced 2025-07-14 03:08:37 +08:00
114 lines
3.8 KiB
C
114 lines
3.8 KiB
C
/**
|
|
* @file usb_msc.h
|
|
* @brief USB mass storage header
|
|
*
|
|
* DAPLink Interface Firmware
|
|
* Copyright (c) 2009-2016, ARM Limited, All Rights Reserved
|
|
* SPDX-License-Identifier: Apache-2.0
|
|
*
|
|
* Licensed under the Apache License, Version 2.0 (the "License"); you may
|
|
* not use this file except in compliance with the License.
|
|
* You may obtain a copy of the License at
|
|
*
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|
*
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
|
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
* See the License for the specific language governing permissions and
|
|
* limitations under the License.
|
|
*/
|
|
|
|
#ifndef __USB_MSC_H__
|
|
#define __USB_MSC_H__
|
|
|
|
|
|
/* 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 */
|
|
#define MSC_BS_RESET 7 /* Bulk-Only Mass Storage Reset */
|
|
|
|
|
|
/* Bulk-only Command Block Wrapper */
|
|
typedef __PACKED_STRUCT _MSC_CBW {
|
|
U32 dSignature;
|
|
U32 dTag;
|
|
U32 dDataLength;
|
|
U8 bmFlags;
|
|
U8 bLUN;
|
|
U8 bCBLength;
|
|
U8 CB[16];
|
|
} MSC_CBW;
|
|
|
|
/* Bulk-only Command Status Wrapper */
|
|
typedef __PACKED_STRUCT _MSC_CSW {
|
|
U32 dSignature;
|
|
U32 dTag;
|
|
U32 dDataResidue;
|
|
U8 bStatus;
|
|
} 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_SYNC_CACHE10 0x35
|
|
#define SCSI_READ12 0xA8
|
|
#define SCSI_WRITE12 0xAA
|
|
#define SCSI_MODE_SELECT10 0x55
|
|
#define SCSI_MODE_SENSE10 0x5A
|
|
#define SCSI_SYNC_CACHE16 0x91
|
|
#define SCSI_ATA_COMMAND_PASS_THROUGH12 0xA1
|
|
#define SCSI_ATA_COMMAND_PASS_THROUGH16 0x85
|
|
#define SCSI_SERVICE_ACTION_IN12 0xAB
|
|
#define SCSI_SERVICE_ACTION_IN16 0x9E
|
|
#define SCSI_SERVICE_ACTION_OUT12 0xA9
|
|
#define SCSI_SERVICE_ACTION_OUT16 0x9F
|
|
#define SCSI_REPORT_ID_INFO 0xA3
|
|
|
|
#endif /* __USB_MSC_H__ */
|