From 7410636a187b0aff679ff0f4560b12b1dda0bbf5 Mon Sep 17 00:00:00 2001 From: cepetr Date: Mon, 10 Feb 2025 15:06:36 +0100 Subject: [PATCH] fixup! refactor(core): improve dma2d driver init/deinit --- core/embed/gfx/bitblt/stm32/dma2d_bitblt.c | 5 +++++ core/embed/projects/firmware/main.c | 3 +++ 2 files changed, 8 insertions(+) diff --git a/core/embed/gfx/bitblt/stm32/dma2d_bitblt.c b/core/embed/gfx/bitblt/stm32/dma2d_bitblt.c index dbeab190e1..86c09423df 100644 --- a/core/embed/gfx/bitblt/stm32/dma2d_bitblt.c +++ b/core/embed/gfx/bitblt/stm32/dma2d_bitblt.c @@ -67,17 +67,22 @@ void dma2d_init(void) { memset(drv, 0, sizeof(dma2d_driver_t)); drv->handle.Instance = DMA2D; +#ifdef KERNEL_MODE __HAL_RCC_DMA2D_FORCE_RESET(); __HAL_RCC_DMA2D_RELEASE_RESET(); __HAL_RCC_DMA2D_CLK_ENABLE(); +#endif drv->initialized = true; } void dma2d_deinit(void) { dma2d_driver_t* drv = &g_dma2d_driver; + +#ifdef KERNEL_MODE __HAL_RCC_DMA2D_CLK_DISABLE(); __HAL_RCC_DMA2D_FORCE_RESET(); __HAL_RCC_DMA2D_RELEASE_RESET(); +#endif memset(drv, 0, sizeof(dma2d_driver_t)); } diff --git a/core/embed/projects/firmware/main.c b/core/embed/projects/firmware/main.c index a91402fa5a..a92ecc46e7 100644 --- a/core/embed/projects/firmware/main.c +++ b/core/embed/projects/firmware/main.c @@ -45,6 +45,9 @@ #endif int main(uint32_t cmd, void *arg) { + // This call will be removed in the future with DMA2D syscalls. + gfx_bitblt_init(); + if (cmd == 1) { systask_postmortem_t *info = (systask_postmortem_t *)arg; rsod_gui(info);