diff options
Diffstat (limited to 'firmware/targets/f6/furi_hal/furi_hal_bootloader.c')
-rw-r--r-- | firmware/targets/f6/furi_hal/furi_hal_bootloader.c | 25 |
1 files changed, 25 insertions, 0 deletions
diff --git a/firmware/targets/f6/furi_hal/furi_hal_bootloader.c b/firmware/targets/f6/furi_hal/furi_hal_bootloader.c new file mode 100644 index 00000000..3b549955 --- /dev/null +++ b/firmware/targets/f6/furi_hal/furi_hal_bootloader.c @@ -0,0 +1,25 @@ +#include <furi_hal_bootloader.h> +#include <furi_hal_rtc.h> +#include <furi.h> + +#define TAG "FuriHalBoot" + +// Boot request enum +#define BOOT_REQUEST_TAINTED 0x00000000 +#define BOOT_REQUEST_CLEAN 0xDADEDADE +#define BOOT_REQUEST_DFU 0xDF00B000 + +void furi_hal_bootloader_init() { +#ifndef DEBUG + furi_hal_rtc_set_register(FuriHalRtcRegisterBoot, BOOT_REQUEST_TAINTED); +#endif + FURI_LOG_I(TAG, "Init OK"); +} + +void furi_hal_bootloader_set_mode(FuriHalBootloaderMode mode) { + if(mode == FuriHalBootloaderModeNormal) { + furi_hal_rtc_set_register(FuriHalRtcRegisterBoot, BOOT_REQUEST_CLEAN); + } else if(mode == FuriHalBootloaderModeDFU) { + furi_hal_rtc_set_register(FuriHalRtcRegisterBoot, BOOT_REQUEST_DFU); + } +} |