summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
-rw-r--r--ports/rp2/modmachine.c8
-rw-r--r--ports/rp2/modmachine.h1
-rw-r--r--ports/rp2/mpconfigport.h4
3 files changed, 10 insertions, 3 deletions
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