# Kconfig - STM32L4 MCU clock control driver config
#
# Copyright (c) 2016 Open-RnD Sp. z o.o.
# Copyright (c) 2016 BayLibre, SAS
#
# SPDX-License-Identifier: Apache-2.0
#

if SOC_SERIES_STM32L4X

menuconfig CLOCK_CONTROL_STM32L4X
	bool
	prompt "STM32L4x Reset & Clock Control"
	depends on CLOCK_CONTROL && SOC_SERIES_STM32L4X
	default y if SOC_SERIES_STM32L4X
	help
	  Enable driver for Reset & Clock Control subsystem found
	  in STM32L4 family of MCUs

config CLOCK_CONTROL_STM32L4X_DEVICE_INIT_PRIORITY
	int "Clock Control Device Priority"
	default 1
	depends on CLOCK_CONTROL_STM32L4X
	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
prompt "STM32L4X System Clock Source"
depends on CLOCK_CONTROL_STM32L4X
default CLOCK_STM32L4X_SYSCLK_SRC_PLL

config CLOCK_STM32L4X_SYSCLK_SRC_HSE
	bool "HSE"
	help
	  Use HSE as source of SYSCLK

config CLOCK_STM32L4X_SYSCLK_SRC_PLL
	bool "PLL"
	help
	  Use PLL as source of SYSCLK

endchoice

choice
prompt "STM32L4X PLL Clock Source"
depends on CLOCK_CONTROL_STM32L4X && CLOCK_STM32L4X_SYSCLK_SRC_PLL
default CLOCK_STM32L4X_PLL_SRC_HSI

config CLOCK_STM32L4X_PLL_SRC_MSI
	bool "MSI"
	help
	  Use MSI as source of PLL

config CLOCK_STM32L4X_PLL_SRC_HSI
	bool "HSI"
	help
	  Use HSI as source of PLL

endchoice

config CLOCK_STM32L4X_HSE_BYPASS
	bool "HSE bypass"
	depends on CLOCK_CONTROL_STM32L4X && CLOCK_STM32L4X_SYSCLK_SRC_HSE
	help
	  Enable this option to bypass external high-speed clock (HSE).

config CLOCK_STM32L4X_PLL_DIVISOR
	int "PLL divisor"
	depends on CLOCK_CONTROL_STM32L4X && CLOCK_STM32L4X_SYSCLK_SRC_PLL
	default 1
	range 1 8
	help
	  PLL divisor, allowed values: 1-8. With this ensure that the PLL
	  VCO input frequency ranges from 4 to 16MHz.

config CLOCK_STM32L4X_PLL_MULTIPLIER
	int "PLL multiplier"
	depends on CLOCK_CONTROL_STM32L4X && CLOCK_STM32L4X_SYSCLK_SRC_PLL
	default 20
	range 8 86
	help
	  PLL multiplier, allowed values: 2-16. PLL output must not
	  exceed 344MHz.

config CLOCK_STM32L4X_PLL_P_DIVISOR
	int "PLL P Divisor"
	depends on CLOCK_CONTROL_STM32L4X
	default 7
	range 0 17
	help
	  PLL P Output divisor, allowed values: 0, 7, 17.

config CLOCK_STM32L4X_PLL_Q_DIVISOR
	int "PLL Q Divisor"
	depends on CLOCK_CONTROL_STM32L4X
	default 2
	range 0 8
	help
	  PLL Q Output divisor, allowed values: 0, 2, 4, 6, 8.

config CLOCK_STM32L4X_PLL_R_DIVISOR
	int "PLL R Divisor"
	depends on CLOCK_CONTROL_STM32L4X
	default 4
	range 0 8
	help
	  PLL R Output divisor, allowed values: 0, 2, 4, 6, 8.

config CLOCK_STM32L4X_AHB_PRESCALER
	int "AHB prescaler"
	depends on CLOCK_CONTROL_STM32L4X
	default 0
	range 0 512
	help
	  AHB prescaler, allowed values: 0, 2, 4, 8, 16, 64, 128,
	  256, 512.

config CLOCK_STM32L4X_APB1_PRESCALER
	int "APB1 prescaler"
	depends on CLOCK_CONTROL_STM32L4X
	default 0
	range 0 16
	help
	  APB1 Low speed clock (PCLK1) prescaler, allowed values:
	  0, 2, 4, 8, 16

config CLOCK_STM32L4X_APB2_PRESCALER
	int "APB2 prescaler"
	depends on CLOCK_CONTROL_STM32L4X
	default 0
	range 0 16
	help
	  APB2 High speed clock (PCLK2) prescaler, allowed values:
	  0, 2, 4, 8, 16

endif

