revert dcd_edpt_xfer_fifo() implementation for nuc120 121

This commit is contained in:
hathach 2021-04-06 00:13:12 +07:00
parent 49b2d8f26c
commit 69ad092fce
2 changed files with 16 additions and 4 deletions

View File

@ -77,7 +77,7 @@ static bool active_ep0_xfer;
static struct xfer_ctl_t static struct xfer_ctl_t
{ {
uint8_t *data_ptr; /* data_ptr tracks where to next copy data to (for OUT) or from (for IN) */ uint8_t *data_ptr; /* data_ptr tracks where to next copy data to (for OUT) or from (for IN) */
tu_fifo_t * ff; /* pointer to FIFO required for dcd_edpt_xfer_fifo() */ // tu_fifo_t * ff; /* pointer to FIFO required for dcd_edpt_xfer_fifo() */ // TODO support dcd_edpt_xfer_fifo API
union { union {
uint16_t in_remaining_bytes; /* for IN endpoints, we track how many bytes are left to transfer */ uint16_t in_remaining_bytes; /* for IN endpoints, we track how many bytes are left to transfer */
uint16_t out_bytes_so_far; /* but for OUT endpoints, we track how many bytes we've transferred so far */ uint16_t out_bytes_so_far; /* but for OUT endpoints, we track how many bytes we've transferred so far */
@ -144,11 +144,13 @@ static void dcd_in_xfer(struct xfer_ctl_t *xfer, USBD_EP_T *ep)
{ {
uint16_t bytes_now = tu_min16(xfer->in_remaining_bytes, xfer->max_packet_size); uint16_t bytes_now = tu_min16(xfer->in_remaining_bytes, xfer->max_packet_size);
#if 0 // TODO support dcd_edpt_xfer_fifo API
if (xfer->ff) if (xfer->ff)
{ {
tu_fifo_read_n(xfer->ff, (void *) (USBD_BUF_BASE + ep->BUFSEG), bytes_now); tu_fifo_read_n(xfer->ff, (void *) (USBD_BUF_BASE + ep->BUFSEG), bytes_now);
} }
else else
#endif
{ {
memcpy((uint8_t *)(USBD_BUF_BASE + ep->BUFSEG), xfer->data_ptr, bytes_now); memcpy((uint8_t *)(USBD_BUF_BASE + ep->BUFSEG), xfer->data_ptr, bytes_now);
} }
@ -277,7 +279,7 @@ bool dcd_edpt_xfer(uint8_t rhport, uint8_t ep_addr, uint8_t *buffer, uint16_t to
/* store away the information we'll needing now and later */ /* store away the information we'll needing now and later */
xfer->data_ptr = buffer; xfer->data_ptr = buffer;
xfer->ff = NULL; // xfer->ff = NULL; // TODO support dcd_edpt_xfer_fifo API
xfer->in_remaining_bytes = total_bytes; xfer->in_remaining_bytes = total_bytes;
xfer->total_bytes = total_bytes; xfer->total_bytes = total_bytes;
@ -297,6 +299,7 @@ bool dcd_edpt_xfer(uint8_t rhport, uint8_t ep_addr, uint8_t *buffer, uint16_t to
return true; return true;
} }
#if 0 // TODO support dcd_edpt_xfer_fifo API
bool dcd_edpt_xfer_fifo (uint8_t rhport, uint8_t ep_addr, tu_fifo_t * ff, uint16_t total_bytes) bool dcd_edpt_xfer_fifo (uint8_t rhport, uint8_t ep_addr, tu_fifo_t * ff, uint16_t total_bytes)
{ {
(void) rhport; (void) rhport;
@ -324,6 +327,7 @@ bool dcd_edpt_xfer_fifo (uint8_t rhport, uint8_t ep_addr, tu_fifo_t * ff, uint16
return true; return true;
} }
#endif
void dcd_edpt_stall(uint8_t rhport, uint8_t ep_addr) void dcd_edpt_stall(uint8_t rhport, uint8_t ep_addr)
{ {
@ -428,11 +432,13 @@ void dcd_int_handler(uint8_t rhport)
if (out_ep) if (out_ep)
{ {
/* copy the data from the PC to the previously provided buffer */ /* copy the data from the PC to the previously provided buffer */
#if 0 // // TODO support dcd_edpt_xfer_fifo API
if (xfer->ff) if (xfer->ff)
{ {
tu_fifo_write_n(xfer->ff, (const void *) (USBD_BUF_BASE + ep->BUFSEG), available_bytes); tu_fifo_write_n(xfer->ff, (const void *) (USBD_BUF_BASE + ep->BUFSEG), available_bytes);
} }
else else
#endif
{ {
memcpy(xfer->data_ptr, (uint8_t *)(USBD_BUF_BASE + ep->BUFSEG), available_bytes); memcpy(xfer->data_ptr, (uint8_t *)(USBD_BUF_BASE + ep->BUFSEG), available_bytes);
xfer->data_ptr += available_bytes; xfer->data_ptr += available_bytes;

View File

@ -79,7 +79,7 @@ static bool active_ep0_xfer;
static struct xfer_ctl_t static struct xfer_ctl_t
{ {
uint8_t *data_ptr; /* data_ptr tracks where to next copy data to (for OUT) or from (for IN) */ uint8_t *data_ptr; /* data_ptr tracks where to next copy data to (for OUT) or from (for IN) */
tu_fifo_t * ff; // tu_fifo_t * ff; // TODO support dcd_edpt_xfer_fifo API
union { union {
uint16_t in_remaining_bytes; /* for IN endpoints, we track how many bytes are left to transfer */ uint16_t in_remaining_bytes; /* for IN endpoints, we track how many bytes are left to transfer */
uint16_t out_bytes_so_far; /* but for OUT endpoints, we track how many bytes we've transferred so far */ uint16_t out_bytes_so_far; /* but for OUT endpoints, we track how many bytes we've transferred so far */
@ -146,11 +146,13 @@ static void dcd_in_xfer(struct xfer_ctl_t *xfer, USBD_EP_T *ep)
{ {
uint16_t bytes_now = tu_min16(xfer->in_remaining_bytes, xfer->max_packet_size); uint16_t bytes_now = tu_min16(xfer->in_remaining_bytes, xfer->max_packet_size);
#if 0 // TODO support dcd_edpt_xfer_fifo API
if (xfer->ff) if (xfer->ff)
{ {
tu_fifo_read_n(xfer->ff, (void *) (USBD_BUF_BASE + ep->BUFSEG), bytes_now); tu_fifo_read_n(xfer->ff, (void *) (USBD_BUF_BASE + ep->BUFSEG), bytes_now);
} }
else else
#endif
{ {
memcpy((uint8_t *)(USBD_BUF_BASE + ep->BUFSEG), xfer->data_ptr, bytes_now); memcpy((uint8_t *)(USBD_BUF_BASE + ep->BUFSEG), xfer->data_ptr, bytes_now);
} }
@ -283,7 +285,7 @@ bool dcd_edpt_xfer(uint8_t rhport, uint8_t ep_addr, uint8_t *buffer, uint16_t to
/* store away the information we'll needing now and later */ /* store away the information we'll needing now and later */
xfer->data_ptr = buffer; xfer->data_ptr = buffer;
xfer->ff = NULL; // xfer->ff = NULL; // TODO support dcd_edpt_xfer_fifo API
xfer->in_remaining_bytes = total_bytes; xfer->in_remaining_bytes = total_bytes;
xfer->total_bytes = total_bytes; xfer->total_bytes = total_bytes;
@ -303,6 +305,7 @@ bool dcd_edpt_xfer(uint8_t rhport, uint8_t ep_addr, uint8_t *buffer, uint16_t to
return true; return true;
} }
#if 0 // TODO support dcd_edpt_xfer_fifo API
bool dcd_edpt_xfer_fifo (uint8_t rhport, uint8_t ep_addr, tu_fifo_t * ff, uint16_t total_bytes) bool dcd_edpt_xfer_fifo (uint8_t rhport, uint8_t ep_addr, tu_fifo_t * ff, uint16_t total_bytes)
{ {
(void) rhport; (void) rhport;
@ -330,6 +333,7 @@ bool dcd_edpt_xfer_fifo (uint8_t rhport, uint8_t ep_addr, tu_fifo_t * ff, uint16
return true; return true;
} }
#endif
void dcd_edpt_stall(uint8_t rhport, uint8_t ep_addr) void dcd_edpt_stall(uint8_t rhport, uint8_t ep_addr)
{ {
@ -439,11 +443,13 @@ void dcd_int_handler(uint8_t rhport)
if (out_ep) if (out_ep)
{ {
/* copy the data from the PC to the previously provided buffer */ /* copy the data from the PC to the previously provided buffer */
#if 0 // TODO support dcd_edpt_xfer_fifo API
if (xfer->ff) if (xfer->ff)
{ {
tu_fifo_write_n(xfer->ff, (const void *) (USBD_BUF_BASE + ep->BUFSEG), available_bytes); tu_fifo_write_n(xfer->ff, (const void *) (USBD_BUF_BASE + ep->BUFSEG), available_bytes);
} }
else else
#endif
{ {
memcpy(xfer->data_ptr, (uint8_t *)(USBD_BUF_BASE + ep->BUFSEG), available_bytes); memcpy(xfer->data_ptr, (uint8_t *)(USBD_BUF_BASE + ep->BUFSEG), available_bytes);
xfer->data_ptr += available_bytes; xfer->data_ptr += available_bytes;