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/st | |
| 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/st')
| -rw-r--r-- | src/portable/st/synopsys/dcd_synopsys.c | 25 |
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. |
