28#ifndef USB_CH32_USBFS_REG_H
29#define USB_CH32_USBFS_REG_H
34#pragma GCC diagnostic push
35#pragma GCC diagnostic ignored "-Wstrict-prototypes"
38#if CFG_TUSB_MCU == OPT_MCU_CH32F20X
40#elif CFG_TUSB_MCU == OPT_MCU_CH32V103
94 #define USBOTG_FS ((USBOTG_FS_TypeDef *) 0x40023400)
95#elif CFG_TUSB_MCU == OPT_MCU_CH32V20X
97#elif CFG_TUSB_MCU == OPT_MCU_CH32V307
99 #define USBHD_IRQn OTG_FS_IRQn
103#pragma GCC diagnostic pop
107#define USBFS_CTRL_DMA_EN (1 << 0)
108#define USBFS_CTRL_CLR_ALL (1 << 1)
109#define USBFS_CTRL_RESET_SIE (1 << 2)
110#define USBFS_CTRL_INT_BUSY (1 << 3)
111#define USBFS_CTRL_SYS_CTRL (1 << 4)
112#define USBFS_CTRL_DEV_PUEN (1 << 5)
113#define USBFS_CTRL_LOW_SPEED (1 << 6)
114#define USBFS_CTRL_HOST_MODE (1 << 7)
117#define USBFS_INT_EN_BUS_RST (1 << 0)
118#define USBFS_INT_EN_DETECT (1 << 0)
119#define USBFS_INT_EN_TRANSFER (1 << 1)
120#define USBFS_INT_EN_SUSPEND (1 << 2)
121#define USBFS_INT_EN_HST_SOF (1 << 3)
122#define USBFS_INT_EN_FIFO_OV (1 << 4)
123#define USBFS_INT_EN_DEV_NAK (1 << 6)
124#define USBFS_INT_EN_DEV_SOF (1 << 7)
127#define USBFS_INT_FG_BUS_RST (1 << 0)
128#define USBFS_INT_FG_DETECT (1 << 0)
129#define USBFS_INT_FG_TRANSFER (1 << 1)
130#define USBFS_INT_FG_SUSPEND (1 << 2)
131#define USBFS_INT_FG_HST_SOF (1 << 3)
132#define USBFS_INT_FG_FIFO_OV (1 << 4)
133#define USBFS_INT_FG_SIE_FREE (1 << 5)
134#define USBFS_INT_FG_TOG_OK (1 << 6)
135#define USBFS_INT_FG_IS_NAK (1 << 7)
138#define USBFS_INT_ST_MASK_UIS_ENDP(x) (((x) >> 0) & 0x0F)
139#define USBFS_INT_ST_MASK_UIS_TOKEN(x) (((x) >> 4) & 0x03)
142#define USBFS_UDEV_CTRL_PORT_EN (1 << 0)
143#define USBFS_UDEV_CTRL_GP_BIT (1 << 1)
144#define USBFS_UDEV_CTRL_LOW_SPEED (1 << 2)
145#define USBFS_UDEV_CTRL_DM_PIN (1 << 4)
146#define USBFS_UDEV_CTRL_DP_PIN (1 << 5)
147#define USBFS_UDEV_CTRL_PD_DIS (1 << 7)
150#define USBFS_EP_T_RES_MASK (3 << 0)
151#define USBFS_EP_T_TOG (1 << 2)
152#define USBFS_EP_T_AUTO_TOG (1 << 3)
154#define USBFS_EP_T_RES_ACK (0 << 0)
155#define USBFS_EP_T_RES_NYET (1 << 0)
156#define USBFS_EP_T_RES_NAK (2 << 0)
157#define USBFS_EP_T_RES_STALL (3 << 0)
160#define USBFS_EP_R_RES_MASK (3 << 0)
161#define USBFS_EP_R_TOG (1 << 2)
162#define USBFS_EP_R_AUTO_TOG (1 << 3)
164#define USBFS_EP_R_RES_ACK (0 << 0)
165#define USBFS_EP_R_RES_NYET (1 << 0)
166#define USBFS_EP_R_RES_NAK (2 << 0)
167#define USBFS_EP_R_RES_STALL (3 << 0)
__IO uint8_t UEP1_RX_CTRL
__IO uint8_t UEP3_RX_CTRL
__IO uint8_t UEP5_TX_CTRL
__IO uint16_t UEP4_TX_LEN
__IO uint8_t UEP6_RX_CTRL
__IO uint16_t UEP3_TX_LEN
__IO uint16_t UEP6_TX_LEN
__IO uint16_t UEP7_TX_LEN
__IO uint8_t UEP2_RX_CTRL
__IO uint8_t UEP5_RX_CTRL
__IO uint8_t UEP2_TX_CTRL
__IO uint16_t UEP5_TX_LEN
__IO uint8_t UEP1_TX_CTRL
__IO uint8_t UEP7_TX_CTRL
__IO uint8_t UEP7_RX_CTRL
__IO uint8_t UEP0_TX_CTRL
__IO uint16_t UEP0_TX_LEN
__IO uint8_t UEP0_RX_CTRL
__IO uint16_t UEP1_TX_LEN
__IO uint8_t UEP4_TX_CTRL
__IO uint8_t UEP3_TX_CTRL
__IO uint8_t UEP4_RX_CTRL
__IO uint16_t UEP2_TX_LEN
__IO uint8_t UEP6_TX_CTRL