mirror of
https://github.com/trezor/trezor-firmware.git
synced 2025-01-23 05:40:57 +00:00
feat(core): improve dma2d/gfx_bitblt init/deinit
[no changelog]
This commit is contained in:
parent
93707d29cc
commit
02227f3e7a
@ -25,6 +25,9 @@
|
||||
// Initializes DMA2D peripheral
|
||||
void dma2d_init(void);
|
||||
|
||||
// Deinitializes DMA2D peripheral
|
||||
void dma2d_deinit(void);
|
||||
|
||||
// Waits until any pending DMA2D operation is finished
|
||||
void dma2d_wait(void);
|
||||
|
||||
|
@ -25,6 +25,12 @@ void gfx_bitblt_init(void) {
|
||||
#endif
|
||||
}
|
||||
|
||||
void gfx_bitblt_deinit(void) {
|
||||
#if defined(USE_DMA2D) && !defined(TREZOR_EMULATOR)
|
||||
dma2d_deinit();
|
||||
#endif
|
||||
}
|
||||
|
||||
void gfx_bitblt_wait(void) {
|
||||
#if defined(USE_DMA2D) && !defined(TREZOR_EMULATOR)
|
||||
dma2d_wait();
|
||||
|
@ -40,7 +40,19 @@ static inline bool dma2d_accessible(const void* ptr) {
|
||||
#endif
|
||||
}
|
||||
|
||||
void dma2d_init(void) { __HAL_RCC_DMA2D_CLK_ENABLE(); }
|
||||
void dma2d_init(void) {
|
||||
__HAL_RCC_DMA2D_FORCE_RESET();
|
||||
__HAL_RCC_DMA2D_RELEASE_RESET();
|
||||
|
||||
__HAL_RCC_DMA2D_CLK_ENABLE();
|
||||
}
|
||||
|
||||
void dma2d_deinit(void) {
|
||||
__HAL_RCC_DMA2D_CLK_DISABLE();
|
||||
|
||||
__HAL_RCC_DMA2D_FORCE_RESET();
|
||||
__HAL_RCC_DMA2D_RELEASE_RESET();
|
||||
}
|
||||
|
||||
void dma2d_wait(void) {
|
||||
while (HAL_DMA2D_PollForTransfer(&dma2d_handle, 10) != HAL_OK)
|
||||
|
@ -78,6 +78,9 @@ typedef struct {
|
||||
// Initializes bitblt operations
|
||||
void gfx_bitblt_init(void);
|
||||
|
||||
// Deinitializes bitblt operations
|
||||
void gfx_bitblt_deinit(void);
|
||||
|
||||
// If the bitblt operation is asynchronous, waits until it's finished
|
||||
void gfx_bitblt_wait(void);
|
||||
|
||||
|
@ -103,6 +103,7 @@ static void drivers_deinit(void) {
|
||||
#ifdef FIXED_HW_DEINIT
|
||||
// TODO
|
||||
#endif
|
||||
gfx_bitblt_deinit();
|
||||
display_deinit(DISPLAY_JUMP_BEHAVIOR);
|
||||
#ifdef USE_POWERCTL
|
||||
powerctl_deinit();
|
||||
|
@ -136,6 +136,7 @@ static void drivers_deinit(void) {
|
||||
#ifdef FIXED_HW_DEINIT
|
||||
// TODO
|
||||
#endif
|
||||
gfx_bitblt_deinit();
|
||||
display_deinit(DISPLAY_JUMP_BEHAVIOR);
|
||||
ensure_compatible_settings();
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user