⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ms_msd_fn_scsi.h

📁 MSTAR03的数码相框的代码
💻 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 + -