summaryrefslogtreecommitdiff
path: root/src/portable/microchip
diff options
context:
space:
mode:
authorReinhard Panhuber <[email protected]>2021-02-14 09:25:34 +0100
committerReinhard Panhuber <[email protected]>2021-02-14 09:25:34 +0100
commit893f997dcb09ffef872ab7cb9a5c0a74839f5715 (patch)
treeb4cf98ff49b8e0360c4a006237fefdd081061706 /src/portable/microchip
parentb634b5958b92fc2352ea20e279e010d8bf4f2df2 (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.c16
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);