You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

279 regels
9.0 KiB

// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// File name    : usb_const.h
// Version      : V0.1
// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
#ifndef  __USBDEV_CONST__
#define	 __USBDEV_CONST__
#include "memmap.h"
#define BL_VERIFY					{0x55,0xaa,0x5a,0xa5,0x66,0x99,0x69,0x96,0x12,0x34,0x56,0x78}
#define BL_VERIFY_MAXCOUNTER	10
#define BOOTLOADER_SIGTURE		"BL_20160321_V1.2"
#define EVB_SRAM_ADDR				(0x20010000)	//USB数据缓存512B		
#define USER_DATA_ADDR			(0x20010200)	//用户数据
#define USB_EP1_TEST
//#define USB_FIFO_OFFSET			0x1000
#define USB_FIFO_OFFSET			0
#define USBDMA_BURST_LEN		0
#define USBDMA_MODE1
//current endpoint MACRO
#ifdef USB_EP1_TEST
#define		USB_ENDPOINT_FIFO_ADDR			USB_FIFO_ENDPOINT_1
#define		USB_ENDPOINT_INDEX				INDEX_EP1
#endif
#ifdef USB_EP2_TEST
#define		USB_ENDPOINT_FIFO_ADDR			USB_FIFO_ENDPOINT_2
#define		USB_ENDPOINT_INDEX				INDEX_EP2
#endif
#ifdef USB_EP3_TEST
#define		USB_ENDPOINT_FIFO_ADDR			USB_FIFO_ENDPOINT_3
#define		USB_ENDPOINT_INDEX				INDEX_EP3
#endif
#ifdef USB_EP4_TEST
#define		USB_ENDPOINT_FIFO_ADDR			USB_FIFO_ENDPOINT_4
#define		USB_ENDPOINT_INDEX				INDEX_EP4
#endif
#ifdef USB_EP5_TEST
#define		USB_ENDPOINT_FIFO_ADDR			USB_FIFO_ENDPOINT_5
#define		USB_ENDPOINT_INDEX				INDEX_EP5
#endif
#ifdef USB_EP6_TEST
#define		USB_ENDPOINT_FIFO_ADDR			USB_FIFO_ENDPOINT_6
#define		USB_ENDPOINT_INDEX				INDEX_EP6
#endif
#ifdef USB_EP7_TEST
#define		USB_ENDPOINT_FIFO_ADDR			USB_FIFO_ENDPOINT_7
#define		USB_ENDPOINT_INDEX				INDEX_EP7
#endif
//endpoint define
#define		CONTROL_EP									0
#define		DATA_IN_EP                               	1
#define		DATA_OUT_EP                              	1
#define		INDEX_EP1									1
#define		INDEX_EP2									2
#define		INDEX_EP3									3
#define		INDEX_EP4									4
#define		INDEX_EP5									5
#define		INDEX_EP6									6
#define		INDEX_EP7									7
//usb power mode select
#define		USB_POWER_ENAB_SUSP							0x01
#define		USB_POWER_SUSP_MODE							0x02
#define		USB_POWER_RESUME	             			0x04
#define		USB_POWER_RESET								0x08
#define		USB_POWER_HS_MODE							0x10
#define		USB_POWER_HS_ENAB							0x20
#define		USB_POWER_SOFT_CONN							0x40
#define		USB_POWER_ISO_UPDATE				  	  	0x80
//usb common interrupt number	
#define		USB_INTERRUPT_SUSPEND						0x01
#define		USB_INTERRUPT_RESUME							0x02
#define		USB_INTERRUPT_RESET							0x04
#define		USB_INTERRUPT_SOF								0x08
#define		USB_INTERRUPT_CONNECT						0x10
#define		USB_INTERRUPT_DISCON							0x20
#define		USB_INTERRUPT_SESSREQ						0x40
#define		USB_INTERRUPT_VBUSERR						0x80
//bulk transfer packet size 
#define		USB_MAX_PACKET_SIZE							512
#define		USB_MAX_PACKET_SIZE_LOW						0x00
#define		USB_MAX_PACKET_SIZE_HIGH					0x02
#define		USB_MAX_PACKET_SIZE_V11						64
#define		USB_MAX_PACKET_SIZE_LOW_V11					0x40
#define		USB_MAX_PACKET_SIZE_HIGH_V11				0x00
#define USB_MAX_PACKET_SIZE_EP0             64
//usb tx interrupt number
#define		USB_INTERRUPT_EP0							  0x01
#define		USB_TX_INTERRUPT_EP1						0x02
#define		USB_TX_INTERRUPT_EP2						0x04
#define		USB_TX_INTERRUPT_EP3						0x08
#define		USB_TX_INTERRUPT_EP4						0x10
#define		USB_TX_INTERRUPT_EP5						0x20
#define		USB_TX_INTERRUPT_EP6						0x40
#define		USB_TX_INTERRUPT_EP7						0x80
//Usb Rx Interrupt Number
#define		USB_RX_INTERRUPT_EP0						0x01
#define		USB_RX_INTERRUPT_EP1						0x02
#define		USB_RX_INTERRUPT_EP2						0x04
#define		USB_RX_INTERRUPT_EP3						0x08
#define		USB_RX_INTERRUPT_EP4						0x10
#define		USB_RX_INTERRUPT_EP5						0x20
#define		USB_RX_INTERRUPT_EP6						0x40
#define		USB_RX_INTERRUPT_EP7						0x80
//Device CSR0 Bit Define
#define    	DEV_CSR0_RXPKTRDY                           0x01
#define    	DEV_CSR0_TXPKTRDY                           0x02
#define    	DEV_CSR0_SENTSTALL                          0x04
#define    	DEV_CSR0_DATAEND                            0x08
#define    	DEV_CSR0_SETUPEND                           0x10
#define    	DEV_CSR0_SENDSTALL                          0x20
#define    	DEV_CSR0_SERVICE_RXPKTRDY					0x40
#define    	DEV_CSR0_SERVICE_SETUPEND					0x80
//TX Register Bit Low as Device
#define		DEV_TXCSR_TXPKTRDY							0x01
#define		DEV_TXCSR_FIFO_NOT_EMPTY					0x02
#define		DEV_TXCSR_UNDER_RUN							0x04
#define		DEV_TXCSR_FLUSH_FIFO						0x08
#define		DEV_TXCSR_SEND_STALL						0x10
#define		DEV_TXCSR_SENT_SATLL						0x20
#define		DEV_TXCSR_CLR_DATA_TOG						0x40
#define		DEV_TXCSR_INCOMP_TX							0x80
//TX Register Bit High as Device
#define		DEV_TXCSR_DMAMODE							0x04
#define		DEV_TXCSR_FRC_DATA_TOG						0x08
#define		DEV_TXCSR_DMA_ENAB							0x10
#define		DEV_TXCSR_TXMODE							0x20
#define		DEV_TXCSR_ISO								0x40
#define		DEV_TXCSR_AUTO_SET							0x80
//RX Register Bit Low as Device
#define		DEV_RXCSR_RXPKTRDY							0x01
#define		DEV_RXCSR_FIFOFULL							0x02
#define		DEV_RXCSR_OVERRUN							0x04
#define		DEV_RXCSR_DATA_ERROR						0x08
#define		DEV_RXCSR_FLUSH_FIFO						0x10
#define		DEV_RXCSR_SENDSTALL							0x20
#define		DEV_RXCSR_SENTSTALL							0x40
#define		DEV_RXCSR_CLR_DATA_TOG						0x80
//RX Register Bit High as Device
#define		DEV_RXCSR_INCOMP_RX							0x01
#define		DEV_RXCSR_DMAMODE							0x08
#define		DEV_RXCSR_DISNYET							0x10
#define		DEV_RXCSR_DMA_ENAB							0x20
#define		DEV_RXCSR_ISO								0x40
#define		DEV_RXCSR_AUTOCLEAR							0x80
//Transmit direct	
#define		TX											1
#define		RX											0
//scsi command
#define 	SCSICMD_TEST_UNIT_READY						0x00
#define 	SCSICMD_REQUEST_SENSE                   	0x03
#define 	SCSICMD_INQUIRY                        		0x12
#define 	SCSICMD_MODE_SENSE_06                   	0x1a
#define 	SCSICMD_READ_FORMAT_CAPACITIES          	0x23
#define 	SCSICMD_READ_CAPACITY                   	0x25
#define 	SCSICMD_READ_10                         	0x28
//vendor command
#define		VENDOR_BL_VERIFY							0xD0
#define		VENDOR_IDENTIFY_CMD							0xD1
#define		VENDOR_R_W_CMD								0xD2
//vendor sub command
#define		VENDOR_IDENTIFY_SUBCMD						0x01
#define		VENDOR_READ_SUBCMD							0x01
#define		VENDOR_DISABLEREAD_SUBCMD					0x02
#define		VENDOR_WRITE_SUBCMD							0x03
#define		VENDOR_MASSERASE_SUBCMD						0x08
#define		VENDOR_PAGEERASE_SUBCMD						0x09
#define 	VENDOR_PROGRAM_SUBCMD						0x0a
#define		VENDOR_CHANGEPOWMODE_SUBCMD					0x0b
#define		VENDOR_RUNDYACODE_SUBCMD					0xcc
#define 	VENDOR_SM4ENCODE_SUBCMD						0x1a
#define		VENDOR_SM4DISENCODE_SUBCMD					0x1b
#define		VENDOR_READRUESLT_SUBCMD					0x1c
#define DT_DEVICE                     1
#define DT_CONFIGURATION    	      2
#define DT_STRING                     3
#define DT_INTERFACE                  4
#define DT_ENDPOINT                   5
#define DT_DEVICE_QUALIFIER           6
#define DT_OTHER_SPEED_CONDIGURATION  7
#define DT_INTERFACE_POWER            8
#define TRANS_ISO			    0x01
#define TRANS_BULK             	0x02
#define TRANS_INT			    0x03
#define 	DEVICE_TYPE                                   		0x1
#define 	CONFIG_TYPE                                   		0x2
#define 	STRING_TYPE                                   		0x3
#define 	INTERFACE_TYPE                                		0x4
#define 	ENDPOINT_TYPE                                 		0x5
#define		DEVICE_QUALIFIER                              		0x6
#define 	OTHER_SPEED                                   		0x7
#define 	INTERFACE_POWER                               		0x8
#define 	REPORT_TYPE                                   		0x22
//CCID MESSAGES
//Command Pipe, Bulk-OUT Messages
#define PC_to_RDR_IccPowerOn                  0x62
#define PC_to_RDR_IccPowerOff                 0x63
#define PC_to_RDR_GetSlotStatus               0x65
#define PC_to_RDR_XfrBlock                    0x6f
#define PC_to_RDR_GetParameters               0x6c
#define PC_to_RDR_ResetParameters             0x6d
#define PC_to_RDR_SetParameters               0x61
#define PC_to_RDR_Escape                      0x6b
#define PC_to_RDR_IccClock                    0x6e
#define PC_to_RDR_T0APDU                      0x6a
#define PC_to_RDR_Secure                      0x69
#define PC_to_RDR_Mechanical                  0x71
#define PC_to_RDR_Abort                       0x72
#define PC_to_RDR_SetDataRateAndClockFrequency  0x73
//Response Pipe, Bulk-IN Messages
#define RDR_to_PC_DataBlock                   0x80
#define RDR_to_PC_SlotStatus                  0x81
#define RDR_to_PC_Parameters                  0x82
#define RDR_to_PC_Escape                      0x83
#define RDR_to_PC_DataRateAndClock            0x84
//Interrupt-IN Messages
#define RDR_to_PC_NotifySlotChange            0x50
#define RDR_to_PC_HardwareError               0x51
typedef struct
{
	unsigned char bMessageType;
	unsigned char wLength[4];
	unsigned char bSlot;
	unsigned char bSeq;
	unsigned char bStatus;
	unsigned char bError;
	unsigned char bSpecific;
	unsigned char abData[260];
	unsigned short bSizeToSend;
} ccid_bulk_in_header;
typedef struct
{
	unsigned char bMessageType;
	unsigned char wLength[4];
	unsigned char bSlot;
	unsigned char bSeq;
	unsigned char bSpecific0;
	unsigned char bSpecific1;
	unsigned char bSpecific2;
	unsigned char APDU[264];          //增加4字节是为了匹配APDU结构体
} ccid_bulk_out_header;
#endif