summaryrefslogtreecommitdiff
path: root/src/portable/st
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/st
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/st')
-rw-r--r--src/portable/st/synopsys/dcd_synopsys.c25
1 files changed, 13 insertions, 12 deletions
diff --git a/src/portable/st/synopsys/dcd_synopsys.c b/src/portable/st/synopsys/dcd_synopsys.c
index b6dacd927..5f8c44638 100644
--- a/src/portable/st/synopsys/dcd_synopsys.c
+++ b/src/portable/st/synopsys/dcd_synopsys.c
@@ -646,6 +646,7 @@ bool dcd_edpt_xfer (uint8_t rhport, uint8_t ep_addr, uint8_t * buffer, uint16_t
xfer_ctl_t * xfer = XFER_CTL_BASE(epnum, dir);
xfer->buffer = buffer;
+ xfer->ff = NULL;
xfer->total_len = total_bytes;
// EP0 can only handle one packet
@@ -908,7 +909,12 @@ static void handle_rxflvl_ints(uint8_t rhport, USB_OTG_OUTEndpointTypeDef * out_
xfer_ctl_t * xfer = XFER_CTL_BASE(epnum, TUSB_DIR_OUT);
// Read packet off RxFIFO
- if (xfer->buffer)
+ if (xfer->ff)
+ {
+ // Ring buffer
+ tu_fifo_write_n(xfer->ff, (const void *) rx_fifo, bcnt);
+ }
+ else
{
// Linear buffer
read_fifo_packet(rhport, xfer->buffer, bcnt);
@@ -916,11 +922,6 @@ static void handle_rxflvl_ints(uint8_t rhport, USB_OTG_OUTEndpointTypeDef * out_
// Increment pointer to xfer data
xfer->buffer += bcnt;
}
- else
- {
- // Ring buffer
- tu_fifo_write_n(xfer->ff, (const void *) rx_fifo, bcnt);
- }
// Truncate transfer length in case of short packet
if(bcnt < xfer->max_size) {
@@ -1028,18 +1029,18 @@ static void handle_epin_ints(uint8_t rhport, USB_OTG_DeviceTypeDef * dev, USB_OT
}
// Push packet to Tx-FIFO
- if (xfer->buffer)
+ if (xfer->ff)
+ {
+ usb_fifo_t tx_fifo = FIFO_BASE(rhport, n);
+ tu_fifo_read_n(xfer->ff, (void *) tx_fifo, packet_size);
+ }
+ else
{
write_fifo_packet(rhport, n, xfer->buffer, packet_size);
// Increment pointer to xfer data
xfer->buffer += packet_size;
}
- else
- {
- usb_fifo_t tx_fifo = FIFO_BASE(rhport, n);
- tu_fifo_read_n(xfer->ff, (void *) tx_fifo, packet_size);
- }
}
// Turn off TXFE if all bytes are written.