diff --git a/src/portable/raspberrypi/rp2040/dcd_rp2040.c b/src/portable/raspberrypi/rp2040/dcd_rp2040.c index 80e5d3c4b..aaaa22e55 100644 --- a/src/portable/raspberrypi/rp2040/dcd_rp2040.c +++ b/src/portable/raspberrypi/rp2040/dcd_rp2040.c @@ -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(); diff --git a/tools/build_family.py b/tools/build_family.py index b178d8d41..23a08c663 100644 --- a/tools/build_family.py +++ b/tools/build_family.py @@ -49,6 +49,7 @@ def build_family(example, family): for entry in os.scandir("hw/bsp/{}/boards".format(family)): if entry.is_dir(): all_boards.append(entry.name) + filter_with_input(all_boards) all_boards.sort() for board in all_boards: @@ -83,7 +84,7 @@ def build_board(example, board): print(build_format.format(example, board, success, "{:.2f}s".format(build_duration), flash_size, sram_size)) if build_result.returncode != 0: - print(build_result.stdout.decode("utf-8")) + print(build_result.stdout.decode("utf-8")) def build_size(example, board): #elf_file = 'examples/device/{}/_build/{}/{}-firmware.elf'.format(example, board, board)