mirror of
https://github.com/trezor/trezor-firmware.git
synced 2025-06-26 09:52:34 +00:00
feat(core): implement reboot command to bypass button check
[no changelog]
This commit is contained in:
parent
7fa4e2d510
commit
c63ff3bf44
@ -238,7 +238,7 @@ void pm_enter_hibernate(pm_driver_t* drv) {
|
|||||||
// Store power manager data with request to hibernate, power manager
|
// Store power manager data with request to hibernate, power manager
|
||||||
// will try to hibernate immediately after reboot.
|
// will try to hibernate immediately after reboot.
|
||||||
pm_store_data_to_backup_ram();
|
pm_store_data_to_backup_ram();
|
||||||
reboot_device();
|
reboot_to_off();
|
||||||
}
|
}
|
||||||
|
|
||||||
void pm_enter_charging(pm_driver_t* drv) {}
|
void pm_enter_charging(pm_driver_t* drv) {}
|
||||||
|
@ -33,6 +33,8 @@ typedef enum {
|
|||||||
BOOT_COMMAND_INSTALL_UPGRADE = 0xFA4A5C8D,
|
BOOT_COMMAND_INSTALL_UPGRADE = 0xFA4A5C8D,
|
||||||
// Show RSOD and wait for user input
|
// Show RSOD and wait for user input
|
||||||
BOOT_COMMAND_SHOW_RSOD = 0x7CD945A0,
|
BOOT_COMMAND_SHOW_RSOD = 0x7CD945A0,
|
||||||
|
// Reboot the device as if it was powered on
|
||||||
|
BOOT_COMMAND_REBOOT = 0xA5C3D4E2,
|
||||||
} boot_command_t;
|
} boot_command_t;
|
||||||
|
|
||||||
// Maximum size boot_args array
|
// Maximum size boot_args array
|
||||||
|
@ -22,9 +22,13 @@
|
|||||||
|
|
||||||
#include <trezor_types.h>
|
#include <trezor_types.h>
|
||||||
|
|
||||||
// Immediately resets the device and initiates the normal boot sequence.
|
// Immediately resets the device and initiates the normal boot sequence as if
|
||||||
|
// the device was powered on
|
||||||
void __attribute__((noreturn)) reboot_device(void);
|
void __attribute__((noreturn)) reboot_device(void);
|
||||||
|
|
||||||
|
// Immediately resets the device
|
||||||
|
void __attribute__((noreturn)) reboot_to_off(void);
|
||||||
|
|
||||||
// Resets the device and enters the bootloader,
|
// Resets the device and enters the bootloader,
|
||||||
// halting there and waiting for further user instructions.
|
// halting there and waiting for further user instructions.
|
||||||
void __attribute__((noreturn)) reboot_to_bootloader(void);
|
void __attribute__((noreturn)) reboot_to_bootloader(void);
|
||||||
|
@ -213,6 +213,10 @@ __attribute__((noreturn)) void reboot_and_upgrade(const uint8_t hash[32]) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
__attribute__((noreturn)) void reboot_device(void) {
|
__attribute__((noreturn)) void reboot_device(void) {
|
||||||
|
reboot_with_args(BOOT_COMMAND_REBOOT, NULL, 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
__attribute__((noreturn)) void reboot_to_off(void) {
|
||||||
reboot_with_args(BOOT_COMMAND_NONE, NULL, 0);
|
reboot_with_args(BOOT_COMMAND_NONE, NULL, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -61,6 +61,12 @@ __attribute__((noreturn)) void reboot_device(void) {
|
|||||||
exit(3);
|
exit(3);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
__attribute__((noreturn)) void reboot_to_off(void) {
|
||||||
|
printf("reboot (power off)\n");
|
||||||
|
|
||||||
|
exit(3);
|
||||||
|
}
|
||||||
|
|
||||||
__attribute__((noreturn)) void reboot_or_halt_after_rsod(void) {
|
__attribute__((noreturn)) void reboot_or_halt_after_rsod(void) {
|
||||||
printf("reboot (with timeout)\n");
|
printf("reboot (with timeout)\n");
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user