From 0b9d2e3ac9421e1b76d1be003951f9c9f3826e66 Mon Sep 17 00:00:00 2001 From: tychovrahe Date: Fri, 31 Jan 2025 12:25:49 +0100 Subject: [PATCH] feat(core): lazy initialize display driver in boardloader [no changelog] --- core/embed/projects/boardloader/main.c | 5 +++++ core/embed/projects/boardloader/sd_update.c | 6 ++++++ 2 files changed, 11 insertions(+) diff --git a/core/embed/projects/boardloader/main.c b/core/embed/projects/boardloader/main.c index a64583ee21..b696b8cadf 100644 --- a/core/embed/projects/boardloader/main.c +++ b/core/embed/projects/boardloader/main.c @@ -85,7 +85,12 @@ static void drivers_init(void) { #ifdef USE_HASH_PROCESSOR hash_processor_init(); #endif +#ifndef FIXED_HW_DEINIT + // only skip this if deinit was fixed, + // as some old bootloaders rely on display being initialized + // (skipping alows faster boot time so generally a good idea) display_init(DISPLAY_RESET_CONTENT); +#endif } static void drivers_deinit(void) { diff --git a/core/embed/projects/boardloader/sd_update.c b/core/embed/projects/boardloader/sd_update.c index fa5bd11fa7..8837cb553b 100644 --- a/core/embed/projects/boardloader/sd_update.c +++ b/core/embed/projects/boardloader/sd_update.c @@ -160,7 +160,13 @@ void sd_update_check_and_update(const uint8_t *const *keys, uint8_t key_m, } if (check_sdcard(keys, key_m, key_n) != 0) { +#ifdef FIXED_HW_DEINIT + display_init(DISPLAY_RESET_CONTENT); +#endif copy_sdcard(keys, key_m, key_n); +#ifdef FIXED_HW_DEINIT + display_deinit(DISPLAY_RETAIN_CONTENT); +#endif reboot_or_halt_after_rsod(); } }