19#if (STM32_RTCSEL == STM32_RTCSEL_LSE)
23 int timeout = 1000000000;
24 if ((RCC->BDCR & STM32_RTCSEL_MASK) == STM32_RTCSEL) {
28 if ((RCC->BDCR & RCC_BDCR_LSERDY) == 0) {
30 efiPrintf(
"LSE in not ready");
34 efiPrintf(
"Switching RTC to LSE clock");
38 rtcGetTime(&RTCD1, ×pec);
43 RCC->BDCR |= RCC_BDCR_BDRST;
44 RCC->BDCR &= ~RCC_BDCR_BDRST;
46#if defined(STM32_LSE_BYPASS)
48 RCC->BDCR |= STM32_LSEDRV | RCC_BDCR_LSEON | RCC_BDCR_LSEBYP;
51 RCC->BDCR |= STM32_LSEDRV | RCC_BDCR_LSEON;
54 while (((RCC->BDCR & RCC_BDCR_LSERDY) == 0) && (timeout--)) {
60 if (RCC->BDCR & RCC_BDCR_LSERDY) {
61 RCC->BDCR |= STM32_RTCSEL;
64 efiPrintf(
"LSE in not ready after restart attemp");
66 RCC->BDCR |= RUSEFI_STM32_LSE_WAIT_MAX_RTCSEL;
70 RCC->BDCR |= RCC_BDCR_RTCEN;
75 rtcSetTime(&RTCD1, ×pec);