📄 drv_usb.h
字号:
/*---------------------------------------------------------------
* 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 + -