mirror of
https://github.com/trezor/trezor-firmware.git
synced 2025-07-30 18:38:27 +00:00
perf(core): save flash in by not using HAL for oscillator configuration
[no changelog]
This commit is contained in:
parent
f97ead8bb5
commit
f552569292
@ -25,6 +25,8 @@
|
|||||||
|
|
||||||
#include <io/rgb_led.h>
|
#include <io/rgb_led.h>
|
||||||
|
|
||||||
|
#include "sys/systick.h"
|
||||||
|
|
||||||
#define LED_SWITCHING_FREQUENCY_HZ 20000
|
#define LED_SWITCHING_FREQUENCY_HZ 20000
|
||||||
#define TIMER_PERIOD (16000000 / LED_SWITCHING_FREQUENCY_HZ)
|
#define TIMER_PERIOD (16000000 / LED_SWITCHING_FREQUENCY_HZ)
|
||||||
|
|
||||||
@ -64,12 +66,16 @@ void rgb_led_init(void) {
|
|||||||
|
|
||||||
rgb_led_set_default_pin_state();
|
rgb_led_set_default_pin_state();
|
||||||
|
|
||||||
// enable LSE clock
|
uint32_t deadline = ticks_timeout(HSI_TIMEOUT_VALUE);
|
||||||
RCC_OscInitTypeDef RCC_OscInitStruct = {0};
|
|
||||||
RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSI;
|
// enable HSI clock
|
||||||
RCC_OscInitStruct.HSIState = RCC_HSI_ON;
|
RCC->CR |= RCC_CR_HSION;
|
||||||
RCC_OscInitStruct.PLL.PLLState = RCC_PLL_NONE;
|
// wait until the HSI is on
|
||||||
HAL_RCC_OscConfig(&RCC_OscInitStruct);
|
while ((RCC->CR & RCC_CR_HSIRDY) != RCC_CR_HSIRDY) {
|
||||||
|
if (ticks_expired(deadline)) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// select LSE as LPTIM clock source
|
// select LSE as LPTIM clock source
|
||||||
RCC_PeriphCLKInitTypeDef PeriphClkInitStruct = {0};
|
RCC_PeriphCLKInitTypeDef PeriphClkInitStruct = {0};
|
||||||
|
@ -26,6 +26,7 @@
|
|||||||
#include <stm32u5xx_hal_cryp.h>
|
#include <stm32u5xx_hal_cryp.h>
|
||||||
|
|
||||||
#include <sec/secure_aes.h>
|
#include <sec/secure_aes.h>
|
||||||
|
#include <sys/systick.h>
|
||||||
|
|
||||||
#if NORCOW_MIN_VERSION <= 5
|
#if NORCOW_MIN_VERSION <= 5
|
||||||
#include "secure_aes_unpriv.h"
|
#include "secure_aes_unpriv.h"
|
||||||
@ -221,13 +222,16 @@ secbool secure_aes_ecb_decrypt_hw(const uint8_t* input, size_t size,
|
|||||||
}
|
}
|
||||||
|
|
||||||
secbool secure_aes_init(void) {
|
secbool secure_aes_init(void) {
|
||||||
RCC_OscInitTypeDef osc_init_def = {0};
|
|
||||||
osc_init_def.OscillatorType = RCC_OSCILLATORTYPE_SHSI;
|
|
||||||
osc_init_def.SHSIState = RCC_SHSI_ON;
|
|
||||||
|
|
||||||
// Enable SHSI clock
|
// Enable SHSI clock
|
||||||
if (HAL_RCC_OscConfig(&osc_init_def) != HAL_OK) {
|
__HAL_RCC_SHSI_ENABLE();
|
||||||
goto cleanup;
|
|
||||||
|
uint32_t deadline = ticks_timeout(HSI_TIMEOUT_VALUE);
|
||||||
|
|
||||||
|
// Wait till SHSI is ready
|
||||||
|
while (READ_BIT(RCC->CR, RCC_CR_SHSIRDY) == 0U) {
|
||||||
|
if (ticks_expired(deadline)) {
|
||||||
|
goto cleanup;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Enable SAES peripheral clock
|
// Enable SAES peripheral clock
|
||||||
@ -247,12 +251,17 @@ void secure_aes_deinit(void) {
|
|||||||
__HAL_RCC_SAES_FORCE_RESET();
|
__HAL_RCC_SAES_FORCE_RESET();
|
||||||
__HAL_RCC_SAES_RELEASE_RESET();
|
__HAL_RCC_SAES_RELEASE_RESET();
|
||||||
|
|
||||||
RCC_OscInitTypeDef osc_init_def = {0};
|
// Disable the Secure Internal High Speed oscillator (SHSI)
|
||||||
osc_init_def.OscillatorType = RCC_OSCILLATORTYPE_SHSI;
|
__HAL_RCC_SHSI_DISABLE();
|
||||||
osc_init_def.SHSIState = RCC_SHSI_OFF;
|
|
||||||
|
|
||||||
// Disable SHSI clock
|
uint32_t deadline = ticks_timeout(2);
|
||||||
HAL_RCC_OscConfig(&osc_init_def);
|
|
||||||
|
// Wait till SHSI is off
|
||||||
|
while (READ_BIT(RCC->CR, RCC_CR_SHSIRDY) != 0U) {
|
||||||
|
if (ticks_expired(deadline)) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif // SECURE_MODE
|
#endif // SECURE_MODE
|
||||||
|
Loading…
Reference in New Issue
Block a user