Browse Source

drivers: rtc: stm32: narrow backup domain access window during interrupts

Change backup domain access gating in STM32 RTC interrupt handler
to only request access when RTC registers ar to be modified
instead of during the whole RTC interrupts service including
interrupt consumer callback execution.

Signed-off-by: Etienne Carriere <etienne.carriere@foss.st.com>
pull/92661/merge
Etienne Carriere 7 days ago committed by Daniel DeGrasse
parent
commit
9b022972d8
  1. 6
      drivers/rtc/rtc_ll_stm32.c

6
drivers/rtc/rtc_ll_stm32.c

@ -283,13 +283,13 @@ void rtc_stm32_isr(const struct device *dev)
struct rtc_stm32_alrm *p_rtc_alrm; struct rtc_stm32_alrm *p_rtc_alrm;
int id = 0; int id = 0;
stm32_backup_domain_enable_access();
for (id = 0; id < RTC_STM32_ALARMS_COUNT; id++) { for (id = 0; id < RTC_STM32_ALARMS_COUNT; id++) {
if (rtc_stm32_is_active_alarm(RTC, (uint16_t)id) != 0) { if (rtc_stm32_is_active_alarm(RTC, (uint16_t)id) != 0) {
stm32_backup_domain_enable_access();
LL_RTC_DisableWriteProtection(RTC); LL_RTC_DisableWriteProtection(RTC);
rtc_stm32_clear_alarm_flag(RTC, (uint16_t)id); rtc_stm32_clear_alarm_flag(RTC, (uint16_t)id);
LL_RTC_EnableWriteProtection(RTC); LL_RTC_EnableWriteProtection(RTC);
stm32_backup_domain_disable_access();
if (id == RTC_STM32_ALRM_A) { if (id == RTC_STM32_ALRM_A) {
p_rtc_alrm = &(data->rtc_alrm_a); p_rtc_alrm = &(data->rtc_alrm_a);
@ -305,8 +305,6 @@ void rtc_stm32_isr(const struct device *dev)
} }
} }
stm32_backup_domain_disable_access();
ll_func_exti_clear_rtc_alarm_flag(RTC_STM32_EXTI_LINE); ll_func_exti_clear_rtc_alarm_flag(RTC_STM32_EXTI_LINE);
} }

Loading…
Cancel
Save