#
# RTC class/drivers configuration
#

menu "Real Time Clock"
	depends on !S390

config RTC_LIB
	tristate

config RTC_CLASS
	tristate "RTC class"
	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 or 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 and resume"
	depends on RTC_CLASS = y
	default y
	help
	  If you say yes here, the system time (wall clock) will be set using
	  the value read from a specified RTC device. This is useful to avoid
	  unnecessary fsck runs at boot time, and to network better.

config RTC_HCTOSYS_DEVICE
	string "RTC used to set the system time"
	depends on RTC_HCTOSYS = y
	default "rtc0"
	help
	  The RTC device that will be used to (re)initialize the system
	  clock, usually rtc0.  Initialization is done when the system
	  starts up, and when it resumes from a low power state.

	  The driver for this RTC device must be loaded before late_initcall
	  functions run, so it must usually be statically linked.

	  This clock should be battery-backed, so that it reads the correct
	  time when the system boots from a power-off state.  Otherwise, your
	  system will need an external clock source (like an NTP server).

	  If the clock you specify here is not battery backed, it may still
	  be useful to reinitialize system time when resuming from system
	  sleep states.  Do not specify an RTC here unless it stays powered
	  during all this system's supported sleep states.

config RTC_DEBUG
	bool "RTC debug support"
	depends on RTC_CLASS = y
	help
	  Say yes here to enable debugging support in the RTC framework
	  and individual RTC drivers.

comment "RTC interfaces"
	depends on RTC_CLASS

config RTC_INTF_SYSFS
	boolean "/sys/class/rtc/rtcN (sysfs)"
	depends on RTC_CLASS && SYSFS
	default RTC_CLASS
	help
	  Say yes here if you want to use your RTCs using sysfs interfaces,
	  /sys/class/rtc/rtc0 through /sys/.../rtcN.

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

config RTC_INTF_PROC
	boolean "/proc/driver/rtc (procfs for rtc0)"
	depends on RTC_CLASS && PROC_FS
	default RTC_CLASS
	help
	  Say yes here if you want to use your first RTC through the proc
	  interface, /proc/driver/rtc.  Other RTCs will not be available
	  through that API.

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

config RTC_INTF_DEV
	boolean "/dev/rtcN (character devices)"
	depends on RTC_CLASS
	default RTC_CLASS
	help
	  Say yes here if you want to use your RTCs using the /dev
	  interfaces, which "udev" sets up as /dev/rtc0 through
	  /dev/rtcN.  You may want to set up a symbolic link so one
	  of these can be accessed as /dev/rtc, which is a name
	  expected by "hwclock" and some other programs.

	  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 underlying rtc chip
	  driver does not expose RTC_UIE ioctls.  Those requests generate
	  once-per-second update interrupts, used for synchronization.

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.

comment "I2C RTC drivers"
	depends on RTC_CLASS && I2C

config RTC_DRV_DS1307
	tristate "Dallas/Maxim DS1307/37/38/39/40, ST M41T00"
	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_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_MAX6900
	tristate "Maxim 6900"
	depends on RTC_CLASS && I2C
	help
	  If you say yes here you will get support for the
	  Maxim MAX6900 I2C RTC chip.

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

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

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

config RTC_DRV_ISL1208
	tristate "Intersil 1208"
	depends on RTC_CLASS && I2C
	help
	  If you say yes here you get support for the
	  Intersil 1208 RTC chip.

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

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_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 found on Acorn RiscPCs. This driver supports the
	  platform specific method of retrieving the current year from
	  the RTC's SRAM. It will work on other platforms with the same
	  chip, but the year will probably have to be tweaked.

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

config RTC_DRV_M41T80
	tristate "ST M41T80 series RTC"
	depends on RTC_CLASS && I2C
	help
	  If you say Y here you will get support for the
	  ST M41T80 RTC chips series. Currently following chips are
	  supported: M41T80, M41T81, M41T82, M41T83, M41ST84, M41ST85
	  and M41ST87.

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

config RTC_DRV_M41T80_WDT
	bool "ST M41T80 series RTC watchdog timer"
	depends on RTC_DRV_M41T80
	help
	  If you say Y here you will get support for the
	  watchdog timer in ST M41T80 RTC chips series.

config RTC_DRV_TWL92330
	boolean "TI TWL92330/Menelaus"
	depends on RTC_CLASS && I2C && MENELAUS
	help
	  If you say yes here you get support for the RTC on the
	  TWL92330 "Menelaus" power mangement chip, used with OMAP2
	  platforms.  The support is integrated with the rest of
	  the Menelaus driver; it's not separate module.

comment "SPI RTC drivers"
	depends on RTC_CLASS && SPI_MASTER

config RTC_DRV_RS5C348
	tristate "Ricoh RS5C348A/B"
	depends on RTC_CLASS && SPI_MASTER
	help
	  If you say yes here you get support for the
	  Ricoh RS5C348A and RS5C348B RTC chips.

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

config RTC_DRV_MAX6902
	tristate "Maxim 6902"
	depends on RTC_CLASS && SPI_MASTER
	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.

comment "Platform RTC drivers"
	depends on RTC_CLASS

# this 'CMOS' RTC driver is arch dependent because <asm-generic/rtc.h>
# requires <asm/mc146818rtc.h> defining CMOS_READ/CMOS_WRITE, and a
# global rtc_lock ... it's not yet just another platform_device.

config RTC_DRV_CMOS
	tristate "PC-style 'CMOS'"
	depends on RTC_CLASS && (X86 || ALPHA || ARM26 || ARM \
		|| M32R || ATARI || PPC || MIPS)
	help
	  Say "yes" here to get direct support for the real time clock
	  found in every PC or ACPI-based system, and some other boards.
	  Specifically the original MC146818, compatibles like those in
	  PC south bridges, the DS12887 or M48T86, some multifunction
	  or LPC bus chips, and so on.

	  Your system will need to define the platform device used by
	  this driver, otherwise it won't be accessible.  This means
	  you can safely enable this driver if you don't know whether
	  or not your board has this kind of hardware.

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

config RTC_DRV_DS1216
	tristate "Dallas DS1216"
	depends on RTC_CLASS && SNI_RM
	help
	  If you say yes here you get support for the Dallas DS1216 RTC chips.

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_STK17TA8
	tristate "Simtek STK17TA8"
	depends on RTC_CLASS
	help
	  If you say yes here you get support for the
	  Simtek STK17TA8 timekeeping chip.

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

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

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

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_M48T59
	tristate "ST M48T59"
	depends on RTC_CLASS
	help
	  If you say Y here you will get support for the
	  ST M48T59 RTC chip.

	  This driver can also be built as a module, if so, the module
	  will be called "rtc-m48t59".

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.

comment "on-CPU RTC drivers"
	depends on RTC_CLASS

config RTC_DRV_OMAP
	tristate "TI OMAP1"
	depends on RTC_CLASS && ( \
		ARCH_OMAP15XX || ARCH_OMAP16XX || ARCH_OMAP730 )
	help
	  Say "yes" here to support the real time clock on TI OMAP1 chips.
	  This driver can also be built as a module called rtc-omap.

config RTC_DRV_S3C
	tristate "Samsung S3C series SoC RTC"
	depends on RTC_CLASS && ARCH_S3C2410
	help
	  RTC (Realtime Clock) driver for the clock inbuilt into the
	  Samsung S3C24XX series of SoCs. This can provide periodic
	  interrupt rates from 1Hz to 64Hz for user programs, and
	  wakeup from Alarm.

	  The driver currently supports the common features on all the
	  S3C24XX range, such as the S3C2410, S3C2412, S3C2413, S3C2440
	  and S3C2442.

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

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_SH
	tristate "SuperH On-Chip RTC"
	depends on RTC_CLASS && SUPERH && (CPU_SH3 || CPU_SH4)
	help
	  Say Y here to enable support for the on-chip RTC found in
	  most SuperH processors.

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

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 RTC 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_AT32AP700X
	tristate "AT32AP700X series RTC"
	depends on RTC_CLASS && PLATFORM_AT32AP
	help
	  Driver for the internal RTC (Realtime Clock) on Atmel AVR32
	  AT32AP700x family processors.

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

config RTC_DRV_BFIN
	tristate "Blackfin On-Chip RTC"
	depends on RTC_CLASS && BFIN
	help
	  If you say yes here you will get support for the
	  Blackfin On-Chip Real Time Clock.

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

config RTC_DRV_RS5C313
	tristate "Ricoh RS5C313"
	depends on RTC_CLASS && SH_LANDISK
	help
	  If you say yes here you get support for the Ricoh RS5C313 RTC chips.

endmenu
