summaryrefslogtreecommitdiff
path: root/chip/stm32/clock-stm32l4.c
diff options
context:
space:
mode:
Diffstat (limited to 'chip/stm32/clock-stm32l4.c')
-rw-r--r--chip/stm32/clock-stm32l4.c14
1 files changed, 14 insertions, 0 deletions
diff --git a/chip/stm32/clock-stm32l4.c b/chip/stm32/clock-stm32l4.c
index 412771163c..6d10fbf79e 100644
--- a/chip/stm32/clock-stm32l4.c
+++ b/chip/stm32/clock-stm32l4.c
@@ -724,7 +724,14 @@ static void pre_work_set_rtc_alarm(void)
while (!(STM32_RTC_ISR & STM32_RTC_ISR_ALRAWF))
;
STM32_RTC_ISR &= ~STM32_RTC_ISR_ALRAF;
+#ifdef STM32_EXTI_RPR
+ /* Separate rising and falling edge pending registers. */
+ STM32_EXTI_RPR = BIT(18);
+ STM32_EXTI_FPR = BIT(18);
+#else
+ /* One combined rising/falling edge pending registers. */
STM32_EXTI_PR = BIT(18);
+#endif
}
/* Register setup after RTC alarm is updated */
@@ -947,7 +954,14 @@ void reset_rtc_alarm(struct rtc_time_reg *rtc)
/* Disable RTC alarm interrupt */
STM32_EXTI_IMR &= ~BIT(18);
+#ifdef STM32_EXTI_RPR
+ /* Separate rising and falling edge pending registers. */
+ STM32_EXTI_RPR = BIT(18);
+ STM32_EXTI_FPR = BIT(18);
+#else
+ /* One combined rising/falling edge pending registers. */
STM32_EXTI_PR = BIT(18);
+#endif
/* Clear the pending RTC alarm IRQ in NVIC */
task_clear_pending_irq(STM32_IRQ_RTC_ALARM);