diff --git a/drivers/rtc/Kconfig.stm32_rtc b/drivers/rtc/Kconfig.stm32_rtc index 64b89fd8c4f..eadbb7e3634 100644 --- a/drivers/rtc/Kconfig.stm32_rtc +++ b/drivers/rtc/Kconfig.stm32_rtc @@ -15,7 +15,7 @@ config RTC_STM32 select USE_STM32_LL_EXTI select NEWLIB_LIBC help - Build RTC driver for STM32x4 SoCs. Tested on STM32L4 series. + Build RTC driver for STM32 SoCs. Tested on STM32 F4, L4 series. choice RTC_STM32_CLOCK_SRC bool "RTC clock source" diff --git a/drivers/rtc/rtc_ll_stm32.c b/drivers/rtc/rtc_ll_stm32.c index d88ef24978f..f1922d5bcfe 100644 --- a/drivers/rtc/rtc_ll_stm32.c +++ b/drivers/rtc/rtc_ll_stm32.c @@ -17,6 +17,12 @@ #include #include +#if defined(CONFIG_SOC_SERIES_STM32L4X) +#define EXTI_LINE LL_EXTI_LINE_18 +#elif defined(CONFIG_SOC_SERIES_STM32F4X) +#define EXTI_LINE LL_EXTI_LINE_17 +#endif + #define EPOCH_OFFSET 946684800 struct rtc_stm32_config { @@ -193,7 +199,7 @@ void rtc_stm32_isr(void *arg) LL_RTC_DisableIT_ALRA(RTC); } - LL_EXTI_ClearFlag_0_31(LL_EXTI_LINE_18); + LL_EXTI_ClearFlag_0_31(EXTI_LINE); } static int rtc_stm32_init(struct device *dev) @@ -245,8 +251,8 @@ static int rtc_stm32_init(struct device *dev) LL_RTC_EnableShadowRegBypass(RTC); - LL_EXTI_EnableIT_0_31(LL_EXTI_LINE_18); - LL_EXTI_EnableRisingTrig_0_31(LL_EXTI_LINE_18); + LL_EXTI_EnableIT_0_31(EXTI_LINE); + LL_EXTI_EnableRisingTrig_0_31(EXTI_LINE); rtc_stm32_irq_config(dev); diff --git a/soc/arm/st_stm32/common/Kconfig.defconfig.series b/soc/arm/st_stm32/common/Kconfig.defconfig.series index 75627060dd4..5045299fc0c 100644 --- a/soc/arm/st_stm32/common/Kconfig.defconfig.series +++ b/soc/arm/st_stm32/common/Kconfig.defconfig.series @@ -72,4 +72,11 @@ config USB_DC_STM32 endif # USB +if RTC + +config RTC_STM32 + def_bool y + +endif # RTC + endif # SOC_FAMILY_STM32 diff --git a/soc/arm/st_stm32/stm32f4/dts.fixup b/soc/arm/st_stm32/stm32f4/dts.fixup index a01e200f628..655e1abab20 100644 --- a/soc/arm/st_stm32/stm32f4/dts.fixup +++ b/soc/arm/st_stm32/stm32f4/dts.fixup @@ -141,4 +141,10 @@ #define CONFIG_PWM_STM32_14_DEV_NAME ST_STM32_PWM_40002000_PWM_LABEL #define CONFIG_PWM_STM32_14_PRESCALER ST_STM32_PWM_40002000_PWM_ST_PRESCALER +#define CONFIG_RTC_0_BASE_ADDRESS ST_STM32_RTC_40002800_BASE_ADDRESS +#define CONFIG_RTC_0_IRQ_PRI ST_STM32_RTC_40002800_IRQ_0_PRIORITY +#define CONFIG_RTC_0_IRQ ST_STM32_RTC_40002800_IRQ_0 +#define CONFIG_RTC_0_NAME ST_STM32_RTC_40002800_LABEL +#define CONFIG_RTC_PRESCALER ST_STM32_RTC_40002800_PRESCALER + /* End of SoC Level DTS fixup file */ diff --git a/soc/arm/st_stm32/stm32f4/soc.h b/soc/arm/st_stm32/stm32f4/soc.h index 4d582dcb92e..e8ced04685d 100644 --- a/soc/arm/st_stm32/stm32f4/soc.h +++ b/soc/arm/st_stm32/stm32f4/soc.h @@ -59,6 +59,12 @@ #include #endif +#ifdef CONFIG_RTC_STM32 +#include +#include +#include +#endif + #endif /* !_ASMLANGUAGE */ #endif /* _STM32F4_SOC_H_ */ diff --git a/soc/arm/st_stm32/stm32l4/Kconfig.defconfig.series b/soc/arm/st_stm32/stm32l4/Kconfig.defconfig.series index bf0b05fd67d..211292fe32d 100644 --- a/soc/arm/st_stm32/stm32l4/Kconfig.defconfig.series +++ b/soc/arm/st_stm32/stm32l4/Kconfig.defconfig.series @@ -27,11 +27,4 @@ config ENTROPY_STM32_RNG endif # ENTROPY_GENERATOR -if RTC - -config RTC_STM32 - default y - -endif # RTC - endif # SOC_SERIES_STM32L4X