diff --git a/firmware/target/arm/as3525/usb-drv-as3525v2.c b/firmware/target/arm/as3525/usb-drv-as3525v2.c
index e324a16..e7dad85 100644
--- a/firmware/target/arm/as3525/usb-drv-as3525v2.c
+++ b/firmware/target/arm/as3525/usb-drv-as3525v2.c
@@ -427,6 +427,36 @@ static void disable_global_interrupts(void)
VIC_INT_EN_CLEAR = INTERRUPT_USB;
}
+static void dump_regs(void)
+{
+ logf("DSTS: %lx", DSTS);
+ logf("DOEPCTL0=%lx", DOEPCTL(0));
+ logf("DOEPTSIZ=%lx", DOEPTSIZ(0));
+ logf("DIEPCTL0=%lx", DIEPCTL(0));
+ logf("DOEPMSK=%lx", DOEPMSK);
+ logf("DIEPMSK=%lx", DIEPMSK);
+ logf("DAINTMSK=%lx", DAINTMSK);
+ logf("DAINT=%lx", DAINT);
+ logf("GINTSTS=%lx", GINTSTS);
+ logf("GINTMSK=%lx", GINTMSK);
+ logf("DCTL=%lx", DCTL);
+ logf("GAHBCFG=%lx", GAHBCFG);
+ logf("GUSBCFG=%lx", GUSBCFG);
+ logf("DCFG=%lx", DCFG);
+ logf("DTHRCTL=%lx", DTHRCTL);
+}
+
+static void usb_tick(void)
+{
+ static int last_tick = 0;
+ if(TIME_AFTER(current_tick, last_tick + 5 * HZ))
+ {
+ logf("usb-drv: tick %ld", current_tick);
+ dump_regs();
+ last_tick = current_tick;
+ }
+}
+
void usb_drv_init(void)
{
unsigned i, ep;
@@ -444,6 +474,8 @@ void usb_drv_init(void)
wakeup_init(&endpoints[ep][DIR_OUT].complete);
/* Enable global interrupts */
enable_global_interrupts();
+
+ tick_add_task(&usb_tick);
}
void usb_drv_exit(void)
diff --git a/firmware/usbstack/usb_core.c b/firmware/usbstack/usb_core.c
index 549e15d..41eab28 100644
--- a/firmware/usbstack/usb_core.c
+++ b/firmware/usbstack/usb_core.c
@@ -671,7 +671,7 @@ static void request_handler_device(struct usb_ctrlrequest* req)
unsigned char address = req->wValue;
logf("usb_core: SET_ADR %d", address);
usb_drv_send(EP_CONTROL, NULL, 0);
- usb_drv_cancel_all_transfers();
+ //usb_drv_cancel_all_transfers();
usb_address = address;
usb_drv_set_address(usb_address);
usb_state = ADDRESS;