Skip to content

Commit a103d63

Browse files
FRASTMnashif
authored andcommitted
include: binding defines division factor for stm32 MCO prescaler
Depending on the stm32 serie the MCO1/2 prescaler is a value set in the CFGR register to divide the MCO output clock. Use the same model based on the RefMan for other stm32 series than stm32C0/F4/F7/H5/H7, once the MCO is in the DTS. Signed-off-by: Francois Ramu <francois.ramu@st.com>
1 parent f0ba72e commit a103d63

File tree

7 files changed

+77
-1
lines changed

7 files changed

+77
-1
lines changed

dts/bindings/clock/st,stm32-clock-mco.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ description: |
1515
Example:
1616
&mco1 {
1717
clocks = <&rcc STM32_SRC_LSE MCO1_SEL(7)>;
18-
prescaler = <MCO1_PRE(1)>;
18+
prescaler = <MCO1_PRE(MCO_PRE_DIV_5)>;
1919
pinctrl-0 = <&rcc_mco_pa8>;
2020
pinctrl-names = "default";
2121
status = "okay";

include/zephyr/dt-bindings/clock/stm32c0_clock.h

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -81,4 +81,14 @@
8181
#define MCO2_SEL(val) STM32_MCO_CFGR(val, 0x7, 16, CFGR1_REG)
8282
#define MCO2_PRE(val) STM32_MCO_CFGR(val, 0x7, 20, CFGR1_REG)
8383

84+
/* MCO prescaler : division factor */
85+
#define MCO_PRE_DIV_1 0
86+
#define MCO_PRE_DIV_2 1
87+
#define MCO_PRE_DIV_4 2
88+
#define MCO_PRE_DIV_8 3
89+
#define MCO_PRE_DIV_16 4
90+
#define MCO_PRE_DIV_32 5
91+
#define MCO_PRE_DIV_64 6
92+
#define MCO_PRE_DIV_128 7
93+
8494
#endif /* ZEPHYR_INCLUDE_DT_BINDINGS_CLOCK_STM32C0_CLOCK_H_ */

include/zephyr/dt-bindings/clock/stm32f4_clock.h

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -82,4 +82,11 @@
8282
/** BDCR devices */
8383
#define RTC_SEL(val) STM32_DOMAIN_CLOCK(val, 3, 8, BDCR_REG)
8484

85+
/* MCO prescaler : division factor */
86+
#define MCO_PRE_DIV_1 0
87+
#define MCO_PRE_DIV_2 4
88+
#define MCO_PRE_DIV_3 5
89+
#define MCO_PRE_DIV_4 6
90+
#define MCO_PRE_DIV_5 7
91+
8592
#endif /* ZEPHYR_INCLUDE_DT_BINDINGS_CLOCK_STM32F4_CLOCK_H_ */

include/zephyr/dt-bindings/clock/stm32f7_clock.h

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -82,6 +82,14 @@
8282
#define MCO1_PRE(val) STM32_MCO_CFGR(val, 0x7, 24, CFGR_REG)
8383
#define MCO2_SEL(val) STM32_MCO_CFGR(val, 0x3, 30, CFGR_REG)
8484
#define MCO2_PRE(val) STM32_MCO_CFGR(val, 0x7, 27, CFGR_REG)
85+
86+
/* MCO prescaler : division factor */
87+
#define MCO_PRE_DIV_1 0
88+
#define MCO_PRE_DIV_2 4
89+
#define MCO_PRE_DIV_3 5
90+
#define MCO_PRE_DIV_4 6
91+
#define MCO_PRE_DIV_5 7
92+
8593
/** BDCR devices */
8694
#define RTC_SEL(val) STM32_DOMAIN_CLOCK(val, 3, 8, BDCR_REG)
8795

include/zephyr/dt-bindings/clock/stm32h5_clock.h

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -156,4 +156,21 @@
156156
#define MCO2_SEL(val) STM32_MCO_CFGR(val, 0x7, 25, CFGR1_REG)
157157
#define MCO2_PRE(val) STM32_MCO_CFGR(val, 0xF, 29, CFGR1_REG)
158158

159+
/* MCO prescaler : division factor */
160+
#define MCO_PRE_DIV_1 1
161+
#define MCO_PRE_DIV_2 2
162+
#define MCO_PRE_DIV_3 3
163+
#define MCO_PRE_DIV_4 4
164+
#define MCO_PRE_DIV_5 5
165+
#define MCO_PRE_DIV_6 6
166+
#define MCO_PRE_DIV_7 7
167+
#define MCO_PRE_DIV_8 8
168+
#define MCO_PRE_DIV_9 9
169+
#define MCO_PRE_DIV_10 10
170+
#define MCO_PRE_DIV_11 11
171+
#define MCO_PRE_DIV_12 12
172+
#define MCO_PRE_DIV_13 13
173+
#define MCO_PRE_DIV_14 14
174+
#define MCO_PRE_DIV_15 15
175+
159176
#endif /* ZEPHYR_INCLUDE_DT_BINDINGS_CLOCK_STM32H5_CLOCK_H_ */

include/zephyr/dt-bindings/clock/stm32h7_clock.h

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -141,4 +141,21 @@
141141
#define MCO2_SEL(val) STM32_MCO_CFGR(val, 0xF, 29, CFGR_REG)
142142
#define MCO2_PRE(val) STM32_MCO_CFGR(val, 0x7, 25, CFGR_REG)
143143

144+
/* MCO prescaler : division factor */
145+
#define MCO_PRE_DIV_1 1
146+
#define MCO_PRE_DIV_2 2
147+
#define MCO_PRE_DIV_3 3
148+
#define MCO_PRE_DIV_4 4
149+
#define MCO_PRE_DIV_5 5
150+
#define MCO_PRE_DIV_6 6
151+
#define MCO_PRE_DIV_7 7
152+
#define MCO_PRE_DIV_8 8
153+
#define MCO_PRE_DIV_9 9
154+
#define MCO_PRE_DIV_10 10
155+
#define MCO_PRE_DIV_11 11
156+
#define MCO_PRE_DIV_12 12
157+
#define MCO_PRE_DIV_13 13
158+
#define MCO_PRE_DIV_14 14
159+
#define MCO_PRE_DIV_15 15
160+
144161
#endif /* ZEPHYR_INCLUDE_DT_BINDINGS_CLOCK_STM32H7_CLOCK_H_ */

include/zephyr/dt-bindings/clock/stm32h7rs_clock.h

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -137,4 +137,21 @@
137137
#define MCO2_SEL(val) STM32_MCO_CFGR(val, 0x7, 29, CFGR_REG)
138138
#define MCO2_PRE(val) STM32_MCO_CFGR(val, 0xF, 25, CFGR_REG)
139139

140+
/* MCO prescaler : division factor */
141+
#define MCO_PRE_DIV_1 1
142+
#define MCO_PRE_DIV_2 2
143+
#define MCO_PRE_DIV_3 3
144+
#define MCO_PRE_DIV_4 4
145+
#define MCO_PRE_DIV_5 5
146+
#define MCO_PRE_DIV_6 6
147+
#define MCO_PRE_DIV_7 7
148+
#define MCO_PRE_DIV_8 8
149+
#define MCO_PRE_DIV_9 9
150+
#define MCO_PRE_DIV_10 10
151+
#define MCO_PRE_DIV_11 11
152+
#define MCO_PRE_DIV_12 12
153+
#define MCO_PRE_DIV_13 13
154+
#define MCO_PRE_DIV_14 14
155+
#define MCO_PRE_DIV_15 15
156+
140157
#endif /* ZEPHYR_INCLUDE_DT_BINDINGS_CLOCK_STM32H7RS_CLOCK_H_ */

0 commit comments

Comments
 (0)