# SPDX-License-Identifier: GPL-2.0-only
#
# 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
	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.

	  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_LIB_KUNIT_TEST
	tristate "KUnit test for RTC lib functions" if !KUNIT_ALL_TESTS
	depends on KUNIT
	default KUNIT_ALL_TESTS
	help
	  Enable this option to test RTC library functions.

	  If unsure, say N.

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_ABEOZ9
	select REGMAP_I2C
	tristate "Abracon AB-RTCMC-32.768kHz-EOZ9"
	help
	  If you say yes here you get support for the Abracon
	  AB-RTCMC-32.768kHz-EOA9 I2C RTC chip.

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

config RTC_DRV_ABX80X
	tristate "Abracon ABx80x"
	select WATCHDOG_CORE if WATCHDOG
	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"
	select REGMAP_I2C
	select WATCHDOG_CORE if WATCHDOG
	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_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 && WATCHDOG
	select WATCHDOG_CORE
	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
	select REGMAP_IRQ
	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/RK809/RK817/RK818 RTC"
	depends on MFD_RK808
	help
	  If you say yes here you will get support for the
	  RTC of RK805, RK809 and RK817, 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_ISL12026
	tristate "Intersil ISL12026"
	depends on OF || COMPILE_TEST
	help
	  If you say yes here you get support for the
	  Intersil ISL12026 RTC chip.

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

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"
	select REGMAP_I2C
	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"
	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_BD70528
	tristate "ROHM BD71815 and BD71828 PMIC RTC"
	depends on MFD_ROHM_BD71828
	help
	  If you say Y here you will get support for the RTC
	  block on ROHM BD71815 and BD71828 Power Management IC.

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

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 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_RC5T619
	tristate "RICOH RC5T619 RTC driver"
	depends on MFD_RN5T618
	help
	  If you say yes here you get support for the RTC on the
	  RICOH RC5T619 chips.

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

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"
	select REGMAP_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-8571/RX-8581"
	select REGMAP_I2C
	help
	  If you say yes here you will get support for the Epson RX-8571/
	  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_RV3028
	tristate "Micro Crystal RV3028"
	select REGMAP_I2C
	help
	  If you say yes here you get support for the Micro Crystal
	  RV3028.

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

config RTC_DRV_RV3032
	tristate "Micro Crystal RV3032"
	select REGMAP_I2C
	help
	  If you say yes here you get support for the Micro Crystal
	  RV3032.

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

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
	select REGMAP_I2C
	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.

config RTC_DRV_SD3078
	tristate "ZXW Shenzhen whwave SD3078"
	select REGMAP_I2C
	help
	  If you say yes here you get support for the ZXW Shenzhen whwave
	  SD3078 RTC chips.

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

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_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"
	select REGMAP_SPI
	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

comment "SPI and I2C RTC drivers"

config RTC_DRV_DS3232
	tristate "Dallas/Maxim DS3232/DS3234"
	depends on RTC_I2C_AND_SPI
	select REGMAP_I2C if I2C
	select REGMAP_SPI if SPI_MASTER
	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
	select REGMAP_I2C if I2C
	select REGMAP_SPI if SPI_MASTER
	select WATCHDOG_CORE if WATCHDOG
	help
	  If you say yes here you get support for the NXP PCF2127/29 RTC
	  chips with integrated quartz crystal for industrial applications.
	  Both chips also have watchdog timer and tamper switch detection
	  features.

	  PCF2127 has an additional feature of 512 bytes battery backed
	  memory that's accessible using nvmem interface.

	  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
	select REGMAP_I2C if I2C
	select REGMAP_SPI if SPI_MASTER
	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.

config RTC_DRV_RX6110
	tristate "Epson RX-6110"
	depends on RTC_I2C_AND_SPI
	select REGMAP_SPI if SPI_MASTER
	select REGMAP_I2C if I2C
	help
	  If you say yes here you will get support for the Epson RX-6110.

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

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 || PPC || MIPS || SPARC64
	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_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"
	depends on HAS_IOMEM
	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_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"
	depends on HAS_IOMEM
	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_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_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 && HAS_IOMEM
	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 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.

config RTC_DRV_NTXEC
	tristate "Netronix embedded controller RTC"
	depends on MFD_NTXEC
	help
	  Say yes here if you want to support the RTC functionality of the
	  embedded controller found in certain e-book readers designed by the
	  original design manufacturer Netronix.

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
	depends on OF
	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_FSL_FTM_ALARM
	tristate "Freescale FlexTimer alarm timer"
	depends on ARCH_LAYERSCAPE || SOC_LS1021A || COMPILE_TEST
	help
	   For the FlexTimer in LS1012A, LS1021A, LS1028A, LS1043A, LS1046A,
	   LS1088A, LS208xA, we can use FTM as the wakeup source.

	   Say y here to enable FTM alarm support. The FTM alarm provides
	   alarm functions for wakeup system from deep sleep.

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

config RTC_DRV_MESON
	tristate "Amlogic Meson RTC"
	depends on (ARM && ARCH_MESON) || COMPILE_TEST
	select REGMAP_MMIO
	help
	   Support for the RTC block on the Amlogic Meson6, Meson8, Meson8b
	   and Meson8m2 SoCs.

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

config RTC_DRV_MESON_VRTC
	tristate "Amlogic Meson Virtual RTC"
	depends on ARCH_MESON || COMPILE_TEST
	default m if ARCH_MESON
	help
	  If you say yes here you will get support for the
	  Virtual RTC of Amlogic SoCs.

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

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
	depends on OF
	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
	depends on OF && HAS_IOMEM
	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_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 || SUPERH || 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_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
	depends on OF
	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_CADENCE
	tristate "Cadence RTC driver"
	depends on OF && HAS_IOMEM
	help
	  If you say Y here you will get access to Cadence RTC IP
	  found on certain SOCs.

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

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_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 MIPS || COMPILE_TEST
	depends on OF
	help
	  If you say yes here you get support for the Ingenic JZ47xx SoCs RTC
	  controllers.

	  This driver can also be built 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_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 || COMPILE_TEST
	depends on HAS_IOMEM
	depends on OF
	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 || COMPILE_TEST
	depends on HAS_IOMEM
	depends on OF
	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 ARCH_MXC || COMPILE_TEST
	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_IMX_SC
	depends on IMX_SCU
	depends on HAVE_ARM_SMCCC
	tristate "NXP i.MX System Controller RTC support"
	help
	   If you say yes here you get support for the NXP i.MX System
	   Controller RTC module.

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_MT2712
	tristate "MediaTek MT2712 SoC based RTC"
	depends on ARCH_MEDIATEK || COMPILE_TEST
	help
	  This enables support for the real time clock built in the MediaTek
	  SoCs for MT2712.

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

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.

config RTC_DRV_ASPEED
	tristate "ASPEED RTC"
	depends on OF
	depends on ARCH_ASPEED || COMPILE_TEST
	help
	  If you say yes here you get support for the ASPEED BMC SoC real time
	  clocks.

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

comment "HID Sensor RTC drivers"

config RTC_DRV_HID_SENSOR_TIME
	tristate "HID Sensor Time"
	depends on USB_HID
	depends on HID_SENSOR_HUB && IIO
	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 HAS_IOMEM
	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.

config RTC_DRV_WILCO_EC
	tristate "Wilco EC RTC"
	depends on WILCO_EC
	default m
	help
	  If you say yes here, you get read/write support for the Real Time
	  Clock on the Wilco Embedded Controller (Wilco is a kind of Chromebook)

	  This can also be built as a module. If so, the module will
	  be named "rtc_wilco_ec".

endif # RTC_CLASS
