# Kconfig - Clock controller driver configuration options
#
# Copyright (c) 2016 Nordic Semiconductor ASA
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

menuconfig CLOCK_CONTROL_NRF5
	bool
	prompt "NRF5 Clock controller support"
	depends on CLOCK_CONTROL && SOC_FAMILY_NRF5
	default n
	help
	  Enable support for the Nordic Semiconductor nRF5x series SoC clock
	  driver.

config CLOCK_CONTROL_NRF5_IRQ_PRIORITY
	int
	prompt "Power Clock Interrupt Priority"
	depends on CLOCK_CONTROL_NRF5
	range 0 7
	default 1
	help
	  The interrupt priority for Power Clock interrupt.

config CLOCK_CONTROL_NRF5_M16SRC_DRV_NAME
	string
	prompt "NRF5 16MHz clock device name"
	depends on CLOCK_CONTROL_NRF5
	default "clk_m16src"

config CLOCK_CONTROL_NRF5_K32SRC_DRV_NAME
	string
	prompt "NRF5 32KHz clock device name"
	depends on CLOCK_CONTROL_NRF5
	default "clk_k32src"

choice
	prompt "32KHz clock source"
	default CLOCK_CONTROL_NRF5_K32SRC_XTAL
	depends on CLOCK_CONTROL_NRF5

config CLOCK_CONTROL_NRF5_K32SRC_RC
	bool
	prompt "RC Oscillator"

config CLOCK_CONTROL_NRF5_K32SRC_XTAL
	bool
	prompt "Crystal Oscillator"

endchoice

choice
	prompt "32KHz clock accuracy"
	default CLOCK_CONTROL_NRF5_K32SRC_20PPM
	depends on CLOCK_CONTROL_NRF5

config CLOCK_CONTROL_NRF5_K32SRC_500PPM
	bool
	prompt "251 ppm to 500 ppm"

config CLOCK_CONTROL_NRF5_K32SRC_250PPM
	bool
	prompt "151 ppm to 250 ppm"

config CLOCK_CONTROL_NRF5_K32SRC_150PPM
	bool
	prompt "101 ppm to 150 ppm"

config CLOCK_CONTROL_NRF5_K32SRC_100PPM
	bool
	prompt "76 ppm to 100 ppm"

config CLOCK_CONTROL_NRF5_K32SRC_75PPM
	bool
	prompt "51 ppm to 75 ppm"

config CLOCK_CONTROL_NRF5_K32SRC_50PPM
	bool
	prompt "31 ppm to 50 ppm"

config CLOCK_CONTROL_NRF5_K32SRC_30PPM
	bool
	prompt "21 ppm to 30 ppm"

config CLOCK_CONTROL_NRF5_K32SRC_20PPM
	bool
	prompt "0 ppm to 20 ppm"

endchoice
