You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
107 lines
4.0 KiB
107 lines
4.0 KiB
# STM32 MCU clock control driver config |
|
|
|
# Copyright (c) 2017 Linaro |
|
# Copyright (c) 2017 RnDity Sp. z o.o. |
|
# Copyright (C) 2025 Savoir-faire Linux, Inc. |
|
# SPDX-License-Identifier: Apache-2.0 |
|
|
|
menuconfig CLOCK_CONTROL_STM32_CUBE |
|
bool "STM32 Reset & Clock Control" |
|
depends on SOC_FAMILY_STM32 |
|
default y |
|
select USE_STM32_LL_UTILS |
|
select USE_STM32_LL_RCC if (SOC_SERIES_STM32MP1X || SOC_SERIES_STM32MP13X || \ |
|
SOC_SERIES_STM32MP2X || SOC_SERIES_STM32H7X || SOC_SERIES_STM32H7RSX || \ |
|
SOC_SERIES_STM32F4X || SOC_SERIES_STM32F7X || \ |
|
SOC_SERIES_STM32N6X) |
|
select RUNTIME_NMI if ($(dt_nodelabel_enabled,clk_hse) && \ |
|
$(dt_nodelabel_bool_prop,clk_hse,css-enabled)) |
|
help |
|
Enable driver for Reset & Clock Control subsystem found |
|
in STM32 family of MCUs |
|
|
|
if CLOCK_CONTROL_STM32_CUBE |
|
|
|
DT_STM32_HSE_CLOCK := $(dt_nodelabel_path,clk_hse) |
|
DT_STM32_HSE_CLOCK_FREQ := $(dt_node_int_prop_int,$(DT_STM32_HSE_CLOCK),clock-frequency) |
|
|
|
config CLOCK_STM32_HSE_CLOCK |
|
int "HSE clock value" |
|
default "$(DT_STM32_HSE_CLOCK_FREQ)" if "$(dt_nodelabel_enabled,clk_hse)" |
|
default 8000000 |
|
help |
|
Value of external high-speed clock (HSE). This symbol could be optionally |
|
configured using device tree by setting "clock-frequency" value of clk_hse |
|
node. For instance: |
|
&clk_hse{ |
|
status = "okay"; |
|
clock-frequency = <DT_FREQ_M(25)>; |
|
}; |
|
Note: Device tree configuration is overridden when current symbol is set: |
|
CONFIG_CLOCK_STM32_HSE_CLOCK=32000000 |
|
|
|
config CLOCK_STM32_MUX |
|
bool "STM32 clock mux driver" |
|
default y |
|
depends on DT_HAS_ST_STM32_CLOCK_MUX_ENABLED |
|
help |
|
Enable driver for STM32 clock mux which don't match an |
|
existing clock hardware block but allows to select a clock |
|
for a specific domain. For instance per_ck clock on STM32H7 or |
|
CLK48 clock |
|
|
|
menu "STM32WB0 LSI options" |
|
depends on DT_HAS_ST_STM32WB0_LSI_CLOCK_ENABLED |
|
|
|
config STM32WB0_LSI_MEASUREMENT_WINDOW |
|
int "Size of LSI measurement window (in periods)" |
|
default 32 |
|
range 23 256 |
|
help |
|
Size of the LSI measurement window (# of LSI periods) |
|
|
|
The measurement process involves waiting for a certain amount of LSI periods |
|
to occur, in order to determine precisely the LSI period, and thus frequency. |
|
|
|
This property controls how much LSI periods are required for each measure. |
|
Bigger window sizes increase accuracy of the measure, but increase the time |
|
needed to complete it. Since fLSI >= 24kHz, increasing the measurement window |
|
size makes each measure roughly 42µs slower in the worst case. |
|
|
|
Minimal value is a recommendation from RM0505 Rev.1 §25.8.2, and maximum |
|
value is a hardware limitation. |
|
|
|
config STM32WB0_LSI_RUNTIME_MEASUREMENT_INTERVAL |
|
int "LSI run-time measurement interval (ms)" |
|
default 0 |
|
help |
|
Interval at which runtime measurements should be performed, in milliseconds |
|
|
|
Since the LSI RC frequency is affected by temperature, which is not stable |
|
across time, it is recommended to perform measurements of the LSI frequency |
|
at regular intervals to obtain better accuracy. |
|
|
|
This property enables runtime LSI measurement if present. In this case, |
|
a background thread is created and performs LSI measurements, sleeping |
|
the amount of time specified in this property between each measure. This |
|
thread is also tasked with updating the control registers of peripherals |
|
affected by slow clock drift such as RTC or IWDG, in collaboration with |
|
the peripherals' drivers. Note that this increases the memory footprint |
|
of the clock control driver, and may increase power consumption. |
|
|
|
Setting this option to the default value of "0" disables runtime frequency |
|
measurements - the result of a single measure performed at boot will be |
|
treated as LSI frequency for the lifetime of the application. |
|
|
|
endmenu # DT_HAS_ST_STM32WB0_LSI_CLOCK_ENABLED |
|
|
|
# Micro-controller Clock Output (MCO) configuration options |
|
config CLOCK_STM32_MCO |
|
bool |
|
default y |
|
depends on DT_HAS_ST_STM32_CLOCK_MCO_ENABLED || DT_HAS_ST_STM32F1_CLOCK_MCO_ENABLED |
|
help |
|
Allows to output various different clock sources onto the MCO pin |
|
using a configurable prescaler. |
|
|
|
endif # CLOCK_CONTROL_STM32_CUBE
|
|
|