| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193 |
- #ifndef MTK_USB_DRV_H
- #define MTK_USB_DRV_H
- #include "mu3d_hal_hw.h"
- #undef EXTERN
- #ifdef _MTK_USB_DRV_EXT_
- #define EXTERN
- #else
- #define EXTERN \
- extern
- #endif
- #define MAX_EP_NUM 8 /* 4 Tx and 4 Rx */
- #define USB_BUF_SIZE 65536
- #define MAX_SLOT (2-1)
- /*EP0, TX, RX has separate SRAMs*/
- #define USB_TX_FIFO_START_ADDRESS 0
- #define USB_RX_FIFO_START_ADDRESS 0
- #ifndef IRQ_USB_MC_NINT_CODE
- #define IRQ_USB_MC_NINT_CODE 8
- #endif
- #ifndef IRQ_USB_DMA_NINT_CODE
- #define IRQ_USB_DMA_NINT_CODE 9
- #endif
- /* IN, OUT pipe index for ep_number */
- typedef enum {
- USB_TX = 0,
- USB_RX
- } USB_DIR;
- /* CTRL, BULK, INTR, ISO endpoint */
- typedef enum {
- USB_CTRL = 0,
- USB_BULK = 2,
- USB_INTR = 3,
- USB_ISO = 1
- } TRANSFER_TYPE;
- typedef enum {
- SSUSB_SPEED_INACTIVE = 0,
- SSUSB_SPEED_FULL = 1,
- SSUSB_SPEED_HIGH = 3,
- SSUSB_SPEED_SUPER = 4,
- } USB_SPEED;
- typedef enum {
- EP0_IDLE = 0,
- EP0_TX,
- EP0_RX,
- } EP0_STATE;
- struct USB_EP_SETTING {
- TRANSFER_TYPE transfer_type;
- DEV_UINT32 fifoaddr;
- DEV_UINT32 fifosz;
- DEV_UINT32 maxp;
- USB_DIR dir;
- DEV_UINT8 enabled;
- };
- struct USB_REQ {
- DEV_UINT8 *buf;
- /* DEV_UINT8* dma_adr; */
- dma_addr_t dma_adr;
- DEV_UINT32 actual;
- DEV_UINT32 count;
- DEV_UINT32 currentCount;
- DEV_UINT32 complete;
- DEV_UINT32 needZLP;
- DEV_UINT32 transferCount;
- };
- struct USB_TEST_SETTING {
- USB_SPEED speed;
- struct USB_EP_SETTING ep_setting[2 * MAX_EP_NUM + 1];
- };
- /*=============================================
- *
- * USB 3 test
- *
- *=============================================*/
- /* #define NUM_TXENDPS 4 */
- /* #define NUM_RXENDPS 4 */
- /* #define NUM_EPS (NUM_TXENDPS + NUM_RXENDPS + 1) */
- /* #define MGC_END0_FIFOSIZE 64 */
- /* #define MGC_RX_DMA_ENABLE_LEVEL 32 */
- /* #define IsDbf 0x00000001 */
- /* #define IsTx 0x00000002 */
- /* #define IsHalt 0x00000004 */
- /* #define IsEnabled 0x80000000 */
- /* #define REQUEST_START_TX 0x1 */
- /* #define REQUEST_START_RX 0x2 */
- /*
- * USB directions
- *
- * This bit flag is used in endpoint descriptors' bEndpointAddress field.
- * It's also one of three fields in control requests bRequestType.
- */
- #define USB_DIR_OUT 0 /* to device */
- #define USB_DIR_IN 0x80 /* to host */
- #define USB_DIR_MASK 0x80 /* to host */
- /*
- * USB request types
- */
- #define USB_TYPE_MASK (0x03 << 5)
- #define USB_TYPE_STANDARD (0x00 << 5)
- #define USB_TYPE_CLASS (0x01 << 5)
- #define USB_TYPE_VENDOR (0x02 << 5)
- #define USB_TYPE_RESERVED (0x03 << 5)
- /*
- * Standard requests
- */
- #define USB_REQ_GET_STATUS 0x00
- #define USB_REQ_CLEAR_FEATURE 0x01
- #define USB_REQ_SET_FEATURE 0x03
- #define USB_REQ_SET_ADDRESS 0x05
- #define USB_REQ_GET_DESCRIPTOR 0x06
- #define USB_REQ_SET_DESCRIPTOR 0x07
- #define USB_REQ_GET_CONFIGURATION 0x08
- #define USB_REQ_SET_CONFIGURATION 0x09
- #define USB_REQ_GET_INTERFACE 0x0A
- #define USB_REQ_SET_INTERFACE 0x0B
- #define USB_REQ_SYNCH_FRAME 0x0C
- #define USB_REQ_EP0_IN_STALL 0xFD
- #define USB_REQ_EP0_OUT_STALL 0xFE
- #define USB_REQ_EP0_STALL 0xFF
- EXTERN struct USB_REQ g_u3d_req[2 * MAX_EP_NUM + 1];
- EXTERN struct USB_TEST_SETTING g_u3d_setting;
- EXTERN DEV_UINT32 g_TxFIFOadd;
- EXTERN DEV_UINT32 g_RxFIFOadd;
- EXTERN struct USB_REQ *mu3d_hal_get_req(DEV_INT32 ep_num, USB_DIR dir);
- EXTERN void mu3d_hal_pdn_dis(void);
- EXTERN void mu3d_hal_ssusb_en(void);
- EXTERN void _ex_mu3d_hal_ssusb_en(void);
- EXTERN void mu3d_hal_rst_dev(void);
- EXTERN DEV_INT32 mu3d_hal_check_clk_sts(void);
- EXTERN DEV_INT32 mu3d_hal_link_up(DEV_INT32 latch_val);
- EXTERN void mu3d_hal_initr_dis(void);
- EXTERN void mu3d_hal_clear_intr(void);
- EXTERN void mu3d_hal_system_intr_en(void);
- EXTERN void _ex_mu3d_hal_system_intr_en(void);
- EXTERN DEV_INT32 mu3d_hal_read_fifo_burst(DEV_INT32 ep_num, DEV_UINT8 *buf);
- EXTERN DEV_INT32 mu3d_hal_read_fifo(DEV_INT32 ep_num, DEV_UINT8 *buf);
- EXTERN DEV_INT32 mu3d_hal_write_fifo_burst(DEV_INT32 ep_num, DEV_INT32 length, DEV_UINT8 *buf,
- DEV_INT32 maxp);
- EXTERN DEV_INT32 mu3d_hal_write_fifo(DEV_INT32 ep_num, DEV_INT32 length, DEV_UINT8 *buf,
- DEV_INT32 maxp);
- EXTERN void _ex_mu3d_hal_ep_enable(DEV_UINT8 ep_num, USB_DIR dir, TRANSFER_TYPE type,
- DEV_INT32 maxp, DEV_INT8 interval, DEV_INT8 slot, DEV_INT8 burst,
- DEV_INT8 mult);
- EXTERN void mu3d_hal_ep_enable(DEV_UINT8 ep_num, USB_DIR dir, TRANSFER_TYPE type, DEV_INT32 maxp,
- DEV_INT8 interval, DEV_INT8 slot, DEV_INT8 burst, DEV_INT8 mult);
- EXTERN void mu3d_hal_resume(void);
- EXTERN void mu3d_hal_u2dev_connect(void);
- EXTERN void mu3d_hal_u2dev_disconn(void);
- EXTERN void mu3d_hal_u3dev_en(void);
- EXTERN void mu3d_hal_u3dev_dis(void);
- EXTERN void mu3d_hal_unfigured_ep(void);
- EXTERN void mu3d_hal_unfigured_ep_num(DEV_UINT8 ep_num, USB_DIR dir);
- EXTERN void mu3d_hal_set_speed(USB_SPEED usb_speed);
- EXTERN void mu3d_hal_det_speed(USB_SPEED speed, DEV_UINT8 det_speed);
- EXTERN void mu3d_hal_pdn_cg_en(void);
- EXTERN void mu3d_hal_pdn_ip_port(DEV_UINT8 on, DEV_UINT8 touch_dis, DEV_UINT8 u3, DEV_UINT8 u2);
- EXTERN void mu3d_hal_dft_reg(void);
- #undef EXTERN
- #endif /* USB_DRV_H */
|