From c13206f3eea1a01848cbabc4b57a85f9cb02b17a Mon Sep 17 00:00:00 2001 From: gdisirio Date: Tue, 21 Aug 2012 08:50:11 +0000 Subject: git-svn-id: svn://svn.code.sf.net/p/chibios/svn/trunk@4599 35acf78f-673a-0410-8e92-d51de3d6d3f4 --- os/hal/platforms/STM32/USBv1/usb_lld.c | 12 +++++++----- os/hal/platforms/STM32/USBv1/usb_lld.h | 5 +++++ 2 files changed, 12 insertions(+), 5 deletions(-) (limited to 'os/hal/platforms/STM32/USBv1') diff --git a/os/hal/platforms/STM32/USBv1/usb_lld.c b/os/hal/platforms/STM32/USBv1/usb_lld.c index 0b72c3a56..1e35336df 100644 --- a/os/hal/platforms/STM32/USBv1/usb_lld.c +++ b/os/hal/platforms/STM32/USBv1/usb_lld.c @@ -81,6 +81,7 @@ static const USBEndpointConfig ep0config = { 0x40, &ep0_state.in, &ep0_state.out, + 1, ep0setup_buffer }; @@ -347,7 +348,6 @@ CH_IRQ_HANDLER(STM32_USB1_LP_HANDLER) { EPR_CLEAR_CTR_TX(ep); n = (size_t)USB_GET_DESCRIPTOR(ep)->TXCOUNT0; - epcp->in_state->mode.linear.txbuf += n; epcp->in_state->txcnt += n; epcp->in_state->txsize -= n; if (epcp->in_state->txsize > 0) { @@ -361,10 +361,12 @@ CH_IRQ_HANDLER(STM32_USB1_LP_HANDLER) { usb_packet_write_from_queue(USB_GET_DESCRIPTOR(ep), epcp->in_state->mode.queue.txqueue, n); - else + else { + epcp->in_state->mode.linear.txbuf += n; usb_packet_write_from_buffer(USB_GET_DESCRIPTOR(ep), epcp->in_state->mode.linear.txbuf, n); + } chSysLockFromIsr(); usb_lld_start_in(usbp, ep); chSysUnlockFromIsr(); @@ -391,13 +393,13 @@ CH_IRQ_HANDLER(STM32_USB1_LP_HANDLER) { usb_packet_read_to_queue(udp, epcp->out_state->mode.queue.rxqueue, n); - else + else { usb_packet_read_to_buffer(udp, epcp->out_state->mode.linear.rxbuf, n); - + epcp->out_state->mode.linear.rxbuf += n; + } /* Transaction data updated.*/ - epcp->out_state->mode.linear.rxbuf += n; epcp->out_state->rxcnt += n; epcp->out_state->rxsize -= n; epcp->out_state->rxpkts -= 1; diff --git a/os/hal/platforms/STM32/USBv1/usb_lld.h b/os/hal/platforms/STM32/USBv1/usb_lld.h index 7e7253abd..bce83681a 100644 --- a/os/hal/platforms/STM32/USBv1/usb_lld.h +++ b/os/hal/platforms/STM32/USBv1/usb_lld.h @@ -236,6 +236,11 @@ typedef struct { */ USBOutEndpointState *out_state; /* End of the mandatory fields.*/ + /** + * @brief Reserved field, not currently used. + * @note Initialize this field to 1 in order to be forward compatible. + */ + uint16_t ep_buffers; /** * @brief Pointer to a buffer for setup packets. * @details Setup packets require a dedicated 8-bytes buffer, set this -- cgit v1.2.3