# Kconfig - STM32F1X Connectivity Line MCU clock control driver config
#
# Copyright (c) 2016 RnDity Sp. z o.o.
#
# SPDX-License-Identifier: Apache-2.0
#

if SOC_STM32F10X_CONNECTIVITY_LINE_DEVICE

menuconfig CLOCK_CONTROL_STM32F10X_CONN_LINE
	bool
	prompt "STM32F107x Reset & Clock Control"
	default y if SOC_STM32F10X_CONNECTIVITY_LINE_DEVICE
	help
	 Enable driver for Reset & Clock Control subsystem found
	 in STM32F105/STM32F107 family of MCUs

config CLOCK_CONTROL_STM32F10X_CONN_LINE_DEVICE_INIT_PRIORITY
	int "Clock Control Device Priority"
	default 1
	depends on CLOCK_CONTROL_STM32F10X_CONN_LINE
	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 "STM32F10x Connectivity Line System Clock Source"
depends on CLOCK_CONTROL_STM32F10X_CONN_LINE

config CLOCK_STM32F10X_CONN_LINE_SYSCLK_SRC_HSI
	bool "HSI"
	help
	 Use HSI as source of SYSCLK

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

config CLOCK_STM32F10X_CONN_LINE_SYSCLK_SRC_PLLCLK
	bool "PLLCLK"
	help
	 Use PLLCLK as source of SYSCLK

endchoice

choice
prompt "STM32F10x Connectivity Line PLL Clock Source"
depends on CLOCK_CONTROL_STM32F10X_CONN_LINE && CLOCK_STM32F10X_CONN_LINE_SYSCLK_SRC_PLLCLK

config CLOCK_STM32F10X_CONN_LINE_PLL_SRC_HSI
	bool "HSI"
	help
	 Use HSI divided by 2 as source of PLL

config CLOCK_STM32F10X_CONN_LINE_PLL_SRC_PREDIV1
	bool "PREDIV1"
	help
	 Use clock from PREDIV1 as source of PLL

endchoice

choice
prompt "STM32F10x Connectivity Line PREDIV1 entry clock source"
depends on CLOCK_CONTROL_STM32F10X_CONN_LINE && CLOCK_STM32F10X_CONN_LINE_PLL_SRC_PREDIV1

config CLOCK_STM32F10X_CONN_LINE_PREDIV1_SRC_HSE
	bool "HSE"
	help
	 Use HSE as source of PREDIV1

config CLOCK_STM32F10X_CONN_LINE_PREDIV1_SRC_PLL2CLK
	bool "PLL2CLK"
	help
	 Use clock from PLL2CLK as source of PLL

endchoice

config CLOCK_STM32F10X_CONN_LINE_HSE_BYPASS
	bool "HSE bypass"
	depends on CLOCK_CONTROL_STM32F10X_CONN_LINE && (CLOCK_STM32F10X_CONN_LINE_SYSCLK_SRC_HSE || CLOCK_STM32F10X_CONN_LINE_PREDIV1_SRC_HSE)
	help
	 Enable this option to bypass external high-speed clock (HSE).

config CLOCK_STM32F10X_CONN_LINE_PREDIV1
	int "PREDIV1 Prescaler"
	depends on CLOCK_CONTROL_STM32F10X_CONN_LINE && CLOCK_STM32F10X_CONN_LINE_PLL_SRC_PREDIV1
	default 0
	range 0 16
	help
	 PREDIV1 is PREDIV1SCR clock signal prescaler, allowed values: 0 - 16.

config CLOCK_STM32F10X_CONN_LINE_PLL_MULTIPLIER
	int "PLL multiplier"
	depends on CLOCK_CONTROL_STM32F10X_CONN_LINE && CLOCK_STM32F10X_CONN_LINE_SYSCLK_SRC_PLLCLK
	default 9
	range 4 13
	help
	 PLL multiplier, allowed values: 4 - 9 and 13 (in fact the multiplication factor is 6.5).
	 Values in range 10-12 are reserved. PLL output must not exceed 72MHz.

config CLOCK_STM32F10X_CONN_LINE_PLL2_MULTIPLIER
	int "PLL2 multiplier"
	depends on CLOCK_CONTROL_STM32F10X_CONN_LINE && CLOCK_STM32F10X_CONN_LINE_PREDIV1_SRC_PLL2CLK
	default 8
	range 8 20
	help
	 PLL2 multiplier, allowed values: 8 - 20. PLL2 output must not exceed 72MHz.

config CLOCK_STM32F10X_CONN_LINE_PREDIV2
	int "PREDIV2 Prescaler"
	depends on CLOCK_CONTROL_STM32F10X_CONN_LINE && CLOCK_STM32F10X_CONN_LINE_PREDIV1_SRC_PLL2CLK
	default 0
	range 0 16
	help
	 PREDIV2 is HSE prescaler, allowed values: 0 - 16.

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

config CLOCK_STM32F10X_CONN_LINE_APB1_PRESCALER
	int "APB1 prescaler"
	depends on CLOCK_CONTROL_STM32F10X_CONN_LINE
	default 0
	range 0 16
	help
	 APB1 Low speed clock (PCLK1) prescaler, allowed values:
	 0, 2, 4, 8, 16. The APB1 clock must not exceed 36MHz.

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

endif
