projects
/
fw
/
altos
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
altos/lpc: Reset less of the device on USB reset.
[fw/altos]
/
src
/
lpc
/
ao_usb_lpc.c
diff --git
a/src/lpc/ao_usb_lpc.c
b/src/lpc/ao_usb_lpc.c
index 144d10752b3ba2eb8642c1173586b4bb0eac71db..713fbc53f599714c873cb3af99d7cf4a2a187698 100644
(file)
--- a/
src/lpc/ao_usb_lpc.c
+++ b/
src/lpc/ao_usb_lpc.c
@@
-316,6
+316,13
@@
ao_usb_disable_epn(uint8_t n)
ao_usb_disable_ep(&lpc_usb_endpoint.epn[n-1].in[1]);
}
ao_usb_disable_ep(&lpc_usb_endpoint.epn[n-1].in[1]);
}
+static void
+ao_usb_reset(void)
+{
+ ao_usb_set_address(0);
+ ao_usb_configuration = 0;
+}
+
static void
ao_usb_set_ep0(void)
{
static void
ao_usb_set_ep0(void)
{
@@
-326,11
+333,8
@@
ao_usb_set_ep0(void)
lpc_usb.epinuse = 0;
lpc_usb.epskip = 0xffffffff;
lpc_usb.epinuse = 0;
lpc_usb.epskip = 0xffffffff;
- ao_usb_set_address(0);
lpc_usb.intstat = 0xc00003ff;
lpc_usb.intstat = 0xc00003ff;
- ao_usb_configuration = 0;
-
ao_usb_sram = lpc_usb_sram;
lpc_usb.epliststart = (uint32_t) (intptr_t) &lpc_usb_endpoint;
ao_usb_sram = lpc_usb_sram;
lpc_usb.epliststart = (uint32_t) (intptr_t) &lpc_usb_endpoint;
@@
-346,7
+350,7
@@
ao_usb_set_ep0(void)
/* Clear all of the other endpoints */
for (e = 1; e <= 4; e++)
ao_usb_disable_epn(e);
/* Clear all of the other endpoints */
for (e = 1; e <= 4; e++)
ao_usb_disable_epn(e);
-
+ ao_usb_reset();
}
static void
}
static void
@@
-450,7
+454,7
@@
ao_usb_ep0_out_set(uint8_t *data, uint8_t len)
}
static void
}
static void
-ao_usb_ep0_in_start(uint
8
_t max)
+ao_usb_ep0_in_start(uint
16
_t max)
{
/* Don't send more than asked for */
if (ao_usb_ep0_in_len > max)
{
/* Don't send more than asked for */
if (ao_usb_ep0_in_len > max)
@@
-590,7
+594,7
@@
ao_usb_ep0_handle(uint8_t receive)
if (receive & AO_USB_EP0_GOT_RESET) {
debug ("\treset\n");
if (receive & AO_USB_EP0_GOT_RESET) {
debug ("\treset\n");
- ao_usb_
set_ep0
();
+ ao_usb_
reset
();
return;
}
if (receive & AO_USB_EP0_GOT_SETUP) {
return;
}
if (receive & AO_USB_EP0_GOT_SETUP) {
@@
-936,11
+940,11
@@
ao_usb_enable(void)
for (t = 0; t < 1000; t++)
ao_arch_nop();
for (t = 0; t < 1000; t++)
ao_arch_nop();
+ ao_usb_set_ep0();
+
#if HAS_USB_PULLUP
ao_gpio_set(AO_USB_PULLUP_PORT, AO_USB_PULLUP_PIN, AO_USB_PULLUP, 1);
#endif
#if HAS_USB_PULLUP
ao_gpio_set(AO_USB_PULLUP_PORT, AO_USB_PULLUP_PIN, AO_USB_PULLUP, 1);
#endif
-
- ao_usb_set_ep0();
}
#if USB_ECHO
}
#if USB_ECHO