|
|
@@ -48,7 +48,6 @@
|
|
|
#define usb_hw_clear hw_clear_alias(usb_hw)
|
|
|
|
|
|
// Init these in dcd_init
|
|
|
-static uint8_t assigned_address;
|
|
|
static uint8_t *next_buffer_ptr;
|
|
|
|
|
|
// Endpoints 0-15, direction 0 for out and 1 for in.
|
|
|
@@ -319,8 +318,7 @@ static void dcd_rp2040_irq(void)
|
|
|
if (status & USB_INTS_BUS_RESET_BITS)
|
|
|
{
|
|
|
pico_trace("BUS RESET (addr %d -> %d)\n", assigned_address, 0);
|
|
|
- assigned_address = 0;
|
|
|
- usb_hw->dev_addr_ctrl = assigned_address;
|
|
|
+ usb_hw->dev_addr_ctrl = 0;
|
|
|
handled |= USB_INTS_BUS_RESET_BITS;
|
|
|
dcd_event_bus_signal(0, DCD_EVENT_BUS_RESET, true);
|
|
|
usb_hw_clear->sie_status = USB_SIE_STATUS_BUS_RESET_BITS;
|
|
|
@@ -355,7 +353,6 @@ void dcd_init (uint8_t rhport)
|
|
|
|
|
|
irq_set_exclusive_handler(USBCTRL_IRQ, dcd_rp2040_irq);
|
|
|
memset(hw_endpoints, 0, sizeof(hw_endpoints));
|
|
|
- assigned_address = 0;
|
|
|
next_buffer_ptr = &usb_dpram->epx_data[0];
|
|
|
|
|
|
// EP0 always exists so init it now
|
|
|
@@ -394,14 +391,12 @@ void dcd_set_address (uint8_t rhport, uint8_t dev_addr)
|
|
|
assert(rhport == 0);
|
|
|
|
|
|
// Can't set device address in hardware until status xfer has complete
|
|
|
- assigned_address = dev_addr;
|
|
|
-
|
|
|
ep0_0len_status();
|
|
|
}
|
|
|
|
|
|
void dcd_remote_wakeup(uint8_t rhport)
|
|
|
{
|
|
|
- panic("dcd_remote_wakeup %d\n", rhport);
|
|
|
+ pico_info("dcd_remote_wakeup %d is not supported yet\n", rhport);
|
|
|
assert(rhport == 0);
|
|
|
}
|
|
|
|
|
|
@@ -435,7 +430,7 @@ void dcd_edpt0_status_complete(uint8_t rhport, tusb_control_request_t const * re
|
|
|
request->bRequest == TUSB_REQ_SET_ADDRESS)
|
|
|
{
|
|
|
pico_trace("Set HW address %d\n", assigned_address);
|
|
|
- usb_hw->dev_addr_ctrl = assigned_address;
|
|
|
+ usb_hw->dev_addr_ctrl = (uint8_t) request->wValue;
|
|
|
}
|
|
|
|
|
|
reset_ep0();
|