#
# 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.

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_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, 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, 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
	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
	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 RK808/RK818 RTC"
	depends on MFD_RK808
	help
	  If you say yes here you will get support for the
	  RTC of 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_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
	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
	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_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 <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 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_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.

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

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
	tristate "Allwinner A31 RTC"
	default MACH_SUN6I || MACH_SUN8I || COMPILE_TEST
	depends on ARCH_SUNXI
	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_GEMINI
	tristate "Gemini SoC RTC"
	depends on ARCH_GEMINI || COMPILE_TEST
	depends on HAS_IOMEM
	help
	  If you say Y here you will get support for the
	  RTC found on Gemini SoC's.

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

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_JZ4740 || COMPILE_TEST
	help
	  If you say yes here you get support for the Ingenic JZ4740 SoC RTC
	  controller.

	  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 buillt 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 buillt 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_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 Real Time Clock driver"
	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_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

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.


endif # RTC_CLASS
