#
# RTC class/drivers configuration
#

config RTC_LIB
	bool

config RTC_MC146818_LIB
	bool
	select RTC_LIB

menuconfig RTC_CLASS
	bool "Real Time Clock"
	default n
	depends on !S390 && !UML
	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.

if RTC_CLASS

config RTC_HCTOSYS
	bool "Set system time from RTC on startup and resume"
	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
	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. This
	  device should record time in UTC, since the kernel won't do
	  timezone correction.

	  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_SYSTOHC
	bool "Set the RTC time based on NTP synchronization"
	default y
	help
	  If you say yes here, the system time (wall clock) will be stored
	  in the RTC specified by RTC_HCTOSYS_DEVICE approximately every 11
	  minutes if userspace reports synchronized NTP status.

config RTC_SYSTOHC_DEVICE
	string "RTC used to synchronize NTP adjustment"
	depends on RTC_SYSTOHC
	default RTC_HCTOSYS_DEVICE if RTC_HCTOSYS
	default "rtc0"
	help
	  The RTC device used for NTP synchronization. The main difference
	  between RTC_HCTOSYS_DEVICE and RTC_SYSTOHC_DEVICE is that this
	  one can sleep when setting time, because it runs in the workqueue
	  context.

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

config RTC_NVMEM
	bool "RTC non volatile storage support"
	select NVMEM
	default RTC_CLASS
	help
	  Say yes here to add support for the non volatile (often battery
	  backed) storage present on RTCs.

comment "RTC interfaces"

config RTC_INTF_SYSFS
	bool "/sys/class/rtc/rtcN (sysfs)"
	depends on 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.

	  If unsure, say Y.

config RTC_INTF_PROC
	bool "/proc/driver/rtc (procfs for rtcN)"
	depends on PROC_FS
	default RTC_CLASS
	help
	  Say yes here if you want to use your system clock RTC through
	  the proc interface, /proc/driver/rtc.
	  Other RTCs will not be available through that API.
	  If there is no RTC for the system clock, then the first RTC(rtc0)
	  is used by default.

	  If unsure, say Y.

config RTC_INTF_DEV
	bool "/dev/rtcN (character devices)"
	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. Recent
	  versions of "udev" are known to set up the symlink for you.

	  If unsure, say Y.

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.

	  The emulation code will read the time from the hardware
	  clock several times per second, please enable this option
	  only if you know that you really need it.

config RTC_DRV_TEST
	tristate "Test driver/device"
	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"

if I2C

config RTC_DRV_88PM860X
	tristate "Marvell 88PM860x"
	depends on MFD_88PM860X
	help
	  If you say yes here you get support for RTC function in Marvell
	  88PM860x chips.

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

config RTC_DRV_88PM80X
	tristate "Marvell 88PM80x"
	depends on MFD_88PM800
	help
	  If you say yes here you get support for RTC function in Marvell
	  88PM80x chips.

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

config RTC_DRV_ABB5ZES3
	select REGMAP_I2C
	tristate "Abracon AB-RTCMC-32.768kHz-B5ZE-S3"
	help
	  If you say yes here you get support for the Abracon
	  AB-RTCMC-32.768kHz-B5ZE-S3 I2C RTC chip.

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

config RTC_DRV_ABX80X
	tristate "Abracon ABx80x"
	help
	  If you say yes here you get support for Abracon AB080X and AB180X
	  families of ultra-low-power  battery- and capacitor-backed real-time
	  clock chips.

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

config RTC_DRV_AC100
	tristate "X-Powers AC100"
	depends on MFD_AC100
	help
	  If you say yes here you get support for the real-time clock found
	  in X-Powers AC100 family peripheral ICs.

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

config RTC_DRV_BRCMSTB
	tristate "Broadcom STB wake-timer"
	depends on ARCH_BRCMSTB || BMIPS_GENERIC || COMPILE_TEST
	default ARCH_BRCMSTB || BMIPS_GENERIC
	help
	  If you say yes here you get support for the wake-timer found on
	  Broadcom STB SoCs (BCM7xxx).

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

config RTC_DRV_AS3722
	tristate "ams AS3722 RTC driver"
	depends on MFD_AS3722
	help
	  If you say yes here you get support for the RTC of ams AS3722 PMIC
	  chips.

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

config RTC_DRV_DS1307
	tristate "Dallas/Maxim DS1307/37/38/39/40/41, ST M41T00, EPSON RX-8025, ISL12057"
	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, DS1341,
	  ST M41T00, EPSON RX-8025, Intersil ISL12057 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. NVRAM is visible in
	  sysfs, but other chip features may not be available.

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

config RTC_DRV_DS1307_HWMON
	bool "HWMON support for rtc-ds1307"
	depends on RTC_DRV_DS1307 && HWMON
	depends on !(RTC_DRV_DS1307=y && HWMON=m)
	default y
	help
	  Say Y here if you want to expose temperature sensor data on
	  rtc-ds1307 (only DS3231)

config RTC_DRV_DS1307_CENTURY
	bool "Century bit support for rtc-ds1307"
	depends on RTC_DRV_DS1307
	default n
	help
	  The DS1307 driver suffered from a bug where it was enabling the
	  century bit inconditionnally but never used it when reading the time.
	  It made the driver unable to support dates beyond 2099.
	  Setting this option will add proper support for the century bit but if
	  the time was previously set using a kernel predating this option,
	  reading the date will return a date in the next century.
	  To solve that, you could boot a kernel without this option set, set
	  the RTC date and then boot a kernel with this option set.

config RTC_DRV_DS1374
	tristate "Dallas/Maxim DS1374"
	help
	  If you say yes here you get support for Dallas Semiconductor
	  DS1374 real-time clock chips. If an interrupt is associated
	  with the device, the alarm functionality is supported.

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

config RTC_DRV_DS1374_WDT
	bool "Dallas/Maxim DS1374 watchdog timer"
	depends on RTC_DRV_DS1374
	help
	  If you say Y here you will get support for the
	  watchdog timer in the Dallas Semiconductor DS1374
	  real-time clock chips.

config RTC_DRV_DS1672
	tristate "Dallas/Maxim DS1672"
	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_HYM8563
	tristate "Haoyu Microelectronics HYM8563"
	depends on OF
	help
	  Say Y to enable support for the HYM8563 I2C RTC chip. Apart
	  from the usual rtc functions it provides a clock output of
	  up to 32kHz.

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

config RTC_DRV_LP8788
	tristate "TI LP8788 RTC driver"
	depends on MFD_LP8788
	help
	  Say Y to enable support for the LP8788 RTC/ALARM driver.

config RTC_DRV_MAX6900
	tristate "Maxim MAX6900"
	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_MAX8907
	tristate "Maxim MAX8907"
	depends on MFD_MAX8907 || COMPILE_TEST
	help
	  If you say yes here you will get support for the
	  RTC of Maxim MAX8907 PMIC.

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

config RTC_DRV_MAX8925
	tristate "Maxim MAX8925"
	depends on MFD_MAX8925
	help
	  If you say yes here you will get support for the
	  RTC of Maxim MAX8925 PMIC.

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

config RTC_DRV_MAX8998
	tristate "Maxim MAX8998"
	depends on MFD_MAX8998
	help
	  If you say yes here you will get support for the
	  RTC of Maxim MAX8998 PMIC.

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

config RTC_DRV_MAX8997
	tristate "Maxim MAX8997"
	depends on MFD_MAX8997
	help
	  If you say yes here you will get support for the
	  RTC of Maxim MAX8997 PMIC.

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

config RTC_DRV_MAX77686
	tristate "Maxim MAX77686"
	depends on MFD_MAX77686 || MFD_MAX77620 || COMPILE_TEST
	help
	  If you say yes here you will get support for the
	  RTC of Maxim MAX77686/MAX77620/MAX77802 PMIC.

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

config RTC_DRV_RK808
	tristate "Rockchip RK805/RK808/RK818 RTC"
	depends on MFD_RK808
	help
	  If you say yes here you will get support for the
	  RTC of RK805, RK808 and RK818 PMIC.

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

config RTC_DRV_RS5C372
	tristate "Ricoh R2025S/D, RS5C372A/B, RV5C386, RV5C387A"
	help
	  If you say yes here you get support for the
	  Ricoh R2025S/D, 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 ISL1208"
	help
	  If you say yes here you get support for the
	  Intersil ISL1208 RTC chip.

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

config RTC_DRV_ISL12022
	tristate "Intersil ISL12022"
	help
	  If you say yes here you get support for the
	  Intersil ISL12022 RTC chip.

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

config RTC_DRV_X1205
	tristate "Xicor/Intersil X1205"
	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_PCF8523
	tristate "NXP PCF8523"
	help
	  If you say yes here you get support for the NXP PCF8523 RTC
	  chips.

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

config RTC_DRV_PCF85063
	tristate "NXP PCF85063"
	help
	  If you say yes here you get support for the PCF85063 RTC chip

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

config RTC_DRV_PCF85363
	tristate "NXP PCF85363"
	depends on I2C
	select REGMAP_I2C
	help
	  If you say yes here you get support for the PCF85363 RTC chip.

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

	  The nvmem interface will be named pcf85363-#, where # is the
	  zero-based instance number.

config RTC_DRV_PCF8563
	tristate "Philips PCF8563/Epson RTC8564"
	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"
	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 M41T62/65/M41T80/81/82/83/84/85/87 and compatible"
	help
	  If you say Y here you will get support for the ST M41T60
	  and M41T80 RTC chips series. Currently, the following chips are
	  supported: M41T62, M41T65, M41T80, M41T81, M41T82, M41T83, M41ST84,
	  M41ST85, M41ST87, and MicroCrystal RV4162.

	  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 M41T65/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 the ST M41T60 and M41T80 RTC chips series.

config RTC_DRV_BQ32K
	tristate "TI BQ32000"
	help
	  If you say Y here you will get support for the TI
	  BQ32000 I2C RTC chip.

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

config RTC_DRV_DM355EVM
	tristate "TI DaVinci DM355 EVM RTC"
	depends on MFD_DM355EVM_MSP
	help
	  Supports the RTC firmware in the MSP430 on the DM355 EVM.

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

config RTC_DRV_TWL4030
	tristate "TI TWL4030/TWL5030/TWL6030/TPS659x0"
	depends on TWL4030_CORE
	depends on OF
	help
	  If you say yes here you get support for the RTC on the
	  TWL4030/TWL5030/TWL6030 family chips, used mostly with OMAP3 platforms.

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

config RTC_DRV_PALMAS
	tristate "TI Palmas RTC driver"
	depends on MFD_PALMAS
	help
	  If you say yes here you get support for the RTC of TI PALMA series PMIC
	  chips.

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

config RTC_DRV_TPS6586X
	tristate "TI TPS6586X RTC driver"
	depends on MFD_TPS6586X
	help
	  TI Power Management IC TPS6586X supports RTC functionality
	  along with alarm. This driver supports the RTC driver for
	  the TPS6586X RTC module.

config RTC_DRV_TPS65910
	tristate "TI TPS65910 RTC driver"
	depends on RTC_CLASS && MFD_TPS65910
	help
	  If you say yes here you get support for the RTC on the
	  TPS65910 chips.

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

config RTC_DRV_TPS80031
	tristate "TI TPS80031/TPS80032 RTC driver"
	depends on MFD_TPS80031
	help
	  TI Power Management IC TPS80031 supports RTC functionality
	  along with alarm. This driver supports the RTC driver for
	  the TPS80031 RTC module.

config RTC_DRV_RC5T583
	tristate "RICOH 5T583 RTC driver"
	depends on MFD_RC5T583
	help
	  If you say yes here you get support for the RTC on the
	  RICOH 5T583 chips.

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

config RTC_DRV_S35390A
	tristate "Seiko Instruments S-35390A"
	select BITREVERSE
	help
	  If you say yes here you will get support for the Seiko
	  Instruments S-35390A.

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

config RTC_DRV_FM3130
	tristate "Ramtron FM3130"
	help
	  If you say Y here you will get support for the
	  Ramtron FM3130 RTC chips.
	  Ramtron FM3130 is a chip with two separate devices inside,
	  RTC clock and FRAM. This driver provides only RTC functionality.

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

config RTC_DRV_RX8010
	tristate "Epson RX8010SJ"
	depends on I2C
	help
	  If you say yes here you get support for the Epson RX8010SJ RTC
	  chip.

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

config RTC_DRV_RX8581
	tristate "Epson RX-8581"
	help
	  If you say yes here you will get support for the Epson RX-8581.

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

config RTC_DRV_RX8025
	tristate "Epson RX-8025SA/NB"
	help
	  If you say yes here you get support for the Epson
	  RX-8025SA/NB RTC chips.

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

config RTC_DRV_EM3027
	tristate "EM Microelectronic EM3027"
	help
	  If you say yes here you get support for the EM
	  Microelectronic EM3027 RTC chips.

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

config RTC_DRV_RV8803
	tristate "Micro Crystal RV8803, Epson RX8900"
	help
	  If you say yes here you get support for the Micro Crystal RV8803 and
	  Epson RX8900 RTC chips.

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

config RTC_DRV_S5M
	tristate "Samsung S2M/S5M series"
	depends on MFD_SEC_CORE || COMPILE_TEST
	select REGMAP_IRQ
	help
	  If you say yes here you will get support for the
	  RTC of Samsung S2MPS14 and S5M PMIC series.

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

endif # I2C

comment "SPI RTC drivers"

if SPI_MASTER

config RTC_DRV_M41T93
	tristate "ST M41T93"
	help
	  If you say yes here you will get support for the
	  ST M41T93 SPI RTC chip.

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

config RTC_DRV_M41T94
	tristate "ST M41T94"
	help
	  If you say yes here you will get support for the
	  ST M41T94 SPI RTC chip.

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

config RTC_DRV_DS1302
	tristate "Dallas/Maxim DS1302"
	depends on SPI
	help
	  If you say yes here you get support for the Dallas DS1302 RTC chips.

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

config RTC_DRV_DS1305
	tristate "Dallas/Maxim DS1305/DS1306"
	help
	  Select this driver to get support for the Dallas/Maxim DS1305
	  and DS1306 real time clock chips. These support a trickle
	  charger, alarms, and NVRAM in addition to the clock.

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

config RTC_DRV_DS1343
	select REGMAP_SPI
	tristate "Dallas/Maxim DS1343/DS1344"
	help
	  If you say yes here you get support for the
	  Dallas/Maxim DS1343 and DS1344 real time clock chips.
	  Support for trickle charger, alarm is provided.

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

config RTC_DRV_DS1347
	select REGMAP_SPI
	tristate "Dallas/Maxim DS1347"
	help
	  If you say yes here you get support for the
	  Dallas/Maxim DS1347 chips.

	  This driver only supports the RTC feature, and not other chip
	  features such as alarms.

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

config RTC_DRV_DS1390
	tristate "Dallas/Maxim DS1390/93/94"
	help
	  If you say yes here you get support for the
	  Dallas/Maxim DS1390/93/94 chips.

	  This driver supports the RTC feature and trickle charging but not
	  other chip features such as alarms.

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

config RTC_DRV_MAX6916
	tristate "Maxim MAX6916"
	help
	  If you say yes here you will get support for the
	  Maxim MAX6916 SPI RTC chip.

	  This driver only supports the RTC feature, and not other chip
	  features such as alarms.

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

config RTC_DRV_R9701
	tristate "Epson RTC-9701JE"
	help
	  If you say yes here you will get support for the
	  Epson RTC-9701JE SPI RTC chip.

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

config RTC_DRV_RX4581
	tristate "Epson RX-4581"
	help
	  If you say yes here you will get support for the Epson RX-4581.

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

config RTC_DRV_RX6110
	tristate "Epson RX-6110"
	select REGMAP_SPI
	help
	  If you say yes here you will get support for the Epson RX-6610.

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

config RTC_DRV_RS5C348
	tristate "Ricoh RS5C348A/B"
	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 MAX6902"
	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_PCF2123
	tristate "NXP PCF2123"
	help
	  If you say yes here you get support for the NXP PCF2123
	  RTC chip.

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

config RTC_DRV_MCP795
	tristate "Microchip MCP795"
	help
	  If you say yes here you will get support for the Microchip MCP795.

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

endif # SPI_MASTER

#
# Helper to resolve issues with configs that have SPI enabled but I2C
# modular.  See SND_SOC_I2C_AND_SPI for more information
#
config RTC_I2C_AND_SPI
	tristate
	default m if I2C=m
	default y if I2C=y
	default y if SPI_MASTER=y
	select REGMAP_I2C if I2C
	select REGMAP_SPI if SPI_MASTER

comment "SPI and I2C RTC drivers"

config RTC_DRV_DS3232
	tristate "Dallas/Maxim DS3232/DS3234"
	depends on RTC_I2C_AND_SPI
	help
	  If you say yes here you get support for Dallas Semiconductor
	  DS3232 and DS3234 real-time clock chips. If an interrupt is associated
	  with the device, the alarm functionality is supported.

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

config RTC_DRV_DS3232_HWMON
	bool "HWMON support for Dallas/Maxim DS3232/DS3234"
	depends on RTC_DRV_DS3232 && HWMON && !(RTC_DRV_DS3232=y && HWMON=m)
	default y
	help
	  Say Y here if you want to expose temperature sensor data on
	  rtc-ds3232

config RTC_DRV_PCF2127
	tristate "NXP PCF2127"
	depends on RTC_I2C_AND_SPI
	help
	  If you say yes here you get support for the NXP PCF2127/29 RTC
	  chips.

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

config RTC_DRV_RV3029C2
	tristate "Micro Crystal RV3029/3049"
	depends on RTC_I2C_AND_SPI
	help
	  If you say yes here you get support for the Micro Crystal
	  RV3029 and RV3049 RTC chips.

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

config RTC_DRV_RV3029_HWMON
	bool "HWMON support for RV3029/3049"
	depends on RTC_DRV_RV3029C2 && HWMON
	depends on !(RTC_DRV_RV3029C2=y && HWMON=m)
	default y
	help
	  Say Y here if you want to expose temperature sensor data on
	  rtc-rv3029.

comment "Platform RTC drivers"

# this 'CMOS' RTC driver is arch dependent because it 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 X86 || ARM || M32R || PPC || MIPS || SPARC64 || MN10300
	default y if X86
	select RTC_MC146818_LIB
	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_ALPHA
	bool "Alpha PC-style CMOS"
	depends on ALPHA
	select RTC_MC146818_LIB
	default y
	help
	  Direct support for the real-time clock found on every Alpha
	  system, specifically MC146818 compatibles.  If in doubt, say Y.

config RTC_DRV_VRTC
	tristate "Virtual RTC for Intel MID platforms"
	depends on X86_INTEL_MID
	default y if X86_INTEL_MID

	help
	Say "yes" here to get direct support for the real time clock
	found on Moorestown platforms. The VRTC is a emulated RTC that
	derives its clock source from a real RTC in the PMIC. The MC146818
	style programming interface is mostly conserved, but any
	updates are done via IPC calls to the system controller FW.

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

config RTC_DRV_DS1286
	tristate "Dallas DS1286"
	depends on HAS_IOMEM
	help
	  If you say yes here you get support for the Dallas DS1286 RTC chips.

config RTC_DRV_DS1511
	tristate "Dallas DS1511"
	depends on HAS_IOMEM
	help
	  If you say yes here you get support for the
	  Dallas DS1511 timekeeping/watchdog chip.

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

config RTC_DRV_DS1553
	tristate "Maxim/Dallas DS1553"
	depends on HAS_IOMEM
	help
	  If you say yes here you get support for the
	  Maxim/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_DS1685_FAMILY
	tristate "Dallas/Maxim DS1685 Family"
	help
	  If you say yes here you get support for the Dallas/Maxim DS1685
	  family of real time chips.  This family includes the DS1685/DS1687,
	  DS1689/DS1693, DS17285/DS17287, DS17485/DS17487, and
	  DS17885/DS17887 chips.

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

choice
	prompt "Subtype"
	depends on RTC_DRV_DS1685_FAMILY
	default RTC_DRV_DS1685

config RTC_DRV_DS1685
	bool "DS1685/DS1687"
	help
	  This enables support for the Dallas/Maxim DS1685/DS1687 real time
	  clock chip.

	  This chip is commonly found in SGI O2 (IP32) and SGI Octane (IP30)
	  systems, as well as EPPC-405-UC modules by electronic system design
	  GmbH.

config RTC_DRV_DS1689
	bool "DS1689/DS1693"
	help
	  This enables support for the Dallas/Maxim DS1689/DS1693 real time
	  clock chip.

	  This is an older RTC chip, supplanted by the DS1685/DS1687 above,
	  which supports a few minor features such as Vcc, Vbat, and Power
	  Cycle counters, plus a customer-specific, 8-byte ROM/Serial number.

	  It also works for the even older DS1688/DS1691 RTC chips, which are
	  virtually the same and carry the same model number.  Both chips
	  have 114 bytes of user NVRAM.

config RTC_DRV_DS17285
	bool "DS17285/DS17287"
	help
	  This enables support for the Dallas/Maxim DS17285/DS17287 real time
	  clock chip.

	  This chip features 2kb of extended NV-SRAM.  It may possibly be
	  found in some SGI O2 systems (rare).

config RTC_DRV_DS17485
	bool "DS17485/DS17487"
	help
	  This enables support for the Dallas/Maxim DS17485/DS17487 real time
	  clock chip.

	  This chip features 4kb of extended NV-SRAM.

config RTC_DRV_DS17885
	bool "DS17885/DS17887"
	help
	  This enables support for the Dallas/Maxim DS17885/DS17887 real time
	  clock chip.

	  This chip features 8kb of extended NV-SRAM.

endchoice

config RTC_DS1685_PROC_REGS
	bool "Display register values in /proc"
	depends on RTC_DRV_DS1685_FAMILY && PROC_FS
	help
	  Enable this to display a readout of all of the RTC registers in
	  /proc/drivers/rtc.  Keep in mind that this can potentially lead
	  to lost interrupts, as reading Control Register C will clear
	  all pending IRQ flags.

	  Unless you are debugging this driver, choose N.

config RTC_DS1685_SYSFS_REGS
	bool "SysFS access to RTC register bits"
	depends on RTC_DRV_DS1685_FAMILY && SYSFS
	help
	  Enable this to provide access to the RTC control register bits
	  in /sys.  Some of the bits are read-write, others are read-only.

	  Keep in mind that reading Control C's bits automatically clears
	  all pending IRQ flags - this can cause lost interrupts.

	  If you know that you need access to these bits, choose Y, Else N.

config RTC_DRV_DS1742
	tristate "Maxim/Dallas DS1742/1743"
	depends on HAS_IOMEM
	help
	  If you say yes here you get support for the
	  Maxim/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_DS2404
	tristate "Maxim/Dallas DS2404"
	help
	  If you say yes here you get support for the
	  Dallas DS2404 RTC chip.

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

config RTC_DRV_DA9052
	tristate "Dialog DA9052/DA9053 RTC"
	depends on PMIC_DA9052
	help
	  Say y here to support the RTC driver for Dialog Semiconductor
	  DA9052-BC and DA9053-AA/Bx PMICs.

config RTC_DRV_DA9055
	tristate "Dialog Semiconductor DA9055 RTC"
	depends on MFD_DA9055
	help
	  If you say yes here you will get support for the
	  RTC of the Dialog DA9055 PMIC.

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

config RTC_DRV_DA9063
	tristate "Dialog Semiconductor DA9063/DA9062 RTC"
	depends on MFD_DA9063 || MFD_DA9062
	help
	  If you say yes here you will get support for the RTC subsystem
	  for the Dialog Semiconductor PMIC chips DA9063 and DA9062.

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

config RTC_DRV_EFI
	tristate "EFI RTC"
	depends on EFI && !X86
	help
	  If you say yes here you will get support for the EFI
	  Real Time Clock.

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

config RTC_DRV_STK17TA8
	tristate "Simtek STK17TA8"
	depends on HAS_IOMEM
	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_M48T86
	tristate "ST M48T86/Dallas DS12887"
	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_M48T35
	tristate "ST M48T35"
	depends on HAS_IOMEM
	help
	  If you say Y here you will get support for the
	  ST M48T35 RTC chip.

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

config RTC_DRV_M48T59
	tristate "ST M48T59/M48T08/M48T02"
	depends on HAS_IOMEM
	help
	  If you say Y here you will get support for the
	  ST M48T59 RTC chip and compatible ST M48T08 and M48T02.

	  These chips are usually found in Sun SPARC and UltraSPARC
	  workstations.

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

config RTC_DRV_MSM6242
	tristate "Oki MSM6242"
	depends on HAS_IOMEM
	help
	  If you say yes here you get support for the Oki MSM6242
	  timekeeping chip. It is used in some Amiga models (e.g. A2000).

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

config RTC_DRV_BQ4802
	tristate "TI BQ4802"
	depends on HAS_IOMEM
	help
	  If you say Y here you will get support for the TI
	  BQ4802 RTC chip.

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

config RTC_DRV_RP5C01
	tristate "Ricoh RP5C01"
	depends on HAS_IOMEM
	help
	  If you say yes here you get support for the Ricoh RP5C01
	  timekeeping chip. It is used in some Amiga models (e.g. A3000
	  and A4000).

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

config RTC_DRV_V3020
	tristate "EM Microelectronic V3020"
	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.

config RTC_DRV_WM831X
	tristate "Wolfson Microelectronics WM831x RTC"
	depends on MFD_WM831X
	help
	  If you say yes here you will get support for the RTC subsystem
	  of the Wolfson Microelectronics WM831X series PMICs.

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

config RTC_DRV_WM8350
	tristate "Wolfson Microelectronics WM8350 RTC"
	depends on MFD_WM8350
	help
	  If you say yes here you will get support for the RTC subsystem
	  of the Wolfson Microelectronics WM8350.

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

config RTC_DRV_SC27XX
	tristate "Spreadtrum SC27xx RTC"
	depends on MFD_SC27XX_PMIC || COMPILE_TEST
	help
	  If you say Y here you will get support for the RTC subsystem
	  of the Spreadtrum SC27xx series PMICs. The SC27xx series PMICs
	  includes the SC2720, SC2721, SC2723, SC2730 and SC2731 chips.

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

config RTC_DRV_SPEAR
	tristate "SPEAR ST RTC"
	depends on PLAT_SPEAR || COMPILE_TEST
	default y
	help
	 If you say Y here you will get support for the RTC found on
	 spear

config RTC_DRV_PCF50633
	depends on MFD_PCF50633
	tristate "NXP PCF50633 RTC"
	help
	  If you say yes here you get support for the RTC subsystem of the
	  NXP PCF50633 used in embedded systems.

config RTC_DRV_AB3100
	tristate "ST-Ericsson AB3100 RTC"
	depends on AB3100_CORE
	default y if AB3100_CORE
	help
	  Select this to enable the ST-Ericsson AB3100 Mixed Signal IC RTC
	  support. This chip contains a battery- and capacitor-backed RTC.

config RTC_DRV_AB8500
	tristate "ST-Ericsson AB8500 RTC"
	depends on AB8500_CORE
	select RTC_INTF_DEV
	select RTC_INTF_DEV_UIE_EMUL
	help
	  Select this to enable the ST-Ericsson AB8500 power management IC RTC
	  support. This chip contains a battery- and capacitor-backed RTC.

config RTC_DRV_NUC900
	tristate "NUC910/NUC920 RTC driver"
	depends on ARCH_W90X900 || COMPILE_TEST
	help
	  If you say yes here you get support for the RTC subsystem of the
	  NUC910/NUC920 used in embedded systems.

config RTC_DRV_OPAL
	tristate "IBM OPAL RTC driver"
	depends on PPC_POWERNV
	default y
	help
	  If you say yes here you get support for the PowerNV platform RTC
	  driver based on OPAL interfaces.

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

config RTC_DRV_ZYNQMP
	tristate "Xilinx Zynq Ultrascale+ MPSoC RTC"
	depends on OF
	help
	  If you say yes here you get support for the RTC controller found on
	  Xilinx Zynq Ultrascale+ MPSoC.

config RTC_DRV_CROS_EC
	tristate "Chrome OS EC RTC driver"
	depends on MFD_CROS_EC
	help
	  If you say yes here you will get support for the
	  Chrome OS Embedded Controller's RTC.

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

comment "on-CPU RTC drivers"

config RTC_DRV_ASM9260
	tristate "Alphascale asm9260 RTC"
	depends on MACH_ASM9260 || COMPILE_TEST
	help
	  If you say yes here you get support for the RTC on the
	  Alphascale asm9260 SoC.

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

config RTC_DRV_DAVINCI
	tristate "TI DaVinci RTC"
	depends on ARCH_DAVINCI_DM365 || COMPILE_TEST
	help
	  If you say yes here you get support for the RTC on the
	  DaVinci platforms (DM365).

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

config RTC_DRV_DIGICOLOR
	tristate "Conexant Digicolor RTC"
	depends on ARCH_DIGICOLOR || COMPILE_TEST
	help
	  If you say yes here you get support for the RTC on Conexant
	  Digicolor platforms. This currently includes the CX92755 SoC.

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

config RTC_DRV_IMXDI
	tristate "Freescale IMX DryIce Real Time Clock"
	depends on ARCH_MXC
	help
	   Support for Freescale IMX DryIce RTC

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

config RTC_DRV_OMAP
	tristate "TI OMAP Real Time Clock"
	depends on ARCH_OMAP || ARCH_DAVINCI || COMPILE_TEST
	depends on OF
	depends on PINCTRL
	select GENERIC_PINCONF
	help
	  Say "yes" here to support the on chip real time clock
	  present on TI OMAP1, AM33xx, DA8xx/OMAP-L13x, AM43xx and DRA7xx.

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

config HAVE_S3C_RTC
	bool
	help
	  This will include RTC support for Samsung SoCs. If
	  you want to include RTC support for any machine, kindly
	  select this in the respective mach-XXXX/Kconfig file.

config RTC_DRV_S3C
	tristate "Samsung S3C series SoC RTC"
	depends on ARCH_S3C64XX || HAVE_S3C_RTC || COMPILE_TEST
	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 ARCH_EP93XX || COMPILE_TEST
	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/PXA910"
	depends on ARCH_SA1100 || ARCH_PXA || ARCH_MMP
	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 SUPERH || ARCH_RENESAS
	help
	  Say Y here to enable support for the on-chip RTC found in
	  most SuperH processors. This RTC is also found in RZ/A SoCs.

	  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 CPU_VR41XX || COMPILE_TEST
	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_PL030
	tristate "ARM AMBA PL030 RTC"
	depends on ARM_AMBA
	help
	  If you say Y here you will get access to ARM AMBA
	  PrimeCell PL030 RTC found on certain ARM SOCs.

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

config RTC_DRV_PL031
	tristate "ARM AMBA PL031 RTC"
	depends on 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_AT91RM9200
	tristate "AT91RM9200 or some AT91SAM9 RTC"
	depends on ARCH_AT91 || COMPILE_TEST
	help
	  Driver for the internal RTC (Realtime Clock) module found on
	  Atmel AT91RM9200's and some  AT91SAM9 chips. On AT91SAM9 chips
	  this is powered by the backup power supply.

config RTC_DRV_AT91SAM9
	tristate "AT91SAM9 RTT as RTC"
	depends on ARCH_AT91 || COMPILE_TEST
	select MFD_SYSCON
	help
	  Some AT91SAM9 SoCs provide an RTT (Real Time Timer) block which
	  can be used as an RTC thanks to the backup power supply (e.g. a
	  small coin cell battery) which keeps this block and the GPBR
	  (General Purpose Backup Registers) block powered when the device
	  is shutdown.
	  Some AT91SAM9 SoCs provide a real RTC block, on those ones you'd
	  probably want to use the real RTC block instead of the "RTT as an
	  RTC" driver.

config RTC_DRV_AU1XXX
	tristate "Au1xxx Counter0 RTC support"
	depends on MIPS_ALCHEMY
	help
	  This is a driver for the Au1xxx on-chip Counter0 (Time-Of-Year
	  counter) to be used as a RTC.

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

config RTC_DRV_BFIN
	tristate "Blackfin On-Chip RTC"
	depends on BLACKFIN && !BF561
	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 SH_LANDISK
	help
	  If you say yes here you get support for the Ricoh RS5C313 RTC chips.

config RTC_DRV_GENERIC
	tristate "Generic RTC support"
	# Please consider writing a new RTC driver instead of using the generic
	# RTC abstraction
	depends on PARISC || M68K || PPC || SUPERH32 || COMPILE_TEST
	help
	  Say Y or M here to enable RTC support on systems using the generic
	  RTC abstraction. If you do not know what you are doing, you should
	  just say Y.

config RTC_DRV_PXA
	tristate "PXA27x/PXA3xx"
	depends on ARCH_PXA
	select RTC_DRV_SA1100
	help
         If you say Y here you will get access to the real time clock
         built into your PXA27x or PXA3xx CPU. This RTC is actually 2 RTCs
         consisting of an SA1100 compatible RTC and the extended PXA RTC.

	 This RTC driver uses PXA RTC registers available since pxa27x
	 series (RDxR, RYxR) instead of legacy RCNR, RTAR.

config RTC_DRV_VT8500
	tristate "VIA/WonderMedia 85xx SoC RTC"
	depends on ARCH_VT8500 || COMPILE_TEST
	help
	  If you say Y here you will get access to the real time clock
	  built into your VIA VT8500 SoC or its relatives.


config RTC_DRV_SUN4V
	bool "SUN4V Hypervisor RTC"
	depends on SPARC64
	help
	  If you say Y here you will get support for the Hypervisor
	  based RTC on SUN4V systems.

config RTC_DRV_SUN6I
	bool "Allwinner A31 RTC"
	default MACH_SUN6I || MACH_SUN8I
	depends on COMMON_CLK
	depends on ARCH_SUNXI || COMPILE_TEST
	help
	  If you say Y here you will get support for the RTC found in
	  some Allwinner SoCs like the A31 or the A64.

config RTC_DRV_SUNXI
	tristate "Allwinner sun4i/sun7i RTC"
	depends on MACH_SUN4I || MACH_SUN7I || COMPILE_TEST
	help
	  If you say Y here you will get support for the RTC found on
	  Allwinner A10/A20.

config RTC_DRV_STARFIRE
	bool "Starfire RTC"
	depends on SPARC64
	help
	  If you say Y here you will get support for the RTC found on
	  Starfire systems.

config RTC_DRV_TX4939
	tristate "TX4939 SoC"
	depends on SOC_TX4939
	help
	  Driver for the internal RTC (Realtime Clock) module found on
	  Toshiba TX4939 SoC.

config RTC_DRV_MV
	tristate "Marvell SoC RTC"
	depends on ARCH_DOVE || ARCH_MVEBU || COMPILE_TEST
	help
	  If you say yes here you will get support for the in-chip RTC
	  that can be found in some of Marvell's SoC devices, such as
	  the Kirkwood 88F6281 and 88F6192.

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

config RTC_DRV_ARMADA38X
	tristate "Armada 38x Marvell SoC RTC"
	depends on ARCH_MVEBU || COMPILE_TEST
	help
	  If you say yes here you will get support for the in-chip RTC
	  that can be found in the Armada 38x Marvell's SoC device

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

config RTC_DRV_FTRTC010
	tristate "Faraday Technology FTRTC010 RTC"
	depends on HAS_IOMEM
	default ARCH_GEMINI
	help
	  If you say Y here you will get support for the
	  Faraday Technolog FTRTC010 found on e.g. Gemini SoC's.

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

config RTC_DRV_PS3
	tristate "PS3 RTC"
	depends on PPC_PS3
	help
	  If you say yes here you will get support for the RTC on PS3.

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

config RTC_DRV_COH901331
	tristate "ST-Ericsson COH 901 331 RTC"
	depends on ARCH_U300 || COMPILE_TEST
	help
	  If you say Y here you will get access to ST-Ericsson
	  COH 901 331 RTC clock found in some ST-Ericsson Mobile
	  Platforms.

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


config RTC_DRV_STMP
	tristate "Freescale STMP3xxx/i.MX23/i.MX28 RTC"
	depends on ARCH_MXS || COMPILE_TEST
	select STMP_DEVICE
	help
	  If you say yes here you will get support for the onboard
	  STMP3xxx/i.MX23/i.MX28 RTC.

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

config RTC_DRV_PCAP
	tristate "PCAP RTC"
	depends on EZX_PCAP
	help
	  If you say Y here you will get support for the RTC found on
	  the PCAP2 ASIC used on some Motorola phones.

config RTC_DRV_MC13XXX
	depends on MFD_MC13XXX
	tristate "Freescale MC13xxx RTC"
	help
	  This enables support for the RTCs found on Freescale's PMICs
	  MC13783 and MC13892.

config RTC_DRV_MPC5121
	tristate "Freescale MPC5121 built-in RTC"
	depends on PPC_MPC512x || PPC_MPC52xx
	help
	  If you say yes here you will get support for the
	  built-in RTC on MPC5121 or on MPC5200.

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

config RTC_DRV_JZ4740
	tristate "Ingenic JZ4740 SoC"
	depends on MACH_INGENIC || COMPILE_TEST
	help
	  If you say yes here you get support for the Ingenic JZ47xx SoCs RTC
	  controllers.

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

config RTC_DRV_LPC24XX
	tristate "NXP RTC for LPC178x/18xx/408x/43xx"
	depends on ARCH_LPC18XX || COMPILE_TEST
	depends on OF && HAS_IOMEM
	help
	  This enables support for the NXP RTC found which can be found on
	  NXP LPC178x/18xx/408x/43xx devices.

	  If you have one of the devices above enable this driver to use
	  the hardware RTC. This driver can also be built as a module. If
	  so, the module will be called rtc-lpc24xx.

config RTC_DRV_LPC32XX
	depends on ARCH_LPC32XX || COMPILE_TEST
	tristate "NXP LPC32XX RTC"
	help
	  This enables support for the NXP RTC in the LPC32XX

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

config RTC_DRV_PM8XXX
	tristate "Qualcomm PMIC8XXX RTC"
	depends on MFD_PM8XXX || MFD_SPMI_PMIC || COMPILE_TEST
	help
	  If you say yes here you get support for the
	  Qualcomm PMIC8XXX RTC.

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

config RTC_DRV_TEGRA
	tristate "NVIDIA Tegra Internal RTC driver"
	depends on ARCH_TEGRA || COMPILE_TEST
	help
	  If you say yes here you get support for the
	  Tegra 200 series internal RTC module.

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

config RTC_DRV_TILE
	tristate "Tilera hypervisor RTC support"
	depends on TILE
	help
	  Enable support for the Linux driver side of the Tilera
	  hypervisor's real-time clock interface.

config RTC_DRV_PUV3
	tristate "PKUnity v3 RTC support"
	depends on ARCH_PUV3
	help
	  This enables support for the RTC in the PKUnity-v3 SoCs.

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

config RTC_DRV_LOONGSON1
	tristate "loongson1 RTC support"
	depends on MACH_LOONGSON32
	help
	  This is a driver for the loongson1 on-chip Counter0 (Time-Of-Year
	  counter) to be used as a RTC.

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

config RTC_DRV_MXC
	tristate "Freescale MXC Real Time Clock"
	depends on ARCH_MXC
	help
	   If you say yes here you get support for the Freescale MXC
	   RTC module.

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

config RTC_DRV_MXC_V2
	tristate "Freescale MXC Real Time Clock for i.MX53"
	depends on ARCH_MXC
	help
	   If you say yes here you get support for the Freescale MXC
	   SRTC module in i.MX53 processor.

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

config RTC_DRV_SNVS
	tristate "Freescale SNVS RTC support"
	select REGMAP_MMIO
	depends on HAS_IOMEM
	depends on OF
	help
	   If you say yes here you get support for the Freescale SNVS
	   Low Power (LP) RTC module.

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

config RTC_DRV_SIRFSOC
	tristate "SiRFSOC RTC"
	depends on ARCH_SIRF
	help
	  Say "yes" here to support the real time clock on SiRF SOC chips.
	  This driver can also be built as a module called rtc-sirfsoc.

config RTC_DRV_ST_LPC
	tristate "STMicroelectronics LPC RTC"
	depends on ARCH_STI
	depends on OF
	help
	  Say Y here to include STMicroelectronics Low Power Controller
	  (LPC) based RTC support.

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

config RTC_DRV_MOXART
	tristate "MOXA ART RTC"
	depends on ARCH_MOXART || COMPILE_TEST
	help
	   If you say yes here you get support for the MOXA ART
	   RTC module.

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

config RTC_DRV_MT6397
	tristate "MediaTek PMIC based RTC"
	depends on MFD_MT6397 || (COMPILE_TEST && IRQ_DOMAIN)
	help
	  This selects the MediaTek(R) RTC driver. RTC is part of MediaTek
	  MT6397 PMIC. You should enable MT6397 PMIC MFD before select
	  MediaTek(R) RTC driver.

	  If you want to use MediaTek(R) RTC interface, select Y or M here.

config RTC_DRV_MT7622
	tristate "MediaTek SoC based RTC"
	depends on ARCH_MEDIATEK || COMPILE_TEST
	help
	  This enables support for the real time clock built in the MediaTek
	  SoCs.

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

config RTC_DRV_XGENE
	tristate "APM X-Gene RTC"
	depends on HAS_IOMEM
	depends on ARCH_XGENE || COMPILE_TEST
	help
	  If you say yes here you get support for the APM X-Gene SoC real time
	  clock.

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

config RTC_DRV_PIC32
	tristate "Microchip PIC32 RTC"
	depends on MACH_PIC32
	default y
	help
	   If you say yes here you get support for the PIC32 RTC module.

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

config RTC_DRV_R7301
	tristate "EPSON TOYOCOM RTC-7301SF/DG"
	select REGMAP_MMIO
	depends on OF && HAS_IOMEM
	help
	   If you say yes here you get support for the EPSON TOYOCOM
	   RTC-7301SF/DG chips.

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

config RTC_DRV_STM32
	tristate "STM32 RTC"
	select REGMAP_MMIO
	depends on ARCH_STM32 || COMPILE_TEST
	help
	   If you say yes here you get support for the STM32 On-Chip
	   Real Time Clock.

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

config RTC_DRV_CPCAP
	depends on MFD_CPCAP
	tristate "Motorola CPCAP RTC"
	help
	   Say y here for CPCAP rtc found on some Motorola phones
	   and tablets such as Droid 4.

config RTC_DRV_RTD119X
	bool "Realtek RTD129x RTC"
	depends on ARCH_REALTEK || COMPILE_TEST
	default ARCH_REALTEK
	help
	  If you say yes here, you get support for the RTD1295 SoC
	  Real Time Clock.

comment "HID Sensor RTC drivers"

config RTC_DRV_HID_SENSOR_TIME
	tristate "HID Sensor Time"
	depends on USB_HID
	select IIO
	select HID_SENSOR_HUB
	select HID_SENSOR_IIO_COMMON
	help
	  Say yes here to build support for the HID Sensors of type Time.
	  This drivers makes such sensors available as RTCs.

	  If this driver is compiled as a module, it will be named
	  rtc-hid-sensor-time.

config RTC_DRV_GOLDFISH
	tristate "Goldfish Real Time Clock"
	depends on MIPS && (GOLDFISH || COMPILE_TEST)
	help
	  Say yes to enable RTC driver for the Goldfish based virtual platform.

	  Goldfish is a code name for the virtual platform developed by Google
	  for Android emulation.

endif # RTC_CLASS
