diff --git a/ports/rp2/modmachine.c b/ports/rp2/modmachine.c index fbaf29ee16..b988afdf30 100644 --- a/ports/rp2/modmachine.c +++ b/ports/rp2/modmachine.c @@ -81,11 +81,13 @@ STATIC mp_obj_t machine_reset_cause(void) { } STATIC MP_DEFINE_CONST_FUN_OBJ_0(machine_reset_cause_obj, machine_reset_cause); -STATIC mp_obj_t machine_bootloader(void) { +NORETURN mp_obj_t machine_bootloader(size_t n_args, const mp_obj_t *args) { + MICROPY_BOARD_ENTER_BOOTLOADER(n_args, args); reset_usb_boot(0, 0); - return mp_const_none; + for (;;) { + } } -MP_DEFINE_CONST_FUN_OBJ_0(machine_bootloader_obj, machine_bootloader); +STATIC MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(machine_bootloader_obj, 0, 1, machine_bootloader); STATIC mp_obj_t machine_freq(size_t n_args, const mp_obj_t *args) { if (n_args == 0) { diff --git a/ports/rp2/modmachine.h b/ports/rp2/modmachine.h index 0635ff2487..503c1ca86c 100644 --- a/ports/rp2/modmachine.h +++ b/ports/rp2/modmachine.h @@ -18,5 +18,6 @@ void machine_pin_deinit(void); void machine_i2s_init0(void); struct _machine_spi_obj_t *spi_from_mp_obj(mp_obj_t o); +NORETURN mp_obj_t machine_bootloader(size_t n_args, const mp_obj_t *args); #endif // MICROPY_INCLUDED_RP2_MODMACHINE_H diff --git a/ports/rp2/mpconfigport.h b/ports/rp2/mpconfigport.h index d681a04af8..62388c6bce 100644 --- a/ports/rp2/mpconfigport.h +++ b/ports/rp2/mpconfigport.h @@ -130,6 +130,10 @@ #define mp_type_textio mp_type_vfs_lfs2_textio #endif +#ifndef MICROPY_BOARD_ENTER_BOOTLOADER +#define MICROPY_BOARD_ENTER_BOOTLOADER(nargs, args) +#endif + #if MICROPY_PY_NETWORK #define NETWORK_ROOT_POINTERS mp_obj_list_t mod_network_nic_list; #else