From 41b33feedcc453c4bff9701f1b56357c2fde54df Mon Sep 17 00:00:00 2001 From: tychovrahe Date: Thu, 6 Mar 2025 08:17:29 +0100 Subject: [PATCH] TEST: enable charging in bootloader & firmware --- core/SConscript.bootloader | 2 +- core/embed/projects/bootloader/main.c | 17 +++++++++++++++-- core/embed/projects/kernel/main.c | 2 ++ 3 files changed, 18 insertions(+), 3 deletions(-) diff --git a/core/SConscript.bootloader b/core/SConscript.bootloader index d3a7e6b5c8..0719f99870 100644 --- a/core/SConscript.bootloader +++ b/core/SConscript.bootloader @@ -175,7 +175,7 @@ env.Replace( '-fstack-protector-strong ' + env.get('ENV')["CPU_CCFLAGS"] + CCFLAGS_MOD, CCFLAGS_QSTR='-DNO_QSTR -DN_X64 -DN_X86 -DN_THUMB', - LINKFLAGS=['-Tbuild/bootloader/memory.ld', '-Wl,--gc-sections', '-Wl,-Map=build/bootloader/bootloader.map', '-Wl,--warn-common', '-Wl,--print-memory-usage'], + LINKFLAGS=['-Tbuild/bootloader/memory.ld', '-Wl,--gc-sections', '-Wl,-Map=build/bootloader/bootloader.map', '-Wl,--warn-common', '-Wl,--print-memory-usage', '-Wl,--undefined=__errno'], CPPPATH=ALLPATHS, CPPDEFINES=[ 'BOOTLOADER', diff --git a/core/embed/projects/bootloader/main.c b/core/embed/projects/bootloader/main.c index c1b7ff935f..ce0c73ce6a 100644 --- a/core/embed/projects/bootloader/main.c +++ b/core/embed/projects/bootloader/main.c @@ -62,6 +62,10 @@ #ifdef USE_BLE #include #endif +#ifdef USE_POWERCTL +#include +#include "../sys/powerctl/npm1300/npm1300.h" +#endif #include "antiglitch.h" #include "bootui.h" @@ -78,7 +82,7 @@ void failed_jump_to_firmware(void); CONFIDENTIAL volatile secbool dont_optimize_out_true = sectrue; CONFIDENTIAL void (*volatile firmware_jump_fn)(void) = failed_jump_to_firmware; -static void drivers_init(secbool *touch_initialized) { +static secbool drivers_init(secbool *touch_initialized) { random_delays_init(); #ifdef USE_PVD pvd_init(); @@ -113,6 +117,7 @@ static void drivers_init(secbool *touch_initialized) { } #endif + #ifdef USE_OPTIGA optiga_hal_init(); #endif @@ -128,6 +133,8 @@ static void drivers_init(secbool *touch_initialized) { #ifdef USE_BLE ble_init(); #endif + + return manufacturing_mode; } static void drivers_deinit(void) { @@ -251,7 +258,7 @@ int bootloader_main(void) { system_init(&rsod_panic_handler); - drivers_init(&touch_initialized); + secbool manufacturing_mode = drivers_init(&touch_initialized); ui_screen_boot_stage_1(false); @@ -319,6 +326,12 @@ int bootloader_main(void) { firmware_present_backup = firmware_present; } +#ifdef USE_POWERCTL + if (sectrue != manufacturing_mode || sectrue != firmware_present) { + npm1300_set_charging(true); + } +#endif + #if PRODUCTION && !defined STM32U5 // for STM32U5, this check is moved to boardloader ensure_bootloader_min_version(); diff --git a/core/embed/projects/kernel/main.c b/core/embed/projects/kernel/main.c index 146652b240..2ef5cbd49f 100644 --- a/core/embed/projects/kernel/main.c +++ b/core/embed/projects/kernel/main.c @@ -59,6 +59,7 @@ #ifdef USE_POWERCTL #include +#include "../sys/powerctl/npm1300/npm1300.h" #endif #ifdef USE_PVD @@ -92,6 +93,7 @@ void drivers_init() { #ifdef USE_POWERCTL powerctl_init(); + npm1300_set_charging(true); #endif #ifdef USE_TAMPER