aboutsummaryrefslogtreecommitdiffstats
path: root/os/hal/ports/STM32/LLD/USBv1
diff options
context:
space:
mode:
authorGiovanni Di Sirio <gdisirio@gmail.com>2015-01-31 12:15:14 +0000
committerGiovanni Di Sirio <gdisirio@gmail.com>2015-01-31 12:15:14 +0000
commit2179d63cbf9444c40e9ee609c1c1d818ea5de7d0 (patch)
treeaa219dea87a43a2c05159a5cd3a3d887a426001f /os/hal/ports/STM32/LLD/USBv1
parented849dc86ef2d1f5a2a8486e5aaa3ef21b4e2f93 (diff)
downloadChibiOS-2179d63cbf9444c40e9ee609c1c1d818ea5de7d0.tar.gz
ChibiOS-2179d63cbf9444c40e9ee609c1c1d818ea5de7d0.tar.bz2
ChibiOS-2179d63cbf9444c40e9ee609c1c1d818ea5de7d0.zip
Fixed bug #554.
git-svn-id: svn://svn.code.sf.net/p/chibios/svn/trunk@7648 35acf78f-673a-0410-8e92-d51de3d6d3f4
Diffstat (limited to 'os/hal/ports/STM32/LLD/USBv1')
-rw-r--r--os/hal/ports/STM32/LLD/USBv1/stm32_usb.h21
1 files changed, 13 insertions, 8 deletions
diff --git a/os/hal/ports/STM32/LLD/USBv1/stm32_usb.h b/os/hal/ports/STM32/LLD/USBv1/stm32_usb.h
index 02e704540..8e47136f1 100644
--- a/os/hal/ports/STM32/LLD/USBv1/stm32_usb.h
+++ b/os/hal/ports/STM32/LLD/USBv1/stm32_usb.h
@@ -215,27 +215,32 @@ typedef struct {
#define RXCOUNT_COUNT_MASK 0x03FF
#define TXCOUNT_COUNT_MASK 0x03FF
+#define EPR_CTR_MASK (EPR_CTR_TX | EPR_CTR_RX)
+
#define EPR_SET(ep, epr) \
- STM32_USB->EPR[ep] = (epr) & ~EPR_TOGGLE_MASK
+ STM32_USB->EPR[ep] = ((epr) & ~EPR_TOGGLE_MASK) | EPR_CTR_MASK
#define EPR_TOGGLE(ep, epr) \
- STM32_USB->EPR[ep] = (STM32_USB->EPR[ep] ^ ((epr) & EPR_TOGGLE_MASK))
+ STM32_USB->EPR[ep] = (STM32_USB->EPR[ep] ^ ((epr) & EPR_TOGGLE_MASK)) \
+ | EPR_CTR_MASK
#define EPR_SET_STAT_RX(ep, epr) \
- STM32_USB->EPR[ep] = (STM32_USB->EPR[ep] & \
+ STM32_USB->EPR[ep] = ((STM32_USB->EPR[ep] & \
~(EPR_TOGGLE_MASK & ~EPR_STAT_RX_MASK)) ^ \
- (epr)
+ (epr)) | EPR_CTR_MASK
#define EPR_SET_STAT_TX(ep, epr) \
- STM32_USB->EPR[ep] = (STM32_USB->EPR[ep] & \
+ STM32_USB->EPR[ep] = ((STM32_USB->EPR[ep] & \
~(EPR_TOGGLE_MASK & ~EPR_STAT_TX_MASK)) ^ \
- (epr)
+ (epr)) | EPR_CTR_MASK
#define EPR_CLEAR_CTR_RX(ep) \
- STM32_USB->EPR[ep] &= ~EPR_CTR_RX & ~EPR_TOGGLE_MASK
+ STM32_USB->EPR[ep] = (STM32_USB->EPR[ep] & ~EPR_CTR_RX & ~EPR_TOGGLE_MASK)\
+ | EPR_CTR_TX
#define EPR_CLEAR_CTR_TX(ep) \
- STM32_USB->EPR[ep] &= ~EPR_CTR_TX & ~EPR_TOGGLE_MASK
+ STM32_USB->EPR[ep] = (STM32_USB->EPR[ep] & ~EPR_CTR_TX & ~EPR_TOGGLE_MASK)\
+ | EPR_CTR_RX
/**
* @brief Returns an endpoint descriptor pointer.