| # STM32 MCU clock control driver config |
| |
| # Copyright (c) 2017 Linaro |
| # Copyright (c) 2017 RnDity Sp. z o.o. |
| # SPDX-License-Identifier: Apache-2.0 |
| |
| if SOC_FAMILY_STM32 |
| |
| menuconfig CLOCK_CONTROL_STM32_CUBE |
| bool "STM32 Reset & Clock Control" |
| 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 |
| endif # SOC_FAMILY_STM32 |