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;