# Kconfig - Clock controller driver configuration options

#
# Copyright (c) 2015-2016 Intel Corporation
#
# 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.
#

if SOC_QUARK_SE_C1000

menuconfig CLOCK_CONTROL_QUARK_SE
	bool
	prompt "Quark SE Clock controller support"
	default n
	help
	 Enable support for the Quark SE clock driver.

config CLOCK_CONTROL_QUARK_SE_PERIPHERAL
	bool
	prompt "Quark SE peripheral clock support"
	depends on CLOCK_CONTROL_QUARK_SE
	default n
	help
	 Enable support for Quark SE peripheral clock which controls the
	 clock of I2C, SPI, GPIO controllers and more.

config CLOCK_CONTROL_QUARK_SE_PERIPHERAL_DRV_NAME
	string
	prompt "Quark SE peripheral clock device name"
	depends on CLOCK_CONTROL_QUARK_SE_PERIPHERAL
	default "clk_peripheral"

config CLOCK_CONTROL_QUARK_SE_EXTERNAL
	bool
	prompt "Quark SE external clock support"
	depends on CLOCK_CONTROL_QUARK_SE
	default n
	help
	 Enable support for Quark SE external sub-system clock.

config CLOCK_CONTROL_QUARK_SE_EXTERNAL_DRV_NAME
	string
	prompt "Quark SE external clock device name"
	depends on CLOCK_CONTROL_QUARK_SE_EXTERNAL
	default "clk_external"

config CLOCK_CONTROL_QUARK_SE_SENSOR
	bool
	prompt "Quark SE sensor clock support"
	depends on CLOCK_CONTROL_QUARK_SE
	default n
	help
	 Enable support for Quark SE sensor sub-system clock.

config CLOCK_CONTROL_QUARK_SE_SENSOR_DRV_NAME
	string
	prompt "Quark SE sensor clock device name"
	depends on CLOCK_CONTROL_QUARK_SE_SENSOR
	default "clk_sensor"

endif # SOC_QUARK_SE_C1000
