doubao_chat/include_lib/driver/cpu/wl82/asm/usb.h

242 lines
8.1 KiB
C

#ifndef _USB_H_
#define _USB_H_
#include "typedef.h"
#include "generic/ioctl.h"
#define HUSB_MODE 1
#define USB_HUB 0
#ifndef min
#define min(a,b) ((a)<(b) ? (a) : (b))
#endif
#ifndef USB_DIR_OUT
#define USB_DIR_OUT 0 /* to device */
#endif
#ifndef USB_DIR_IN
#define USB_DIR_IN 0x80 /* to host */
#endif
#define FUSB_MODE 0
#define EP0_SETUP_LEN 0x40
#define USB_MAX_HW_EPNUM 5
//USB_CON0
#define PHY_ON 0
#define LOW_SPEED 1
#define USB_NRST 2
#define TM1 3
#define CID 4
#define VBUS 5
#define USB_TEST 6
#define PDCHKDP 9
#define SOFIE 10
#define SIEIE 11
#define CLR_SOF_PND 12
#define SOF_PND 13
#define SIE_PND 14
#define CHKDPO 15
#define DM_SE 16
#define DP_SE 17
//USB_CON1
#define MC_RNW 14
#define MACK 15
//USB_IO_CON0
#define DPOUT 0
#define DMOUT 1
#define DPIE 2
#define DMIE 3
#define DPPD 4
#define DMPD 5
#define DPPU 6
#define DMPU 7
#define IO_PU_MODE 8
#define DPDIE 9
#define DMDIE 10
#define IO_MODE 11
#define SR 12
#define DPDIEH 13
#define DMDIEH 14
//HUSB_SIE_CON
#define HUSB_SYS_NRST 0
#define HUSB_SIE_EN 1
#define HUSB_TM1 2
#define HUSB_SIE_NRST 4
#define HUSB_SIE_PND 5
#define HUSB_CLR_SOF_PND 6
#define HUSB_SOF_PND 7
//#define EP4_TX_ISO 8
//#define EP4_RX_ISO 9
#define HUSB_SOFIE 10
#define HUSB_RD_BLOCK 11
#define HUSB_INT_MODE 12
#define HUSB_CLR_INTR_USB 13
#define HUSB_CLR_INTR_TX 14
#define HUSB_CLR_INTR_RX 15
//#define HUSB_EP3_TX_ISO 16
//#define HUSB_EP3_RX_ISO 17
//HUSB_PHY0_CON0
#define HUSB_CLK_EN 0
#define HUSB_UTM_EN 1
#define HUSB_TRAN_EN 2
#define HUSB_TX_BIAS 3
#define HUSB_RX_BIAS 4
#define HUSB_HD_PULL 5
#define HUSB_DP_PU1_5K 6
#define HUSB_DP_PU1_0K 7
#define HUSB_DP_PD 8
#define HUSB_DM_PD 9
#define HUSB_CMP_EN 10
#define HUSB_CMP_CLK 11
#define HUSB_CMP_RTUNE 12
#define HUSB_CMP_DP 13
#define HUSB_CMP_DM 14
#define HUSB_CMP_ANA 15
#define HUSB_HD_FS_EN 16
#define HUSB_HD_FS_DP 17
#define HUSB_HD_FS_DM 18
#define HUSB_HD_HS_EN 19
#define HUSB_HD_HS_DAT 20
#define HUSB_HD_HS_TOG 21
#define HUSB_CPU_IDDIG 22
#define HUSB_CPU_AVALID 23
#define HUSB_CPU_SESSEND 24
#define HUSB_CPU_VBUSVALID 25
#define HUSB_CPU_HD_DISC 26
#define HUSB_CPU_HOST_DISC 27
#define HUSB_PD_CHK_EN 28
#define HUSB_PD_CHK_DP 29
#define HUSB_PD_CHK_DM 30
//HUSB_PHY0_CON1
#define HUSB_RD_DP_SE 15
#define HUSB_RD_DM_SE 16
#define HUSB_RD_CHK_DPO 17
#define HUSB_RD_CHK_DMO 18
enum {
USB0,
USB1,
/* USB_MAX_HW_NUM, */
};
#define USB_MAX_HW_NUM 2
struct usb_ep_addr_t {
u32 ep0_addr;
u32 ep_usage ;
u32 ep_taddr[4];
u32 ep_dual_taddr[4];
u32 ep_raddr[4];
u32 ep_dual_raddr[4];
u32 ep_tsize[4];
u32 ep_rsize[4];
} __attribute__((aligned(4)));
typedef u8 usb_dev;
u16 musb_read_sofframe(const usb_dev id);
u32 musb_read_usb(const usb_dev usb_id, u32 addr);
void musb_write_usb(const usb_dev usb_id, u32 addr, u32 data);
u32 usb_dev_con0(const usb_dev usb_id);
void usb_sie_enable(const usb_dev usb_id);
void usb_sie_disable(const usb_dev id);
void usb_write_ep_cnt(const usb_dev usb_id, u32 ep, u32 len);
u32 usb_g_dev_status(const usb_dev usb_id);
u32 usb_h_dev_status(const usb_dev usb_id);
void usb_set_low_speed(const usb_dev usb_id, u8 flag);
void usb_write_ep0(const usb_dev usb_id, const u8 *ptr, u32 len);
void usb_read_ep0(const usb_dev usb_id, u8 *ptr, u32 len);
void *usb_get_dma_taddr(const usb_dev usb_id, u32 ep);
u32 usb_get_dma_size(const usb_dev usb_id, u32 ep);
void usb_set_dma_tsize(const usb_dev usb_id, u32 ep, u32 size);
void usb_set_dma_rsize(const usb_dev usb_id, u32 ep, u32 size);
void usb_set_dma_taddr(const usb_dev usb_id, u32 ep, void *ptr);
void *usb_get_dma_raddr(const usb_dev usb_id, u32 ep);
void usb_set_dma_raddr(const usb_dev usb_id, u32 ep, void *ptr);
void usb_set_dma_dual_raddr(const usb_dev usb_id, u32 ep, void *ptr);
void musb_write_index(const usb_dev usb_id, u32 endpoint);
void usb_write_power(const usb_dev usb_id, u32 value);
u32 usb_read_power(const usb_dev usb_id);
u32 usb_read_devctl(const usb_dev usb_id);
void usb_write_devctl(const usb_dev usb_id, u32 value);
u32 usb_read_csr0(const usb_dev usb_id);
void usb_write_csr0(const usb_dev usb_id, u32 csr0);
void usb_ep0_ClrRxPktRdy(const usb_dev usb_id);
void usb_ep0_TxPktEnd(const usb_dev usb_id);
void usb_ep0_RxPktEnd(const usb_dev usb_id);
void usb_ep0_Set_Stall(const usb_dev usb_id);
u32 usb_read_count0(const usb_dev usb_id);
void usb_read_intre(const usb_dev usb_id,
u32 *const intr_usbe,
u32 *const intr_txe,
u32 *const intr_rxe);
void usb_read_intr(const usb_dev usb_id,
u32 *const intr_usb,
u32 *const intr_tx,
u32 *const intr_rx);
void usb_write_intr_usbe(const usb_dev usb_id, u32 intr_usbe);
void usb_set_intr_txe(const usb_dev usb_id, const u32 ep);
void usb_clr_intr_txe(const usb_dev usb_id, const u32 ep);
void usb_set_intr_rxe(const usb_dev usb_id, const u32 ep);
void usb_clr_intr_rxe(const usb_dev usb_id, const u32 ep);
void usb_write_faddr(const usb_dev usb_id, u32 addr);
void usb_write_txcsr(const usb_dev usb_id, const u32 ep, u32 txcsr);
u32 usb_read_txcsr(const usb_dev usb_id, const u32 ep);
void usb_write_rxcsr(const usb_dev usb_id, const u32 ep, u32 rxcsr);
u32 usb_read_rxcsr(const usb_dev usb_id, const u32 ep);
void usb_write_rxmaxp(const usb_dev usb_id, const u32 ep, u32 value);
void usb_write_txmaxp(const usb_dev usb_id, const u32 ep, u32 value);
void usb_write_rxtype(const usb_dev usb_id, const u32 ep, u32 value);
void usb_write_txtype(const usb_dev usb_id, const u32 ep, u32 value);
u32 usb_read_rxcount(const usb_dev usb_id, u32 ep);
u32 usb_g_ep_config(const usb_dev usb_id, const u32 ep, u32 type, u32 ie, u8 *ptr, u32 dma_size);
u32 usb_g_ep_read64byte_fast(const usb_dev usb_id, const u32 ep, u8 *ptr, u32 len);
u32 usb_g_ep_read(const usb_dev usb_id, const u32 ep, u8 *ptr, u32 len, u32 block);
u32 usb_g_ep_write(const usb_dev usb_id, u32 ep, const u8 *ptr, u32 len);
u32 usb_g_ep_config(const usb_dev usb_id, u32 ep, u32 type, u32 ie, u8 *ptr, u32 dma_size);
void usb_g_sie_init(const usb_dev usb_id);
void usb_g_hold(const usb_dev usb_id);
u32 usb_get_ep_num(const usb_dev usb_id, u32 ep_dir, u32 type);
u32 usb_h_ep_config(const usb_dev usb_id, u32 ep, u32 type, u32 ie, u32 interval, u8 *ptr, u32 dma_szie);
void usb_mdelay(unsigned int ms);
int usb_h_ep_write(const usb_dev usb_id, u8 host_ep, u16 txmaxp, u8 target_ep, const u8 *ptr, u32 len, u32 xfer);
int usb_h_ep_write_async(const usb_dev id, u8 host_ep, u16 txmaxp, u8 target_ep, const u8 *ptr, u32 len, u32 xfer, u32 kstart);
int usb_h_ep_read(const usb_dev usb_id, u8 host_ep, u16 rxmaxp, u8 target_ep, u8 *ptr, u32 len, u32 xfer);
int usb_h_ep_read_async(const usb_dev id, u8 host_ep, u8 target_ep, u8 *ptr, u32 len, u32 xfer, u32 kstart);
void usb_h_sie_init(const usb_dev usb_id);
void usb_h_sie_close(const usb_dev usb_id);
int usb_h_chirp_and_reset(const usb_dev id, u32 reset_delay, u32 timeout);
void usb_h_sie_reset(const usb_dev usb_id);
void usb_hotplug_disable(const usb_dev usb_id);
void usb_hotplug_enable(const usb_dev usb_id, u32 mode);
void usb_sie_close(const usb_dev usb_id);
void usb_sie_close_all(void);
void usb_io_reset(const usb_dev usb_id);
void usb_var_init(const usb_dev usb_id, void *ptr);
void usb_var_release(const usb_dev usb_id);
void usb_enable_ep(const usb_dev usb_id, u32 eps);
void usb_disable_ep(const usb_dev usb_id, u32 eps);
void usb_sofie_enable(const usb_dev id);
void usb_sofie_disable(const usb_dev id);
void usb_sof_clr_pnd(const usb_dev id);
void usb_ep0_Set_ignore(const usb_dev id, u32 addr);
void usb_recover_io_status(const usb_dev id);
void usb_write_rxinterval(const usb_dev id, const u32 ep, u32 value);
#endif