aboutsummaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
authorGareth McMullin2010-11-04 16:49:03 +1300
committerGareth McMullin2010-11-04 16:49:03 +1300
commit87960830f4eb656f410ff3b220151e0b5ad9a556 (patch)
treece2ff6208c79ca40be61a27a5da0e46735ee2745 /include
parentd6eacce827a8ebffb5e82b48d4c88eb097594c1e (diff)
Fixed HALT condition handling and data toggle.
Diffstat (limited to 'include')
-rw-r--r--include/libopenstm32/tools.h4
-rw-r--r--include/libopenstm32/usb.h12
-rw-r--r--include/usbd.h3
3 files changed, 16 insertions, 3 deletions
diff --git a/include/libopenstm32/tools.h b/include/libopenstm32/tools.h
index 2a7a0f1..8b32413 100644
--- a/include/libopenstm32/tools.h
+++ b/include/libopenstm32/tools.h
@@ -52,10 +52,10 @@
*/
#define TOG_SET_REG_BIT_MSK(REG, MSK, BIT) \
do { \
- register u16 toggle_mask = GET_REG(REG) & MSK; \
+ register u16 toggle_mask = GET_REG(REG) & (MSK); \
register u16 bit_selector; \
for (bit_selector = 1; bit_selector; bit_selector <<= 1) { \
- if ((bit_selector & BIT) != 0) \
+ if ((bit_selector & (BIT)) != 0) \
toggle_mask ^= bit_selector; \
} \
SET_REG(REG, toggle_mask); \
diff --git a/include/libopenstm32/usb.h b/include/libopenstm32/usb.h
index 3e0efe9..6edfee3 100644
--- a/include/libopenstm32/usb.h
+++ b/include/libopenstm32/usb.h
@@ -244,6 +244,18 @@
(USB_EP_NTOGGLE_MSK & \
(~USB_EP_ADDR))) | ADDR))
+/* Macros for clearing DTOG bits */
+#define USB_CLR_EP_TX_DTOG(EP) \
+ SET_REG(USB_EP_REG(EP), \
+ (GET_REG(USB_EP_REG(EP)) & \
+ USB_EP_NTOGGLE_MSK) | USB_EP_TX_DTOG)
+
+#define USB_CLR_EP_RX_DTOG(EP) \
+ SET_REG(USB_EP_REG(EP), \
+ (GET_REG(USB_EP_REG(EP)) & \
+ USB_EP_NTOGGLE_MSK) | USB_EP_RX_DTOG)
+
+
/******************************************************************************
* USB BTABLE registers
******************************************************************************/
diff --git a/include/usbd.h b/include/usbd.h
index 9f1c57d..d825d9e 100644
--- a/include/usbd.h
+++ b/include/usbd.h
@@ -64,7 +64,8 @@ usbd_ep_write_packet(uint8_t addr, const void *buf, uint16_t len);
extern uint16_t
usbd_ep_read_packet(uint8_t addr, void *buf, uint16_t len);
-extern void usbd_ep_stall(uint8_t addr);
+extern void usbd_ep_stall_set(uint8_t addr, uint8_t stall);
+extern uint8_t usbd_ep_stall_get(uint8_t addr);
/* Optional */
extern void usbd_cable_connect(uint8_t on);