From 3074e393db71394ec2181ecb8d8567cab05f6310 Mon Sep 17 00:00:00 2001 From: Erwan Gouriou Date: Thu, 29 Nov 2018 11:37:45 +0100 Subject: [PATCH] drivers/counter: stm32 rtc: Use dts to get RTC clock information RTC clock information should be provided by dts files Fixes #10451 Signed-off-by: Erwan Gouriou --- drivers/counter/counter_ll_stm32_rtc.c | 4 ++-- dts/arm/st/f3/stm32f3.dtsi | 1 + dts/arm/st/f4/stm32f4.dtsi | 1 + dts/arm/st/f7/stm32f7.dtsi | 1 + dts/arm/st/l4/stm32l4.dtsi | 1 + dts/bindings/rtc/st,stm32-rtc.yaml | 6 ++++++ soc/arm/st_stm32/stm32f3/dts_fixup.h | 3 ++- soc/arm/st_stm32/stm32f4/dts_fixup.h | 2 ++ soc/arm/st_stm32/stm32f7/dts_fixup.h | 2 ++ soc/arm/st_stm32/stm32l4/dts_fixup.h | 2 ++ 10 files changed, 20 insertions(+), 3 deletions(-) diff --git a/drivers/counter/counter_ll_stm32_rtc.c b/drivers/counter/counter_ll_stm32_rtc.c index 72a635649f6..23ae19801c3 100644 --- a/drivers/counter/counter_ll_stm32_rtc.c +++ b/drivers/counter/counter_ll_stm32_rtc.c @@ -320,8 +320,8 @@ static const struct rtc_stm32_config rtc_config = { .channels = 1, }, .pclken = { - .enr = LL_APB1_GRP1_PERIPH_PWR, - .bus = STM32_CLOCK_BUS_APB1, + .enr = DT_RTC_0_CLOCK_BITS, + .bus = DT_RTC_0_CLOCK_BUS, }, .ll_rtc_config = { .HourFormat = LL_RTC_HOURFORMAT_24HOUR, diff --git a/dts/arm/st/f3/stm32f3.dtsi b/dts/arm/st/f3/stm32f3.dtsi index dd4d73c1aed..b08a0e8a62b 100644 --- a/dts/arm/st/f3/stm32f3.dtsi +++ b/dts/arm/st/f3/stm32f3.dtsi @@ -288,6 +288,7 @@ rtc: rtc@40002800 { compatible = "st,stm32-rtc"; reg = <0x40002800 0x400>; + clocks = <&rcc STM32_CLOCK_BUS_APB1 0x10000000>; interrupts = <41 0>; prescaler = <32768>; status = "disabled"; diff --git a/dts/arm/st/f4/stm32f4.dtsi b/dts/arm/st/f4/stm32f4.dtsi index ea66bd395e5..05e9079f8a2 100644 --- a/dts/arm/st/f4/stm32f4.dtsi +++ b/dts/arm/st/f4/stm32f4.dtsi @@ -363,6 +363,7 @@ compatible = "st,stm32-rtc"; reg = <0x40002800 0x400>; interrupts = <41 0>; + clocks = <&rcc STM32_CLOCK_BUS_APB1 0x10000000>; prescaler = <32768>; status = "disabled"; label = "RTC_0"; diff --git a/dts/arm/st/f7/stm32f7.dtsi b/dts/arm/st/f7/stm32f7.dtsi index 8edb7647b01..5c5615193c2 100644 --- a/dts/arm/st/f7/stm32f7.dtsi +++ b/dts/arm/st/f7/stm32f7.dtsi @@ -578,6 +578,7 @@ compatible = "st,stm32-rtc"; reg = <0x40002800 0x300>; interrupts = <41 0>; + clocks = <&rcc STM32_CLOCK_BUS_APB1 0x10000000>; prescaler = <32768>; status = "disabled"; label = "RTC_0"; diff --git a/dts/arm/st/l4/stm32l4.dtsi b/dts/arm/st/l4/stm32l4.dtsi index 3a905ca0a29..11df82afce2 100644 --- a/dts/arm/st/l4/stm32l4.dtsi +++ b/dts/arm/st/l4/stm32l4.dtsi @@ -286,6 +286,7 @@ compatible = "st,stm32-rtc"; reg = <0x40002800 0x400>; interrupts = <41 0>; + clocks = <&rcc STM32_CLOCK_BUS_APB1 0x10000000>; prescaler = <32768>; status = "disabled"; label = "RTC_0"; diff --git a/dts/bindings/rtc/st,stm32-rtc.yaml b/dts/bindings/rtc/st,stm32-rtc.yaml index 49890a07538..5d6cfc97b7d 100644 --- a/dts/bindings/rtc/st,stm32-rtc.yaml +++ b/dts/bindings/rtc/st,stm32-rtc.yaml @@ -25,4 +25,10 @@ properties: description: mmio register space generation: define category: required + + clocks: + type: array + category: optional + description: Clock gate information + generation: define ... diff --git a/soc/arm/st_stm32/stm32f3/dts_fixup.h b/soc/arm/st_stm32/stm32f3/dts_fixup.h index 607106743a7..5891974ee3e 100644 --- a/soc/arm/st_stm32/stm32f3/dts_fixup.h +++ b/soc/arm/st_stm32/stm32f3/dts_fixup.h @@ -255,6 +255,7 @@ #define CONFIG_RTC_0_NAME DT_ST_STM32_RTC_40002800_LABEL #define DT_RTC_0_NAME DT_ST_STM32_RTC_40002800_LABEL #define CONFIG_RTC_PRESCALER DT_ST_STM32_RTC_40002800_PRESCALER - #define DT_WDT_0_NAME DT_ST_STM32_WATCHDOG_0_LABEL +#define DT_RTC_0_CLOCK_BITS DT_ST_STM32_RTC_40002800_CLOCK_BITS +#define DT_RTC_0_CLOCK_BUS DT_ST_STM32_RTC_40002800_CLOCK_BUS /* End of SoC Level DTS fixup file */ diff --git a/soc/arm/st_stm32/stm32f4/dts_fixup.h b/soc/arm/st_stm32/stm32f4/dts_fixup.h index 801ac02ed7e..b208c691bf5 100644 --- a/soc/arm/st_stm32/stm32f4/dts_fixup.h +++ b/soc/arm/st_stm32/stm32f4/dts_fixup.h @@ -366,6 +366,8 @@ #define CONFIG_RTC_0_NAME DT_ST_STM32_RTC_40002800_LABEL #define DT_RTC_0_NAME DT_ST_STM32_RTC_40002800_LABEL #define CONFIG_RTC_PRESCALER DT_ST_STM32_RTC_40002800_PRESCALER +#define DT_RTC_0_CLOCK_BITS DT_ST_STM32_RTC_40002800_CLOCK_BITS +#define DT_RTC_0_CLOCK_BUS DT_ST_STM32_RTC_40002800_CLOCK_BUS #define DT_WDT_0_NAME DT_ST_STM32_WATCHDOG_0_LABEL /* End of SoC Level DTS fixup file */ diff --git a/soc/arm/st_stm32/stm32f7/dts_fixup.h b/soc/arm/st_stm32/stm32f7/dts_fixup.h index ab310508a89..dcb9576688d 100644 --- a/soc/arm/st_stm32/stm32f7/dts_fixup.h +++ b/soc/arm/st_stm32/stm32f7/dts_fixup.h @@ -355,6 +355,8 @@ #define CONFIG_RTC_0_NAME DT_ST_STM32_RTC_40002800_LABEL #define DT_RTC_0_NAME DT_ST_STM32_RTC_40002800_LABEL #define CONFIG_RTC_PRESCALER DT_ST_STM32_RTC_40002800_PRESCALER +#define DT_RTC_0_CLOCK_BITS DT_ST_STM32_RTC_40002800_CLOCK_BITS +#define DT_RTC_0_CLOCK_BUS DT_ST_STM32_RTC_40002800_CLOCK_BUS #define DT_FLASH_DEV_BASE_ADDRESS DT_ST_STM32F7_FLASH_CONTROLLER_40023C00_BASE_ADDRESS #define DT_FLASH_DEV_NAME DT_ST_STM32F7_FLASH_CONTROLLER_40023C00_LABEL diff --git a/soc/arm/st_stm32/stm32l4/dts_fixup.h b/soc/arm/st_stm32/stm32l4/dts_fixup.h index 5499a6789ff..0b2fe65d52d 100644 --- a/soc/arm/st_stm32/stm32l4/dts_fixup.h +++ b/soc/arm/st_stm32/stm32l4/dts_fixup.h @@ -177,6 +177,8 @@ #define CONFIG_RTC_0_NAME DT_ST_STM32_RTC_40002800_LABEL #define DT_RTC_0_NAME DT_ST_STM32_RTC_40002800_LABEL #define CONFIG_RTC_PRESCALER DT_ST_STM32_RTC_40002800_PRESCALER +#define DT_RTC_0_CLOCK_BITS DT_ST_STM32_RTC_40002800_CLOCK_BITS +#define DT_RTC_0_CLOCK_BUS DT_ST_STM32_RTC_40002800_CLOCK_BUS #define DT_SPI_1_BASE_ADDRESS DT_ST_STM32_SPI_FIFO_40013000_BASE_ADDRESS #define DT_SPI_1_IRQ_PRI DT_ST_STM32_SPI_FIFO_40013000_IRQ_0_PRIORITY