# Kconfig - RTC configuration options
#
#
# Copyright (c) 2015 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.
#

#
# Real-Time Clock (RTC) options
#
menuconfig RTC
	bool "Real-Time Clock"
	default n
	help
	Enable options for Real-Time Clock drivers.

if RTC

config RTC_IRQ
	int "Interrupt number"
	help
	RTC interrupt number

config RTC_IRQ_PRI
	int "Interrupt priority"
	help
	RTC interrupt priority.

config RTC_DRV_NAME
	string "Driver instance name"
	default "RTC_0"
	depends on RTC
	help
	RTC driver instance name

config RTC_QMSI
	depends on QMSI_DRIVERS
	bool "QMSI RTC Driver"
	default n
	help
	Build QMSI RTC driver.

config RTC_DW
	depends on !RTC_QMSI
	bool "Build Designware RTC Driver"
	default n
	help
	Designware RTC driver.

config RTC_DW_CLOCK_GATE
	bool "Enable clock gating"
	depends on RTC_DW
	select CLOCK_CONTROL
	default n
	help
	Enable clock gating on RTC DesignWare controller

config RTC_DW_CLOCK_GATE_DRV_NAME
	string "Clock gating driver name"
	depends on RTC_DW_CLOCK_GATE
	default ""

config RTC_DW_CLOCK_GATE_SUBSYS
	int "Clock controller's subsystem"
	depends on RTC_DW_CLOCK_GATE
	default 0

config RTC_DW_BASE_ADDR
	hex "Base address"
	depends on RTC_DW
	help
	Base address to access RTC DesignWare controller registers

endif # RTC
