mirror of
https://github.com/zephyrproject-rtos/zephyr
synced 2025-08-09 22:16:29 +00:00
I think people might be reading differences into 'if' and 'depends on' that aren't there, like maybe 'if' being needed to "hide" a symbol, while 'depends on' just adds a dependency. There are no differences between 'if' and 'depends on'. 'if' is just a shorthand for 'depends on'. They work the same when it comes to creating implicit menus too. The way symbols get "hidden" is through their dependencies not being satisfied ('if'/'depends on' get copied up as a dependency on the prompt). Since 'if' and 'depends on' are the same, an 'if' with just a single symbol in it can be replaced with a 'depends on'. IMO, it's best to avoid 'if' there as a style choice too, because it confuses people into thinking there's deep Kconfig magic going on that requires 'if'. Going for 'depends on' can also remove some nested 'if's, which generates nicer symbol information and docs, because nested 'if's really are so simple/dumb that they just add the dependencies from both 'if's to all symbols within. Replace a bunch of single-symbol 'if's with 'depends on' to despam the Kconfig files a bit and make it clearer how things work. Also do some other minor related dependency refactoring. The replacement isn't complete. Will fix up the rest later. Splitting it a bit to make it more manageable. (Everything above is true for choices, menus, and comments as well.) Detected by tweaking the Kconfiglib parsing code. It's impossible to detect after parsing, because 'if' turns into 'depends on'. Signed-off-by: Ulf Magnusson <Ulf.Magnusson@nordicsemi.no>
275 lines
6.0 KiB
Plaintext
275 lines
6.0 KiB
Plaintext
# STM32 MCU clock control driver config
|
|
|
|
# Copyright (c) 2017 Linaro
|
|
# Copyright (c) 2017 RnDity Sp. z o.o.
|
|
# SPDX-License-Identifier: Apache-2.0
|
|
|
|
menuconfig CLOCK_CONTROL_STM32_CUBE
|
|
bool "STM32 Reset & Clock Control"
|
|
depends on SOC_FAMILY_STM32
|
|
select USE_STM32_LL_UTILS
|
|
select USE_STM32_LL_RCC if SOC_SERIES_STM32MP1X
|
|
help
|
|
Enable driver for Reset & Clock Control subsystem found
|
|
in STM32 family of MCUs
|
|
|
|
if CLOCK_CONTROL_STM32_CUBE
|
|
|
|
config CLOCK_CONTROL_STM32_DEVICE_INIT_PRIORITY
|
|
int "Clock Control Device Priority"
|
|
default 1
|
|
help
|
|
This option controls the priority of clock control
|
|
device initialization. Higher priority ensures that the device
|
|
is initialized earlier in the startup cycle. If unsure, leave
|
|
at default value 1
|
|
|
|
choice CLOCK_STM32_SYSCLK_SRC
|
|
prompt "STM32 System Clock Source"
|
|
|
|
config CLOCK_STM32_SYSCLK_SRC_HSE
|
|
bool "HSE"
|
|
help
|
|
Use HSE as source of SYSCLK
|
|
|
|
config CLOCK_STM32_SYSCLK_SRC_HSI
|
|
bool "HSI"
|
|
help
|
|
Use HSI as source of SYSCLK
|
|
|
|
config CLOCK_STM32_SYSCLK_SRC_MSI
|
|
bool "MSI"
|
|
depends on SOC_SERIES_STM32L0X || SOC_SERIES_STM32L4X || SOC_SERIES_STM32WBX
|
|
help
|
|
Use MSI as source of SYSCLK
|
|
|
|
config CLOCK_STM32_SYSCLK_SRC_PLL
|
|
bool "PLL"
|
|
help
|
|
Use PLL as source of SYSCLK
|
|
|
|
endchoice #CLOCK_STM32_SYSCLK_SRC
|
|
|
|
config CLOCK_STM32_HSE_BYPASS
|
|
bool "HSE bypass"
|
|
depends on CLOCK_STM32_SYSCLK_SRC_HSE || CLOCK_STM32_PLL_SRC_HSE
|
|
help
|
|
Enable this option to bypass external high-speed clock (HSE).
|
|
|
|
config CLOCK_STM32_HSE_CLOCK
|
|
int "HSE clock value"
|
|
depends on CLOCK_STM32_SYSCLK_SRC_HSE || CLOCK_STM32_PLL_SRC_HSE
|
|
default 8000000
|
|
help
|
|
Value of external high-speed clock (HSE).
|
|
|
|
config CLOCK_STM32_MSI_RANGE
|
|
int "MSI frequency range"
|
|
depends on CLOCK_STM32_SYSCLK_SRC_MSI
|
|
default 8
|
|
help
|
|
Frequency range of MSI when MSI range is provided in RCC_CR register
|
|
Range 0: 100kHz
|
|
Range 1: 200kHz
|
|
Range 2 around 400 kHz
|
|
Range 3 around 800 kHz
|
|
Range 4: 1 MHz
|
|
Range 5: 2 MHz
|
|
Range 6: 4 MHz (reset value)
|
|
Range 7: 8 MHz
|
|
Range 8: 16 MHz
|
|
Range 9: 24 MHz
|
|
Range 10: 32 MHz
|
|
Range 11: 48 MHz
|
|
|
|
choice
|
|
prompt "STM32 PLL Clock Source"
|
|
default CLOCK_STM32_PLL_SRC_HSI
|
|
depends on CLOCK_STM32_SYSCLK_SRC_PLL
|
|
|
|
config CLOCK_STM32_PLL_SRC_MSI
|
|
bool "MSI"
|
|
depends on SOC_SERIES_STM32L0X || SOC_SERIES_STM32L4X || SOC_SERIES_STM32WBX
|
|
help
|
|
Use MSI as source of PLL
|
|
|
|
config CLOCK_STM32_PLL_SRC_HSI
|
|
bool "HSI"
|
|
help
|
|
Use HSI as source of PLL
|
|
|
|
config CLOCK_STM32_PLL_SRC_HSE
|
|
bool "HSE"
|
|
help
|
|
Use HSE as source of PLL
|
|
|
|
config CLOCK_STM32_PLL_SRC_PLL2
|
|
bool "PLL2"
|
|
depends on SOC_STM32F10X_CONNECTIVITY_LINE_DEVICE
|
|
help
|
|
Use PLL2 as source of main PLL. This is equivalent of defining
|
|
PLL2 as source PREDIV1SCR. If not selected, default source is HSE.
|
|
|
|
endchoice
|
|
|
|
|
|
# Source series specific files for PLL settings
|
|
|
|
source "drivers/clock_control/Kconfig.stm32f0_f3"
|
|
source "drivers/clock_control/Kconfig.stm32f1"
|
|
source "drivers/clock_control/Kconfig.stm32f2_f4_f7"
|
|
source "drivers/clock_control/Kconfig.stm32h7"
|
|
source "drivers/clock_control/Kconfig.stm32l0_l1"
|
|
source "drivers/clock_control/Kconfig.stm32l4_wb"
|
|
source "drivers/clock_control/Kconfig.stm32g0"
|
|
source "drivers/clock_control/Kconfig.stm32g4"
|
|
|
|
# Bus clocks configuration options
|
|
|
|
if !SOC_SERIES_STM32H7X
|
|
|
|
config CLOCK_STM32_AHB_PRESCALER
|
|
int "AHB prescaler"
|
|
default 1
|
|
range 1 512
|
|
depends on !SOC_SERIES_STM32WBX
|
|
help
|
|
AHB prescaler, allowed values: 1, 2, 4, 8, 16, 64, 128,
|
|
256, 512.
|
|
|
|
config CLOCK_STM32_APB1_PRESCALER
|
|
int "APB1 prescaler"
|
|
default 1
|
|
range 1 16
|
|
help
|
|
APB1 Low speed clock (PCLK1) prescaler, allowed values:
|
|
1, 2, 4, 8, 16
|
|
|
|
config CLOCK_STM32_APB2_PRESCALER
|
|
int "APB2 prescaler"
|
|
default 1
|
|
range 1 16
|
|
depends on !SOC_SERIES_STM32F0X
|
|
help
|
|
APB2 High speed clock (PCLK2) prescaler, allowed values:
|
|
1, 2, 4, 8, 16
|
|
|
|
config CLOCK_STM32_CPU1_PRESCALER
|
|
int "CPU1 HCLK prescaler"
|
|
default 1
|
|
range 1 512
|
|
depends on SOC_SERIES_STM32WBX
|
|
help
|
|
CPU1 HCLK prescaler, allowed values: 1, 2, 4, 8, 16, 64, 128,
|
|
256, 512.
|
|
|
|
config CLOCK_STM32_CPU2_PRESCALER
|
|
int "CPU2 HCLK prescaler"
|
|
default 1
|
|
range 1 512
|
|
depends on SOC_SERIES_STM32WBX
|
|
help
|
|
CPU2 HCLK prescaler, allowed values: 1, 2, 4, 8, 16, 64, 128,
|
|
256, 512.
|
|
|
|
config CLOCK_STM32_AHB4_PRESCALER
|
|
int "AHB4 HCLK prescaler"
|
|
default 1
|
|
range 1 512
|
|
depends on SOC_SERIES_STM32WBX
|
|
help
|
|
HCLK4 prescaler, allowed values: 1, 2, 4, 8, 16, 64, 128,
|
|
256, 512.
|
|
|
|
endif # !SOC_SERIES_STM32H7X
|
|
|
|
# Micro-controller Clock output configuration options
|
|
|
|
choice
|
|
prompt "STM32 MCO1 Clock Source"
|
|
default CLOCK_STM32_MCO1_SRC_NOCLOCK
|
|
|
|
config CLOCK_STM32_MCO1_SRC_NOCLOCK
|
|
bool "NOCLOCK"
|
|
help
|
|
MCO1 output disabled, no clock on MCO1
|
|
|
|
config CLOCK_STM32_MCO1_SRC_LSE
|
|
bool "LSE"
|
|
depends on SOC_SERIES_STM32F4X
|
|
help
|
|
Use LSE as source of MCO1
|
|
|
|
config CLOCK_STM32_MCO1_SRC_HSE
|
|
bool "HSE"
|
|
depends on SOC_SERIES_STM32F4X
|
|
help
|
|
Use HSE as source of MCO1
|
|
|
|
config CLOCK_STM32_MCO1_SRC_HSI
|
|
bool "HSI"
|
|
depends on SOC_SERIES_STM32F4X
|
|
help
|
|
Use HSI as source of MCO1
|
|
|
|
config CLOCK_STM32_MCO1_SRC_PLLCLK
|
|
bool "PLLCLK"
|
|
depends on SOC_SERIES_STM32F4X
|
|
help
|
|
Use PLLCLK as source of MCO1
|
|
|
|
endchoice
|
|
|
|
config CLOCK_STM32_MCO1_DIV
|
|
int "MCO1 prescaler"
|
|
depends on !CLOCK_STM32_MCO1_SRC_NOCLOCK
|
|
default 1
|
|
range 1 5
|
|
help
|
|
allowed values: 1, 2, 3, 4, 5
|
|
|
|
choice
|
|
prompt "STM32 MCO2 Clock Source"
|
|
default CLOCK_STM32_MCO2_SRC_NOCLOCK
|
|
|
|
config CLOCK_STM32_MCO2_SRC_NOCLOCK
|
|
bool "NOCLOCK"
|
|
help
|
|
MCO2 output disabled, no clock on MCO2
|
|
|
|
config CLOCK_STM32_MCO2_SRC_SYSCLK
|
|
bool "SYSCLK"
|
|
depends on SOC_SERIES_STM32F4X
|
|
help
|
|
Use SYSCLK as source of MCO2
|
|
|
|
config CLOCK_STM32_MCO2_SRC_PLLI2S
|
|
bool "PLLI2S"
|
|
depends on SOC_SERIES_STM32F4X
|
|
help
|
|
Use PLLI2S as source of MCO2
|
|
|
|
config CLOCK_STM32_MCO2_SRC_HSE
|
|
bool "HSE"
|
|
depends on SOC_SERIES_STM32F4X
|
|
help
|
|
Use HSE as source of MCO2
|
|
|
|
config CLOCK_STM32_MCO2_SRC_PLLCLK
|
|
bool "PLLCLK"
|
|
depends on SOC_SERIES_STM32F4X
|
|
help
|
|
Use PLLCLK as source of MCO2
|
|
|
|
endchoice
|
|
|
|
config CLOCK_STM32_MCO2_DIV
|
|
int "MCO2 prescaler"
|
|
depends on !CLOCK_STM32_MCO2_SRC_NOCLOCK
|
|
default 1
|
|
range 1 5
|
|
help
|
|
allowed values: 1, 2, 3, 4, 5
|
|
|
|
endif # CLOCK_CONTROL_STM32_CUBE
|