IEEE 802.15.4 subsystem
Sign in or create your account | Project List | Help
IEEE 802.15.4 subsystem Commit Details
Date: | 2011-06-11 19:17:44 (12 years 9 months ago) |
---|---|
Author: | Werner Almesberger |
Commit: | 376236949bddfab48aa5a633bf707b7c418ab1e4 |
Message: | atusb/fw/usb/: we were busy-looping on TXINI. Mask the interrupt
when idle. - usb/usb.h (usb_ep_change), usb/atu2.c (usb_ep_change): new function called by the USB stack to notify the hardware-specific driver of an endpoint state change (EP_TX or EP_RX) - usb/usb.c (usb_io): call usb_ep_change - usb/atu2.c (handle_ep): mask TXINI if we have nothing to send |
Files: |
atusb/fw/usb/atu2.c (2 diffs) atusb/fw/usb/usb.c (1 diff) atusb/fw/usb/usb.h (1 diff) |
Change Details
atusb/fw/usb/atu2.c | ||
---|---|---|
70 | 70 | } |
71 | 71 | |
72 | 72 | |
73 | void usb_ep_change(struct ep_descr *ep) | |
74 | { | |
75 | if (ep->state == EP_TX) { | |
76 | UENUM = ep-eps; | |
77 | UEIENX |= 1 << TXINE; | |
78 | } | |
79 | } | |
80 | ||
81 | ||
73 | 82 | static int ep_setup(void) |
74 | 83 | { |
75 | 84 | struct setup_request setup; |
... | ... | |
157 | 166 | UEINTX = ~(1 << TXINI); |
158 | 167 | if (ep->state == EP_IDLE && ep->callback) |
159 | 168 | ep->callback(ep->user); |
169 | } else { | |
170 | UEIENX &= ~(1 << TXINE); | |
160 | 171 | } |
161 | 172 | } |
162 | 173 | return; |
atusb/fw/usb/usb.c | ||
---|---|---|
51 | 51 | ep->end = buf+size; |
52 | 52 | ep->callback = callback; |
53 | 53 | ep->user = user; |
54 | usb_ep_change(ep); | |
54 | 55 | } |
55 | 56 | |
56 | 57 |
atusb/fw/usb/usb.h | ||
---|---|---|
150 | 150 | |
151 | 151 | int handle_setup(const struct setup_request *setup); |
152 | 152 | int set_addr(uint8_t addr); |
153 | void usb_ep_change(struct ep_descr *ep); | |
153 | 154 | void usb_reset(void); |
154 | 155 | void usb_init(void); |
155 | 156 |