📄 ms_msd_fn_scsi.h
字号:
#ifndef _MS_MSD_FN_DEFINES_H_
#define _MS_MSD_FN_DEFINES_H_
#include "sysinfo.h"
/* bInterfaceProtocol */
#define MSDFN_CBI_PROTOCOL 0x00
#define MSDFN_CB_PROTOCOL 0x01
#define MSDFN_BOT_PROTOCOL 0x50
/* bInterfaceSubClass */
#define MSDFN_RBC_SUBCLASS 0x01
#define MSDFN_ATAPI_SUBCLASS 0x02
#define MSDFN_QIC_157_SUBCLASS 0x03
#define MSDFN_UFI_SUBCLASS 0x04
#define MSDFN_SFF_8070i_SUBCLASS 0x05
#define MSDFN_SCSI_SUBCLASS 0x06
/* BOT Only Protocol */
#define MSDFN_BOT_CBW_SIGNATURE 0x43425355
#define MSDFN_BOT_CSW_SIGNATURE 0x53425355
#define MSDFN_BOT_CBW_LENGTH 31
#define MSDFN_BOT_CSW_LENGTH 13
#define MSDFN_BOT_LUN_MASK 0xf0
/* Mass Storage Device BOT Command Execution State */
#define MSDFN_BOT_COMMAND_PASSED 0x00
#define MSDFN_BOT_COMMAND_FAILED 0x01
#define MSDFN_BOT_PHASE_ERROR 0x02
/* Data Transfer Direction */
#define DATA_DIRECTION_MASK 0x80
#define DATA_OUT 0x00
#define DATA_IN 0x80
/* MSD BOT Functional Characteristics */
#define MSDFN_BOT_RESET 0xFF
#define MSDFN_BOT_GET_MAXLUN 0xFE
/* MSD BOT Host-Device Error Condtions */
#define CASEOK 0
#define CASE_Hn_eq_Dn 1
#define CASE_Hn_lt_Di 2
#define CASE_Hn_lt_Do 3
#define CASE_Hi_gt_Dn 4
#define CASE_Hi_gt_Di 5
#define CASE_Hi_eq_Di 6
#define CASE_Hi_lt_Di 7
#define CASE_Hi_ne_Do 8
#define CASE_Ho_gt_Dn 9
#define CASE_Ho_ne_Di 10
#define CASE_Ho_gt_Do 11
#define CASE_Ho_eq_Do 12
#define CASE_Ho_lt_Do 13
#define CASECBW 14
#define CASE_ERROR 15
/* Data Transfer Length for different commands */
#define FMT_CACP_LEN 12 /* Format Capacity */
#define MODE_SEN_LEN 4 /* Mode Sense */
#define INQ_DATA_LEN 36 /* Inquiry */
#define REQ_SENS_LEN 18 /* Request Sense */
#define RD_CAPCY_LEN 8 /* Read Capacity */
/* SCSI Commands */
#define SCSI_FN_INQUIRY 0x12
#define SCSI_FN_REQUEST_SENSE 0x03
#define SCSI_FN_SEND_DIAGNOSTIC 0x1D
#define SCSI_FN_TEST_UNIT_READY 0x00
#define SCSI_FN_FORMAT_UNIT 0x04
#define SCSI_FN_READ6 0x08
#define SCSI_FN_WRITE6 0x0A
#define SCSI_FN_READ10 0x28
#define SCSI_FN_WRITE10 0x2A
#define SCSI_FN_READ_CAPACITY 0x25
#define SCSI_FN_RELEASE 0x17
#define SCSI_FN_RESERVE 0x16
#define SCSI_FN_RD_FMT_CAPC 0x23
#define SCSI_FN_MODE_SENSE 0x1A
#define SCSI_FN_VERIFY 0x2F
#define SCSI_FN_PREVENT 0x1E
//for NAND use
#define SCSI_NAND_READNANDINFO 0xE2
#define SCSI_NAND_ERASEBLOCK 0xE3
#define SCSI_NAND_READPHYPAGE 0xE4
#define SCSI_NAND_WRITEPHYPAGE 0xE5
#define SCSI_NAND_WRITERDD 0xE6
#define SCSI_NAND_EJECT_INSERT 0xE7
#define SCSI_V_WR_XROM 0xE8
#define SCSI_V_EP0_TEST 0xE9
#define SCSI_V_RWCompare_TEST 0xEA
#define SCSI_V_DA_FIFO_TEST 0xEB
#define SCSI_V_DA_DMA_TEST 0xEC
#define KEY_NO_SENSE 0x00
#define KEY_RECOVERED_ERROR 0x01
#define KEY_NOT_READY 0x02
#define KEY_MEDIUM_ERROR 0x03
#define KEY_HARDWARE_ERROR 0x04
#define KEY_ILLEGAL_REQUEST 0x05
#define KEY_UNIT_ATTENTION 0x06
#define KEY_DATA_PROTECT 0x07
#define KEY_BLANK_CHECK 0x08
#define KEY_VENDOR_SPECIFIC 0x09
#define KEY_COPY_ABORTED 0x0A
#define KEY_ABORTED_CMD 0x0B
#define KEY_OBSOLETE 0x0C
#define KEY_VOLUMN_OVERFLOW 0x0D
#define KEY_MISCOMPARE 0x0E
#define KEY_RESERVED 0x0F
// KEY_NO_SENSE: Additional key
#define ADDKEY_NO_ADDITIONAL 0x00
// KEY_NOT_READY: Additional key
#define ADDKEY_LOGICAL_UNIT_NOT_SUPPORT 0x25
#define ADDKEY_MEDIA_CHANGE 0x28
#define ADDKEY_MEDIUM_NOT_PRESENT 0x3A
// KEY_ILLEGAL_REQUEST: Additional key
#define ADDKEY_INVALID_CMD_OP_CODE 0x20
#define ADDKEY_INVALID_FIELD_IN_CMD 0x24
#define ADDKEY_MEDIUM_FORMAT_CORRUPTED 0x31
#define SCSI_BLOCK_SIZE 512
//#define USB_BUFSIZE 0x10000 //(64*1024)
#define USB_BUFSIZE SEGLEN_SDRAM_USB_DEV_BUF //0x1000 //(4*1024)
#ifdef Only_NAND_Exist
#define CARD_MODE 1
#define NAND_MODE 0
#else
#define CARD_MODE 0
#define NAND_MODE 1
#endif
/*
enum
{
STS_CR_SD_MS_XD_CARDCHG = 0x80,
STS_CR_SDCARD,
STS_CR_MSCARD,
STS_CR_XDCARD,
STS_CR_CFCARD,
STS_CR_CF_SDCARD,
STS_CR_CF_MSCARD,
STS_CR_CF_XDCARD,
STS_CR_FAIL,
STS_CR_NOMEDIA,
STS_CR_MEDIUM_FAILED,
STS_CR_WRITE_PROTECT,
STS_CR_ADDR_ERROR,
STS_CR_MMA_ACTIVE, // DMA active
STS_CR_CARD_NOTREADY,
STS_CR_IO_ERROR,
STS_CR_NO_RESPONSE,
STS_CR_TIMEOUT,
STS_CR_CARD_INIT_OK,
STS_CR_EVENT_TIMEOUT,
STS_CR_ECC_ERROR,
};
*/
void MSDFNCMDloop(void);
void Return_CSW_to_Host(MSDFN_BOT_CBW_STRU cbw,__u8 MSDFN_COMMAND);
__u8 FnTestRdy_Command(MSDFN_BOT_CBW_STRU cbw);
__u8 FnVerify_Command(MSDFN_BOT_CBW_STRU cbw);
__u8 FnInquiry_Command(MSDFN_BOT_CBW_STRU cbw);
__u8 FnModeSense_Command(MSDFN_BOT_CBW_STRU cbw);
__u8 FnReqSen_Command(MSDFN_BOT_CBW_STRU cbw);
__u8 FnModeSense_Command(MSDFN_BOT_CBW_STRU cbw);
__u8 FnRd10_Command(MSDFN_BOT_CBW_STRU cbw);
__u8 FnWt10_Command(MSDFN_BOT_CBW_STRU cbw);
__u8 FnPrevent_Command(MSDFN_BOT_CBW_STRU cbw);
__u8 FnRdFmtCap_Command(MSDFN_BOT_CBW_STRU cbw,__u32 noblk,__u32 blksize);
__u8 FnRdCap_Command(MSDFN_BOT_CBW_STRU cbw,__u32 noblk,__u32 blksize);
#ifdef SUPPORT_NAND_DISK
__u8 FnNAND_READNANDINFO_Command(MSDFN_BOT_CBW_STRU *cbw);
__u8 FnNAND_ERASEBLOCK_Command(MSDFN_BOT_CBW_STRU *cbw);
__u8 FnNAND_READPHYPAGE_Command(MSDFN_BOT_CBW_STRU *cbw);
__u8 FnNAND_WRITEPHYPAGE_Command(MSDFN_BOT_CBW_STRU *cbw);
__u8 FnNAND_WRITERDD_Command(MSDFN_BOT_CBW_STRU *cbw);
__u8 FnNAND_EJECT_INSERT_Command(MSDFN_BOT_CBW_STRU *cbw);
#endif
#endif //_MS_MSD_FN_DEFINES_H_
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -