diff options
| author | Reinhard Panhuber <[email protected]> | 2021-02-14 09:25:34 +0100 |
|---|---|---|
| committer | Reinhard Panhuber <[email protected]> | 2021-02-14 09:25:34 +0100 |
| commit | 893f997dcb09ffef872ab7cb9a5c0a74839f5715 (patch) | |
| tree | b4cf98ff49b8e0360c4a006237fefdd081061706 /src/portable/microchip | |
| parent | b634b5958b92fc2352ea20e279e010d8bf4f2df2 (diff) | |
Change FIFO use indication to ff == NULL to avoid future errors.
This way people don't need to pay attention for the buffer pointer
Diffstat (limited to 'src/portable/microchip')
| -rw-r--r-- | src/portable/microchip/samg/dcd_samg.c | 16 |
1 files changed, 9 insertions, 7 deletions
diff --git a/src/portable/microchip/samg/dcd_samg.c b/src/portable/microchip/samg/dcd_samg.c index 6e7e84a99..12b2633a0 100644 --- a/src/portable/microchip/samg/dcd_samg.c +++ b/src/portable/microchip/samg/dcd_samg.c @@ -61,6 +61,7 @@ void xfer_epsize_set(xfer_desc_t* xfer, uint16_t epsize) void xfer_begin(xfer_desc_t* xfer, uint8_t * buffer, uint16_t total_bytes) { xfer->buffer = buffer; + xfer->ff = NULL; xfer->total_len = total_bytes; xfer->actual_len = 0; } @@ -68,6 +69,7 @@ void xfer_begin(xfer_desc_t* xfer, uint8_t * buffer, uint16_t total_bytes) void xfer_end(xfer_desc_t* xfer) { xfer->buffer = NULL; + xfer->ff = NULL; xfer->total_len = 0; xfer->actual_len = 0; } @@ -82,7 +84,7 @@ void xfer_packet_done(xfer_desc_t* xfer) { uint16_t const xact_len = xfer_packet_len(xfer); - if (xfer->buffer) xfer->buffer += xact_len; + xfer->buffer += xact_len; xfer->actual_len += xact_len; } @@ -436,13 +438,13 @@ void dcd_int_handler(uint8_t rhport) if (xact_len) { // write to EP fifo - if (xfer->buffer) + if (xfer->ff) { - xact_ep_write(epnum, xfer->buffer, xact_len); + tu_fifo_read_n(ff, (void *) &UDP->UDP_FDR[epnum], xact_len); } else { - tu_fifo_read_n(ff, (void *) &UDP->UDP_FDR[epnum], xact_len); + xact_ep_write(epnum, xfer->buffer, xact_len); } // TX ready for transfer @@ -469,13 +471,13 @@ void dcd_int_handler(uint8_t rhport) uint16_t const xact_len = (uint16_t) ((UDP->UDP_CSR[epnum] & UDP_CSR_RXBYTECNT_Msk) >> UDP_CSR_RXBYTECNT_Pos); // Read from EP fifo - if (xfer->buffer) + if (xfer->ff) { - xact_ep_read(epnum, xfer->buffer, xact_len); + tu_fifo_write_n(xfer->ff, (const void *) &UDP->UDP_FDR[epnum], xact_len); } else { - tu_fifo_write_n(xfer->ff, (const void *) &UDP->UDP_FDR[epnum], xact_len); + xact_ep_read(epnum, xfer->buffer, xact_len); } xfer_packet_done(xfer); |
