\#
# RTC class/drivers configuration
#

menu "Real Time Clock"

config RTC_LIB
	tristate

config RTC_CLASS
	tristate "RTC class"
	depends on EXPERIMENTAL
	default n
	select RTC_LIB
	help
	  Generic RTC class support. If you say yes here, you will
 	  be allowed to plug one or more RTCs to your system. You will
	  probably want to enable one of more of the interfaces below.

	  This driver can also be built as a module. If so, the module
	  will be called rtc-class.

config RTC_HCTOSYS
	bool "Set system time from RTC on startup"
	depends on RTC_CLASS = y
	default y
	help
	  If you say yes here, the system time will be set using
	  the value read from the specified RTC device. This is useful
	  in order to avoid unnecessary fschk runs.

config RTC_HCTOSYS_DEVICE
	string "The RTC to read the time from"
	depends on RTC_HCTOSYS = y
	default "rtc0"
	help
	  The RTC device that will be used as the source for
	  the system time, usually rtc0.

comment "RTC interfaces"
	depends on RTC_CLASS

config RTC_INTF_SYSFS
	tristate "sysfs"
	depends on RTC_CLASS && SYSFS
	default RTC_CLASS
	help
	  Say yes here if you want to use your RTC using the sysfs
	  interface, /sys/class/rtc/rtcX .

	  This driver can also be built as a module. If so, the module
	  will be called rtc-sysfs.

config RTC_INTF_PROC
	tristate "proc"
	depends on RTC_CLASS && PROC_FS
	default RTC_CLASS
	help
	  Say yes here if you want to use your RTC using the proc
	  interface, /proc/driver/rtc .

	  This driver can also be built as a module. If so, the module
	  will be called rtc-proc.

config RTC_INTF_DEV
	tristate "dev"
	depends on RTC_CLASS
	default RTC_CLASS
	help
	  Say yes here if you want to use your RTC using the dev
	  interface, /dev/rtc .

	  This driver can also be built as a module. If so, the module
	  will be called rtc-dev.

config RTC_INTF_DEV_UIE_EMUL
	bool "RTC UIE emulation on dev interface"
	depends on RTC_INTF_DEV
	help
	  Provides an emulation for RTC_UIE if the underlaying rtc chip
	  driver did not provide RTC_UIE ioctls.

comment "RTC drivers"
	depends on RTC_CLASS

config RTC_DRV_X1205
	tristate "Xicor/Intersil X1205"
	depends on RTC_CLASS && I2C
	help
	  If you say yes here you get support for the
	  Xicor/Intersil X1205 RTC chip.

	  This driver can also be built as a module. If so, the module
	  will be called rtc-x1205.

config RTC_DRV_DS1307
	tristate "Dallas/Maxim DS1307 and similar I2C RTC chips"
	depends on RTC_CLASS && I2C
	help
	  If you say yes here you get support for various compatible RTC
	  chips (often with battery backup) connected with I2C.  This driver
	  should handle DS1307, DS1337, DS1338, DS1339, DS1340, ST M41T00,
	  and probably other chips.  In some cases the RTC must already
	  have been initialized (by manufacturing or a bootloader).

	  The first seven registers on these chips hold an RTC, and other
	  registers may add features such as NVRAM, a trickle charger for
	  the RTC/NVRAM backup power, and alarms.  This driver may not
	  expose all those available chip features.

	  This driver can also be built as a module. If so, the module
	  will be called rtc-ds1307.

config RTC_DRV_DS1553
	tristate "Dallas DS1553"
	depends on RTC_CLASS
	help
	  If you say yes here you get support for the
	  Dallas DS1553 timekeeping chip.

	  This driver can also be built as a module. If so, the module
	  will be called rtc-ds1553.

config RTC_DRV_DS1672
	tristate "Dallas/Maxim DS1672"
	depends on RTC_CLASS && I2C
	help
	  If you say yes here you get support for the
	  Dallas/Maxim DS1672 timekeeping chip.

	  This driver can also be built as a module. If so, the module
	  will be called rtc-ds1672.

config RTC_DRV_DS1742
	tristate "Dallas DS1742"
	depends on RTC_CLASS
	help
	  If you say yes here you get support for the
	  Dallas DS1742 timekeeping chip.

	  This driver can also be built as a module. If so, the module
	  will be called rtc-ds1742.

config RTC_DRV_PCF8563
	tristate "Philips PCF8563/Epson RTC8564"
	depends on RTC_CLASS && I2C
	help
	  If you say yes here you get support for the
	  Philips PCF8563 RTC chip. The Epson RTC8564
	  should work as well.

	  This driver can also be built as a module. If so, the module
	  will be called rtc-pcf8563.

config RTC_DRV_PCF8583
	tristate "Philips PCF8583"
	depends on RTC_CLASS && I2C
	help
	  If you say yes here you get support for the
	  Philips PCF8583 RTC chip.

	  This driver can also be built as a module. If so, the module
	  will be called rtc-pcf8583.

config RTC_DRV_RS5C372
	tristate "Ricoh RS5C372A/B"
	depends on RTC_CLASS && I2C
	help
	  If you say yes here you get support for the
	  Ricoh RS5C372A and RS5C372B RTC chips.

	  This driver can also be built as a module. If so, the module
	  will be called rtc-rs5c372.

config RTC_DRV_M48T86
	tristate "ST M48T86/Dallas DS12887"
	depends on RTC_CLASS
	help
	  If you say Y here you will get support for the
	  ST M48T86 and Dallas DS12887 RTC chips.

	  This driver can also be built as a module. If so, the module
	  will be called rtc-m48t86.

config RTC_DRV_EP93XX
	tristate "Cirrus Logic EP93XX"
	depends on RTC_CLASS && ARCH_EP93XX
	help
	  If you say yes here you get support for the
	  RTC embedded in the Cirrus Logic EP93XX processors.

	  This driver can also be built as a module. If so, the module
	  will be called rtc-ep93xx.

config RTC_DRV_SA1100
	tristate "SA11x0/PXA2xx"
	depends on RTC_CLASS && (ARCH_SA1100 || ARCH_PXA)
	help
	  If you say Y here you will get access to the real time clock
	  built into your SA11x0 or PXA2xx CPU.

	  To compile this driver as a module, choose M here: the
	  module will be called rtc-sa1100.

config RTC_DRV_VR41XX
	tristate "NEC VR41XX"
	depends on RTC_CLASS && CPU_VR41XX
	help
	  If you say Y here you will get access to the real time clock
	  built into your NEC VR41XX CPU.

	  To compile this driver as a module, choose M here: the
	  module will be called rtc-vr41xx.

config RTC_DRV_PL031
	tristate "ARM AMBA PL031 RTC"
	depends on RTC_CLASS && ARM_AMBA
	help
	  If you say Y here you will get access to ARM AMBA
	  PrimeCell PL031 UART found on certain ARM SOCs.

	  To compile this driver as a module, choose M here: the
	  module will be called rtc-pl031.

config RTC_DRV_AT91
	tristate "AT91RM9200"
	depends on RTC_CLASS && ARCH_AT91RM9200
	help
	  Driver for the Atmel AT91RM9200's internal RTC (Realtime Clock).

config RTC_DRV_TEST
	tristate "Test driver/device"
	depends on RTC_CLASS
	help
	  If you say yes here you get support for the
	  RTC test driver. It's a software RTC which can be
	  used to test the RTC subsystem APIs. It gets
	  the time from the system clock.
	  You want this driver only if you are doing development
	  on the RTC subsystem. Please read the source code
	  for further details.

	  This driver can also be built as a module. If so, the module
	  will be called rtc-test.

config RTC_DRV_MAX6902
	tristate "Maxim 6902"
	depends on RTC_CLASS && SPI
	help
	  If you say yes here you will get support for the
	  Maxim MAX6902 spi RTC chip.

	  This driver can also be built as a module. If so, the module
	  will be called rtc-max6902.

config RTC_DRV_V3020
	tristate "EM Microelectronic V3020"
	depends on RTC_CLASS
	help
	  If you say yes here you will get support for the
	  EM Microelectronic v3020 RTC chip.

	  This driver can also be built as a module. If so, the module
	  will be called rtc-v3020.

endmenu
