use CFG_TUD_ENDPOINT0_SIZE, rename ep0_data_in_out_buffer to simply ep0_buffer

reformat indent to 2 spaces
This commit is contained in:
hathach
2024-05-21 15:41:59 +07:00
parent 3e604d1d54
commit 4bd72da5cd

View File

@@ -35,10 +35,9 @@
// Max number of bi-directional endpoints including EP0
#define EP_MAX 16
#define CH32_USBHS_EP0_MAX_SIZE (64)
typedef struct {
uint8_t *buffer;
uint8_t* buffer;
uint16_t total_len;
uint16_t queued_len;
uint16_t max_size;
@@ -63,7 +62,7 @@ static xfer_ctl_t xfer_status[EP_MAX][2];
#define EP_RX_DMA_ADDR(ep) *(volatile uint32_t *)((volatile uint32_t *)&(USBHSD->UEP1_RX_DMA) + (ep - 1))
/* Endpoint Buffer */
TU_ATTR_ALIGNED(4) static uint8_t ep0_data_in_out_buffer[CH32_USBHS_EP0_MAX_SIZE];
TU_ATTR_ALIGNED(4) static uint8_t ep0_buffer[CFG_TUD_ENDPOINT0_SIZE];
static void ep_set_response_and_toggle(uint8_t ep_addr, ep_response_list_t response_type) {
uint8_t const ep_num = tu_edpt_number(ep_addr);
@@ -98,7 +97,7 @@ static void ep_set_response_and_toggle(uint8_t ep_addr, ep_response_list_t respo
}
}
static void xfer_data_packet(uint8_t ep_addr, xfer_ctl_t *xfer) {
static void xfer_data_packet(uint8_t ep_addr, xfer_ctl_t* xfer) {
uint8_t const ep_num = tu_edpt_number(ep_addr);
tusb_dir_t const dir = tu_edpt_dir(ep_addr);
@@ -107,9 +106,9 @@ static void xfer_data_packet(uint8_t ep_addr, xfer_ctl_t *xfer) {
uint16_t next_tx_size = TU_MIN(remaining, xfer->max_size);
if (ep_num == 0) {
memcpy(ep0_data_in_out_buffer, &xfer->buffer[xfer->queued_len], next_tx_size);
memcpy(ep0_buffer, &xfer->buffer[xfer->queued_len], next_tx_size);
} else {
EP_TX_DMA_ADDR(ep_num) = (uint32_t)&xfer->buffer[xfer->queued_len];
EP_TX_DMA_ADDR(ep_num) = (uint32_t) &xfer->buffer[xfer->queued_len];
}
EP_TX_LEN(ep_num) = next_tx_size;
@@ -130,7 +129,7 @@ static void xfer_data_packet(uint8_t ep_addr, xfer_ctl_t *xfer) {
}
if (ep_num > 0) {
EP_RX_DMA_ADDR(ep_num) = (uint32_t)&xfer->buffer[xfer->queued_len];
EP_RX_DMA_ADDR(ep_num) = (uint32_t) &xfer->buffer[xfer->queued_len];
EP_RX_MAX_LEN(ep_num) = max_possible_rx_size;
}
}
@@ -138,7 +137,7 @@ static void xfer_data_packet(uint8_t ep_addr, xfer_ctl_t *xfer) {
}
void dcd_init(uint8_t rhport) {
(void)rhport;
(void) rhport;
memset(&xfer_status, 0, sizeof(xfer_status));
@@ -169,29 +168,27 @@ void dcd_init(uint8_t rhport) {
EP_RX_MAX_LEN(ep) = 0;
}
USBHSD->UEP0_DMA = (uint32_t)ep0_data_in_out_buffer;
USBHSD->UEP0_MAX_LEN = CH32_USBHS_EP0_MAX_SIZE;
xfer_status[0][TUSB_DIR_OUT].max_size = CH32_USBHS_EP0_MAX_SIZE;
xfer_status[0][TUSB_DIR_IN].max_size = CH32_USBHS_EP0_MAX_SIZE;
USBHSD->UEP0_DMA = (uint32_t) ep0_buffer;
USBHSD->UEP0_MAX_LEN = CFG_TUD_ENDPOINT0_SIZE;
xfer_status[0][TUSB_DIR_OUT].max_size = CFG_TUD_ENDPOINT0_SIZE;
xfer_status[0][TUSB_DIR_IN].max_size = CFG_TUD_ENDPOINT0_SIZE;
USBHSD->DEV_AD = 0;
USBHSD->CONTROL |= USBHS_DEV_PU_EN;
}
void dcd_int_enable(uint8_t rhport) {
(void)rhport;
(void) rhport;
NVIC_EnableIRQ(USBHS_IRQn);
}
void dcd_int_disable(uint8_t rhport) {
(void)rhport;
(void) rhport;
NVIC_DisableIRQ(USBHS_IRQn);
}
void dcd_edpt_close_all(uint8_t rhport) {
(void)rhport;
(void) rhport;
for (size_t ep = 1; ep < EP_MAX; ep++) {
EP_TX_LEN(ep) = 0;
@@ -205,18 +202,17 @@ void dcd_edpt_close_all(uint8_t rhport) {
}
void dcd_set_address(uint8_t rhport, uint8_t dev_addr) {
(void)dev_addr;
(void) dev_addr;
// Response with zlp status
dcd_edpt_xfer(rhport, 0x80, NULL, 0);
}
void dcd_remote_wakeup(uint8_t rhport) {
(void)rhport;
(void) rhport;
}
void dcd_sof_enable(uint8_t rhport, bool en)
{
void dcd_sof_enable(uint8_t rhport, bool en) {
(void) rhport;
if (en) {
USBHSD->INT_EN |= USBHS_SOF_ACT_EN;
@@ -225,21 +221,21 @@ void dcd_sof_enable(uint8_t rhport, bool en)
}
}
void dcd_edpt0_status_complete(uint8_t rhport, tusb_control_request_t const *request) {
(void)rhport;
void dcd_edpt0_status_complete(uint8_t rhport, tusb_control_request_t const* request) {
(void) rhport;
if (request->bmRequestType_bit.recipient == TUSB_REQ_RCPT_DEVICE &&
request->bmRequestType_bit.type == TUSB_REQ_TYPE_STANDARD &&
request->bRequest == TUSB_REQ_SET_ADDRESS) {
USBHSD->DEV_AD = (uint8_t)request->wValue;
USBHSD->DEV_AD = (uint8_t) request->wValue;
}
EP_TX_CTRL(0) = USBHS_EP_T_RES_NAK | USBHS_EP_T_TOG_0;
EP_RX_CTRL(0) = USBHS_EP_R_RES_NAK | USBHS_EP_R_TOG_0;
}
bool dcd_edpt_open(uint8_t rhport, tusb_desc_endpoint_t const *desc_edpt) {
(void)rhport;
bool dcd_edpt_open(uint8_t rhport, tusb_desc_endpoint_t const* desc_edpt) {
(void) rhport;
uint8_t const ep_num = tu_edpt_number(desc_edpt->bEndpointAddress);
tusb_dir_t const dir = tu_edpt_dir(desc_edpt->bEndpointAddress);
@@ -250,7 +246,7 @@ bool dcd_edpt_open(uint8_t rhport, tusb_desc_endpoint_t const *desc_edpt) {
return true;
}
xfer_ctl_t *xfer = XFER_CTL_BASE(ep_num, dir);
xfer_ctl_t* xfer = XFER_CTL_BASE(ep_num, dir);
xfer->max_size = tu_edpt_packet_size(desc_edpt);
xfer->is_iso = (desc_edpt->bmAttributes.xfer == TUSB_XFER_ISOCHRONOUS);
@@ -276,7 +272,7 @@ bool dcd_edpt_open(uint8_t rhport, tusb_desc_endpoint_t const *desc_edpt) {
}
void dcd_edpt_close(uint8_t rhport, uint8_t ep_addr) {
(void)rhport;
(void) rhport;
uint8_t const ep_num = tu_edpt_number(ep_addr);
tusb_dir_t const dir = tu_edpt_dir(ep_addr);
@@ -295,7 +291,7 @@ void dcd_edpt_close(uint8_t rhport, uint8_t ep_addr) {
}
void dcd_edpt_stall(uint8_t rhport, uint8_t ep_addr) {
(void)rhport;
(void) rhport;
uint8_t const ep_num = tu_edpt_number(ep_addr);
tusb_dir_t const dir = tu_edpt_dir(ep_addr);
@@ -309,7 +305,7 @@ void dcd_edpt_stall(uint8_t rhport, uint8_t ep_addr) {
}
void dcd_edpt_clear_stall(uint8_t rhport, uint8_t ep_addr) {
(void)rhport;
(void) rhport;
uint8_t const ep_num = tu_edpt_number(ep_addr);
tusb_dir_t const dir = tu_edpt_dir(ep_addr);
@@ -321,12 +317,12 @@ void dcd_edpt_clear_stall(uint8_t rhport, uint8_t ep_addr) {
}
}
bool dcd_edpt_xfer(uint8_t rhport, uint8_t ep_addr, uint8_t *buffer, uint16_t total_bytes) {
(void)rhport;
bool dcd_edpt_xfer(uint8_t rhport, uint8_t ep_addr, uint8_t* buffer, uint16_t total_bytes) {
(void) rhport;
uint8_t const ep_num = tu_edpt_number(ep_addr);
tusb_dir_t const dir = tu_edpt_dir(ep_addr);
xfer_ctl_t *xfer = XFER_CTL_BASE(ep_num, dir);
xfer_ctl_t* xfer = XFER_CTL_BASE(ep_num, dir);
xfer->buffer = buffer;
xfer->total_len = total_bytes;
xfer->queued_len = 0;
@@ -338,7 +334,7 @@ bool dcd_edpt_xfer(uint8_t rhport, uint8_t ep_addr, uint8_t *buffer, uint16_t to
}
void dcd_int_handler(uint8_t rhport) {
(void)rhport;
(void) rhport;
uint8_t int_flag = USBHSD->INT_FG;
uint8_t int_status = USBHSD->INT_ST;
@@ -347,7 +343,7 @@ void dcd_int_handler(uint8_t rhport) {
uint8_t ep_num = int_status & MASK_UIS_ENDP;
uint8_t rx_token = int_status & MASK_UIS_TOKEN;
uint8_t ep_addr = (rx_token == USBHS_TOKEN_PID_IN) ? (TUSB_DIR_IN_MASK | ep_num) : ep_num;
xfer_ctl_t *xfer = XFER_CTL_BASE(ep_num, tu_edpt_dir(ep_addr));
xfer_ctl_t* xfer = XFER_CTL_BASE(ep_num, tu_edpt_dir(ep_addr));
if (rx_token == USBHS_TOKEN_PID_OUT) {
uint16_t rx_len = USBHSD->RX_LEN;
@@ -377,14 +373,14 @@ void dcd_int_handler(uint8_t rhport) {
uint8_t ep_num = int_status & MASK_UIS_ENDP;
uint8_t rx_token = int_status & MASK_UIS_TOKEN;
uint8_t ep_addr = (rx_token == USBHS_TOKEN_PID_IN) ? (TUSB_DIR_IN_MASK | ep_num) : ep_num;
xfer_ctl_t *xfer = XFER_CTL_BASE(ep_num, tu_edpt_dir(ep_addr));
xfer_ctl_t* xfer = XFER_CTL_BASE(ep_num, tu_edpt_dir(ep_addr));
if (xfer->is_iso == false) {
if (rx_token == USBHS_TOKEN_PID_OUT) {
uint16_t rx_len = USBHSD->RX_LEN;
if (ep_num == 0) {
memcpy(&xfer->buffer[xfer->queued_len], ep0_data_in_out_buffer, rx_len);
memcpy(&xfer->buffer[xfer->queued_len], ep0_buffer, rx_len);
}
xfer->queued_len += rx_len;
@@ -410,7 +406,7 @@ void dcd_int_handler(uint8_t rhport) {
} else if (int_flag & USBHS_SETUP_FLAG) {
ep_set_response_and_toggle(0x80, EP_RESPONSE_NAK);
ep_set_response_and_toggle(0x00, EP_RESPONSE_NAK);
dcd_event_setup_received(0, ep0_data_in_out_buffer, true);
dcd_event_setup_received(0, ep0_buffer, true);
USBHSD->INT_FG = USBHS_SETUP_FLAG; /* Clear flag */
} else if (int_flag & USBHS_DETECT_FLAG) {
@@ -423,7 +419,7 @@ void dcd_int_handler(uint8_t rhport) {
USBHSD->INT_FG = USBHS_DETECT_FLAG; /* Clear flag */
} else if (int_flag & USBHS_SUSPEND_FLAG) {
dcd_event_t event = { .rhport = rhport, .event_id = DCD_EVENT_SUSPEND };
dcd_event_t event = {.rhport = rhport, .event_id = DCD_EVENT_SUSPEND};
dcd_event_handler(&event, true);
USBHSD->INT_FG = USBHS_SUSPEND_FLAG; /* Clear flag */