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

📄 drv_usb.h

📁 基于omap5912平台的usb设备驱动源程序
💻 H
📖 第 1 页 / 共 5 页
字号:
/*---------------------------------------------------------------
*	Developed By Signal Process, synergy Co.,Ltd.
*	Copyright (c) 2006-2008 synergy Co.,Ltd.
*	All Right Reserved.
*
*	$Author Zhaoww (Zhaoww@synergy.com.cn)
*	$Version: Alpha
*	$Since 2006.4.11
*	$Log
*
*	DESCRIPTION
*		DRIVER USB File for omp5912 Series
*
*---------------------------------------------------------------*/
#ifndef	_DRV_USB_H_
#define	_DRV_USB_H_

#ifdef  _DRV_USB_GLOBALS_
#define DRV_USB_EXT
#else
#define DRV_USB_EXT  extern
#endif

#ifdef __cplusplus
extern "C" {
#endif


#define DSOFT_REQ_REG    0xFFFE0834
#define DOTG_SYSCON_1    0xFFFB0404
#define DOTG_SYSCON_2    0xFFFB0408
#define DOTG_CTRL        0XFFFB040C
#define DARM_RSTCT2      0xFFFECE14
#define DCLOCK_CTRL_REG  0xFFFE0830
#define DSOFT_DISABLE_REQ_REG 0xFFFE0868
#define DOTG_IRQ_SRC     0xFFFB0414
#define DOTG_IRQ_EN     0xFFFB0410

#define DCOMP_MODE_CTRL_0       0xFFFE100C
#define DFUNC_MUX_CTRL_0        0xFFFE1000
#define DFUNC_MUX_CTRL_7        0xFFFE1020
#define DFUNC_MUX_CTRL_8        0xFFFE1024
#define DFUNC_MUX_CTRL_9        0xFFFE1028
#define DFUNC_MUX_CTRL_A        0xFFFE102C
#define DFUNC_MUX_CTRL_B        0xFFFE1030
#define DFUNC_MUX_CTRL_C        0xFFFE1034
#define DUSB_TRANSCEIVER_CTRL   0xFFFE1064
#define DFUNC_MUX_CTRL_D        0xFFFE1038
#define DMOD_CONF_CTRL          0xFFFE1080
#define DULPD_CLOCK_CTRL        0xFFFE0830
#define DULPD_SOFT_REQ          0xFFFE0834
#define DFUNC_MUX_ARM_DMA_A     0xFFFE10EC
#define DARM_CLKCTRL            0xFFFECE00
#define DDPLL1_CTL_REG          0xFFFECF00

#define DARM_IDLECT2      0xFFFECE08 
#define DARM_IDLECT3      0xFFFECE24
#define DARM_SYSST        0xFFFECE18

/* USB Descriptors types */ 
#define DUSB_DEVICE_DESC             0x01
#define DUSB_CONFIG_DESC             0x02
#define DUSB_STRING_DESC             0x03
#define DUSB_INTERFACE_DESC          0x04
#define DUSB_ENDPOINT_DESC           0x05


/* secure conditonregister ,
 * set this register to 00F to enter secure mode */
#define SECURE_COND_REG 0xFFFED480



typedef struct  {
    volatile INT16U RX_EP;
    volatile INT8U RSVD0[2];
}UsbfRx_epRegs;
typedef struct  {
    volatile INT16U	REV;
    volatile INT8U 	RSVD0[2];
    volatile INT16U EPNUM;
    volatile INT8U 	RSVD1[2];
    volatile INT16U DATA;
    volatile INT8U 	RSVD2[2];
    volatile INT16U CTRL;
    volatile INT8U 	RSVD3[2];
    volatile INT16U STAT_FLG;
    volatile INT8U 	RSVD4[2];
    volatile INT16U RXFSTAT;
    volatile INT8U 	RSVD5[2];
    volatile INT16U SYSCON1;
    volatile INT8U 	RSVD6[2];
    volatile INT16U SYSCON2;
    volatile INT8U 	RSVD7[2];
    volatile INT16U DEVSTAT;
    volatile INT8U 	RSVD8[2];
    volatile INT16U SOF;
    volatile INT8U 	RSVD9[2];
    volatile INT16U IRQ_EN;
    volatile INT8U 	RSVD10[2];
    volatile INT16U DMA_IRQ_EN;
    volatile INT8U 	RSVD11[2];
    volatile INT16U IRQ_SRC;
    volatile INT8U 	RSVD12[2];
    volatile INT16U EPN_STAT;
    volatile INT8U 	RSVD13[2];
    volatile INT16U DMAN_STAT;
    volatile INT8U 	RSVD14[6];
    volatile INT16U RXDMA_CFG;
    volatile INT8U 	RSVD15[2];
    volatile INT16U TXDMA_CFG;
    volatile INT8U 	RSVD16[2];
    volatile INT16U DATA_DMA;
    volatile INT8U 	RSVD17[6];
    volatile INT16U TXDMA0;
    volatile INT8U 	RSVD18[2];
    volatile INT16U TXDMA1;
    volatile INT8U 	RSVD19[2];
    volatile INT16U TXDMA2;
    volatile INT8U 	RSVD20[6];
    volatile INT16U RXDMA0;
    volatile INT8U 	RSVD21[2];
    volatile INT16U RXDMA1;
    volatile INT8U 	RSVD22[2];
    volatile INT16U RXDMA2;
    volatile INT8U 	RSVD23[22];
    volatile INT16U EP0;
    volatile INT8U	RSVD24[2];
    UsbfRx_epRegs RX_EP[15];
    volatile INT8U RSVD25[4];
    UsbfRx_epRegs TX_EP[15];
} UsbfRegs;

typedef volatile UsbfRegs  *UsbfRegsOvly;

typedef struct UsbfObj {
	/** This is a pointer to the registers of the instance of USBF
     *  referred to by this object
     */
	UsbfRegsOvly regs;
	/** This is the instance of USBF being referred to by this object  */
	INT16U 	perNum;
} UsbfObj;

typedef struct UsbfObj *UsbfHandle;

typedef enum UsbfEpNum {
    /** OUT endpoint 0 */
    USBF_OUT_EP0 = 0, 
    /** OUT endpoint 1 */
    USBF_OUT_EP1,     
    /** OUT endpoint 2 */
    USBF_OUT_EP2,     
    /** OUT endpoint 3 */
    USBF_OUT_EP3,     
    /** OUT endpoint 4 */
    USBF_OUT_EP4,     
    /** OUT endpoint 5 */
    USBF_OUT_EP5,     
    /** OUT endpoint 6 */
    USBF_OUT_EP6,     
    /** OUT endpoint 7 */
    USBF_OUT_EP7,     
    /** OUT endpoint 8 */
    USBF_OUT_EP8,                         
    /** OUT endpoint 9 */
    USBF_OUT_EP9,     
    /** OUT endpoint 10 */
    USBF_OUT_EP10,    
    /** OUT endpoint 11 */
    USBF_OUT_EP11,    
    /** OUT endpoint 12 */
    USBF_OUT_EP12,    
    /** OUT endpoint 13 */
    USBF_OUT_EP13,    
    /** OUT endpoint 14 */
    USBF_OUT_EP14,    
    /** OUT endpoint 15 */
    USBF_OUT_EP15,     
    
    /** IN endpoint 0 */
    USBF_IN_EP0 = 16,     
    /** IN endpoint 1 */
    USBF_IN_EP1 = 17,     
    /** IN endpoint 2 */
    USBF_IN_EP2,     
    /** IN endpoint 3 */
    USBF_IN_EP3,     
    /** IN endpoint 4 */
    USBF_IN_EP4,     
    /** IN endpoint 5 */
    USBF_IN_EP5,     
    /** IN endpoint 6 */
    USBF_IN_EP6,     
    /** IN endpoint 7 */
    USBF_IN_EP7,     
    /** IN endpoint 8 */
    USBF_IN_EP8,                         
    /** IN endpoint 9 */
    USBF_IN_EP9,     
    /** IN endpoint 10 */
    USBF_IN_EP10,    
    /** IN endpoint 11 */
    USBF_IN_EP11,    
    /** IN endpoint 12 */
    USBF_IN_EP12,    
    /** IN endpoint 13 */
    USBF_IN_EP13,    
    /** IN endpoint 14 */
    USBF_IN_EP14,    
    /** IN endpoint 15 */
    USBF_IN_EP15     
}UsbfEpNum ;  

/* Below Error codes are Global across all CSL Modules. */
#define CSL_SOK                 (1)         /* Success */
#define CSL_ESYS_FAIL           (-1)        /* Generic failure */
#define CSL_ESYS_INUSE          (-2)        /* Peripheral resource is already in use */
#define CSL_ESYS_XIO            (-3)        /* Encountered a shared I/O(XIO) pin conflict */
#define CSL_ESYS_OVFL           (-4)        /* Encoutered CSL system resource overflow */
#define CSL_ESYS_BADHANDLE      (-5)        /* Handle passed to CSL was invalid */
#define CSL_ESYS_INVPARAMS      (-6)        /* invalid parameters */
#define CSL_ESYS_INVCMD         (-7)        /* invalid command */
#define CSL_ESYS_INVQUERY       (-8)        /* invalid query */
#define CSL_ESYS_NOTSUPPORTED   (-9)        /* action not supported */
#define CSL_ESYS_ALREADY_INITIALIZED 	(-10)	/* Module already initialized */

typedef INT16S          CSL_Uid;
typedef INT16S          CSL_ModuleId;
typedef INT32U          CSL_Xio;

typedef INT16U          CSL_BitMask16;
typedef INT32U          CSL_BitMask32;

typedef volatile INT8U  CSL_Reg8;
typedef volatile INT16U CSL_Reg16;
typedef volatile INT32U CSL_Reg32;

typedef INT16S           CSL_Status;
typedef INT16S           CSL_InstNum;
typedef INT16S           CSL_ChaNum;

typedef int				Bool;

/* USB Endpoint Parameters */ 
#define USB_DIR_IN                  0
#define USB_DIR_OUT                 1
#define USB_TYPE_ISOCHRONOUS        0
#define USB_TYPE_BULK               1

/* USB General Request */ 
#define USB_GET_STATUS              0
#define USB_CLEAR_FEATURE           1
#define USB_SET_FEATURE             3
#define USB_SET_ADDRESS             5
#define USB_GET_DESCRIPTOR          6
#define USB_SET_DESCRIPTOR          7
#define USB_GET_CONFIGURATION       8
#define USB_SET_CONFIGURATION       9
#define USB_GET_INTERFACE           10
#define USB_SET_INTERFACE           11
#define USB_SYNCH_FRAME             12
/* Mass Storage Class Request */ 
#define USB_GET_MAX_LUN             0xFE
#define USB_MASS_STORAGE_RESET      0xFF

/* USB Descriptors types */ 
#define USB_DEVICE_DESC             0x01
#define USB_CONFIG_DESC             0x02
#define USB_STRING_DESC             0x03
#define USB_INTERFACE_DESC          0x04
#define USB_ENDPOINT_DESC           0x05

/* the Field MaKe macro */
#define CSL_FMK(PER_REG_FIELD, val)                                         \
    (((val) << CSL_##PER_REG_FIELD##_SHIFT) & CSL_##PER_REG_FIELD##_MASK)

/* the Field EXTract macro */
#define CSL_FEXT(reg, PER_REG_FIELD)                                        \
    (((reg) & CSL_##PER_REG_FIELD##_MASK) >> CSL_##PER_REG_FIELD##_SHIFT)

/* the Field INSert macro */
#define CSL_FINS(reg, PER_REG_FIELD, val)                                   \
    ((reg) = ((reg) & ~CSL_##PER_REG_FIELD##_MASK)                          \
    | CSL_FMK(PER_REG_FIELD, val))


/* the "token" macros */

/* the Field MaKe (Token) macro */
#define CSL_FMKT(PER_REG_FIELD, TOKEN)                                      \
    CSL_FMK(PER_REG_FIELD, CSL_##PER_REG_FIELD##_##TOKEN)

/* the Field INSert (Token) macro */
#define CSL_FINST(reg, PER_REG_FIELD, TOKEN)                                \
    CSL_FINS((reg), PER_REG_FIELD, CSL_##PER_REG_FIELD##_##TOKEN)


/* the "raw" macros */

/* the Field MaKe (Raw) macro */
#define CSL_FMKR(msb, lsb, val)                                             \
    (((val) & ((1 << ((msb) - (lsb) + 1)) - 1)) << (lsb))

/* the Field EXTract (Raw) macro */
#define CSL_FEXTR(reg, msb, lsb)                                            \
    (((reg) >> (lsb)) & ((1 << ((msb) - (lsb) + 1)) - 1))

/* the Field INSert (Raw) macro */
#define CSL_FINSR(reg, msb, lsb, val)                                       \
    ((reg) = ((reg) &~ (((1 << ((msb) - (lsb) + 1)) - 1) << (lsb)))         \
    | CSL_FMKR(msb, lsb, val))

/**************************************************************************\
* Register Overlay Structure for RX_EP 
\**************************************************************************/
typedef struct  {
    volatile INT16U RX_EP;
    volatile INT8U RSVD0[2];
} CSL_UsbfRx_epRegs;

/**************************************************************************\
* Register Overlay Structure for TX_EP 
\**************************************************************************/
typedef struct  {
    volatile INT16U TX_EP;
    volatile INT8U RSVD0[2];
} CSL_UsbfTx_epRegs;

/**************************************************************************\
* Register Overlay Structure
\**************************************************************************/
typedef struct  {

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -