Skip to content

Commit 305423c

Browse files
Dalachowskyfabiobaltieri
authored andcommitted
drivers: clock_control: stm32h5: Add MCO configuration
STM32H5 series lacked support for MCO configuration. Added SOC_SERIES_STM32H5X to approperiate kconfig MCO source configurations. Added new MCO sources from H5 series and updated the clock_stm32_ll_h5.c with MCO configuration. Signed-off-by: Kacper Dalach <[email protected]>
1 parent aab0735 commit 305423c

File tree

2 files changed

+30
-14
lines changed

2 files changed

+30
-14
lines changed

drivers/clock_control/Kconfig.stm32

Lines changed: 26 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,8 @@ config CLOCK_STM32_MCO1_SRC_LSE
6666
depends on SOC_SERIES_STM32F4X || \
6767
SOC_SERIES_STM32F7X || \
6868
SOC_SERIES_STM32L4X || \
69-
SOC_SERIES_STM32H7X
69+
SOC_SERIES_STM32H7X || \
70+
SOC_SERIES_STM32H5X
7071
help
7172
Use LSE as source of MCO1
7273

@@ -76,7 +77,8 @@ config CLOCK_STM32_MCO1_SRC_HSE
7677
SOC_SERIES_STM32F4X || \
7778
SOC_SERIES_STM32F7X || \
7879
SOC_SERIES_STM32L4X || \
79-
SOC_SERIES_STM32H7X
80+
SOC_SERIES_STM32H7X || \
81+
SOC_SERIES_STM32H5X
8082
help
8183
Use HSE as source of MCO1
8284

@@ -97,7 +99,8 @@ config CLOCK_STM32_MCO1_SRC_HSI
9799
depends on SOC_SERIES_STM32F1X || \
98100
SOC_SERIES_STM32F4X || \
99101
SOC_SERIES_STM32F7X || \
100-
SOC_SERIES_STM32H7X
102+
SOC_SERIES_STM32H7X || \
103+
SOC_SERIES_STM32H5X
101104
help
102105
Use HSI as source of MCO1
103106

@@ -110,7 +113,8 @@ config CLOCK_STM32_MCO1_SRC_HSI16
110113
config CLOCK_STM32_MCO1_SRC_HSI48
111114
bool "HSI48"
112115
depends on SOC_SERIES_STM32L4X || \
113-
SOC_SERIES_STM32H7X
116+
SOC_SERIES_STM32H7X || \
117+
SOC_SERIES_STM32H5X
114118
help
115119
Use HSI48 as source of MCO1
116120

@@ -122,7 +126,8 @@ config CLOCK_STM32_MCO1_SRC_PLLCLK
122126

123127
config CLOCK_STM32_MCO1_SRC_PLLQCLK
124128
bool "PLLQ"
125-
depends on SOC_SERIES_STM32H7X
129+
depends on SOC_SERIES_STM32H7X || \
130+
SOC_SERIES_STM32H5X
126131
help
127132
Use PLLQ as source of MCO1
128133

@@ -163,11 +168,12 @@ config CLOCK_STM32_MCO1_DIV
163168
SOC_SERIES_STM32F4X || \
164169
SOC_SERIES_STM32F7X || \
165170
SOC_SERIES_STM32L4X || \
166-
SOC_SERIES_STM32H7X \
171+
SOC_SERIES_STM32H7X || \
172+
SOC_SERIES_STM32H5X \
167173
)
168174
default 1
169175
range 1 5 if SOC_SERIES_STM32F4X || SOC_SERIES_STM32F7X
170-
range 1 15 if SOC_SERIES_STM32H7X
176+
range 1 15 if SOC_SERIES_STM32H7X || SOC_SERIES_STM32H5X
171177
range 1 16 if SOC_SERIES_STM32L4X
172178
help
173179
Prescaler for MCO1 output clock
@@ -185,7 +191,8 @@ config CLOCK_STM32_MCO2_SRC_SYSCLK
185191
bool "SYSCLK"
186192
depends on SOC_SERIES_STM32F4X || \
187193
SOC_SERIES_STM32F7X || \
188-
SOC_SERIES_STM32H7X
194+
SOC_SERIES_STM32H7X || \
195+
SOC_SERIES_STM32H5X
189196
help
190197
Use SYSCLK as source of MCO2
191198

@@ -199,19 +206,22 @@ config CLOCK_STM32_MCO2_SRC_HSE
199206
bool "HSE"
200207
depends on SOC_SERIES_STM32F4X || \
201208
SOC_SERIES_STM32F7X || \
202-
SOC_SERIES_STM32H7X
209+
SOC_SERIES_STM32H7X || \
210+
SOC_SERIES_STM32H5X
203211
help
204212
Use HSE as source of MCO2
205213

206214
config CLOCK_STM32_MCO2_SRC_LSI
207215
bool "LSI"
208-
depends on SOC_SERIES_STM32H7X
216+
depends on SOC_SERIES_STM32H7X || \
217+
SOC_SERIES_STM32H5X
209218
help
210219
Use LSI as source of MCO2
211220

212221
config CLOCK_STM32_MCO2_SRC_CSI
213222
bool "CSI"
214-
depends on SOC_SERIES_STM32H7X
223+
depends on SOC_SERIES_STM32H7X || \
224+
SOC_SERIES_STM32H5X
215225
help
216226
Use CSI as source of MCO2
217227

@@ -223,13 +233,15 @@ config CLOCK_STM32_MCO2_SRC_PLLCLK
223233

224234
config CLOCK_STM32_MCO2_SRC_PLLPCLK
225235
bool "PLLPCLK"
226-
depends on SOC_SERIES_STM32H7X
236+
depends on SOC_SERIES_STM32H7X || \
237+
SOC_SERIES_STM32H5X
227238
help
228239
Use PLLPCLK as source of MC02
229240

230241
config CLOCK_STM32_MCO2_SRC_PLL2PCLK
231242
bool "PLL2PCLK"
232-
depends on SOC_SERIES_STM32H7X
243+
depends on SOC_SERIES_STM32H7X || \
244+
SOC_SERIES_STM32H5X
233245
help
234246
Use PLL2PCLK as source of MC02
235247
endchoice
@@ -243,7 +255,7 @@ config CLOCK_STM32_MCO2_DIV
243255
)
244256
default 1
245257
range 1 5 if SOC_SERIES_STM32F4X || SOC_SERIES_STM32F7X
246-
range 1 15 if SOC_SERIES_STM32H7X
258+
range 1 15 if SOC_SERIES_STM32H7X || SOC_SERIES_STM32H5X
247259
help
248260
Prescaler for MCO2 output clock
249261

drivers/clock_control/clock_stm32_ll_h5.c

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818
#include <zephyr/drivers/clock_control.h>
1919
#include <zephyr/sys/util.h>
2020
#include <zephyr/drivers/clock_control/stm32_clock_control.h>
21+
#include "clock_stm32_ll_mco.h"
2122

2223
/* Macros to fill up prescaler values */
2324
#define z_hsi_divider(v) LL_RCC_HSI_DIV_ ## v
@@ -752,6 +753,9 @@ int stm32_clock_control_init(const struct device *dev)
752753
/* Update CMSIS variable */
753754
SystemCoreClock = CONFIG_SYS_CLOCK_HW_CYCLES_PER_SEC;
754755

756+
/* configure MCO1/MCO2 based on Kconfig */
757+
stm32_clock_control_mco_init();
758+
755759
return 0;
756760
}
757761

0 commit comments

Comments
 (0)