#
# RTC drivers configuration
#

menu "Real Time Clock"

config DM_RTC
	bool "Enable Driver Model for RTC drivers"
	depends on DM
	select LIB_DATE
	help
	  Enable drver model for real-time-clock drivers. The RTC uclass
	  then provides the rtc_get()/rtc_set() interface, delegating to
	  drivers to perform the actual functions. See rtc.h for a
	  description of the API.

config SPL_DM_RTC
	bool "Enable Driver Model for RTC drivers in SPL"
	depends on SPL_DM
	help
	  Enable drver model for real-time-clock drivers. The RTC uclass
	  then provides the rtc_get()/rtc_set() interface, delegating to
	  drivers to perform the actual functions. See rtc.h for a
	  description of the API.

config TPL_DM_RTC
	bool "Enable Driver Model for RTC drivers in TPL"
	depends on TPL_DM
	help
	  Enable drver model for real-time-clock drivers. The RTC uclass
	  then provides the rtc_get()/rtc_set() interface, delegating to
	  drivers to perform the actual functions. See rtc.h for a
	  description of the API.

config VPL_DM_RTC
	bool "Enable Driver Model for RTC drivers in VPL"
	depends on VPL_DM
	help
	  Enable drver model for real-time-clock drivers. The RTC uclass
	  then provides the rtc_get()/rtc_set() interface, delegating to
	  drivers to perform the actual functions. See rtc.h for a
	  description of the API.

config RTC_ENABLE_32KHZ_OUTPUT
	bool "Enable RTC 32Khz output"
	help
	   Some real-time clocks support the output of 32kHz square waves (such as ds3231),
	   the config symbol choose Real Time Clock device 32Khz output feature.

config RTC_ARMADA38X
	bool "Enable Armada 38x Marvell SoC RTC"
	depends on DM_RTC && ARCH_MVEBU
	help
	  This adds support for the in-chip RTC that can be found in the
	  Armada 38x Marvell's SoC devices.

config RTC_PCF2127
	bool "Enable PCF2127 driver"
	depends on DM_RTC
	help
	  The PCF2127 is a CMOS Real Time Clock (RTC) and calendar with an integrated
	  Temperature Compensated Crystal (Xtal) Oscillator (TCXO) and a 32.768 kHz quartz
	  crystal optimized for very high accuracy and very low power consumption. The PCF2127
	  has a selectable I2C-bus or SPI-bus, a backup battery switch-over circuit, a
	  programmable watchdog function, a timestamp function, and many other features.

config RTC_DS1307
	bool "Enable DS1307 driver"
	depends on DM_RTC
	help
	  Support for Dallas Semiconductor (now Maxim) DS1307 and DS1339 and
	  compatible Real Time Clock devices.

config RTC_DS1337
	bool "Enable DS1337 driver"
	help
	  Support for Dallas Semiconductor (now Maxim) DS1337/8/9 compatible
	  Real Time Clock devices.

config RTC_DS1337_NOOSC
	bool "Enable support for no oscillator output in DS1337 driver"
	depends on RTC_DS1337

config RTC_DS1338
	bool "Enable DS1338 driver"
	help
	  Support for Dallas Semiconductor (now Maxim) DS1338 and compatible
	  Real Time Clock devices.

config RTC_DS1374
	bool "Enable DS1374 driver"
	depends on !DM_RTC
	help
	  Support for Dallas Semiconductor (now Maxim) DS1374 and compatible
	  Real Time Clock devices.

config RTC_DS1672
	bool "Enable DS1672 driver"
	depends on DM_RTC
	help
	  Support for Dallas Semiconductor (now Maxim) DS1672 compatible
	  Real Time Clock devices.

config RTC_DS3231
	bool "Enable DS3231 driver"
	help
	  Support for Dallas Semiconductor (now Maxim) DS3231 compatible
	  Real Time Clock devices.

config RTC_DS3232
	bool "Enable DS3232 driver"
	depends on DM_RTC
	depends on DM_I2C
	help
	  Support for Dallas Semiconductor (now Maxim) DS3232 compatible
	  Real Time Clock devices.

config RTC_EMULATION
	bool "Enable emulated RTC"
	depends on DM_RTC
	help
	  On a board without hardware clock this software real time clock can be
	  used. The initial time may be provided via the environment variable
	  'rtc_emul_epoch' as a decimal string indicating seconds since
	  1970-01-01. If the environment variable is missing, the build time is
	  used to initialize the RTC. The time can be adjusted manually via the
	  'date' command or the 'sntp' command can be used to update the RTC
	  with the time from a network time server. See CONFIG_CMD_SNTP and
	  CONFIG_BOOTP_NTPSERVER. The RTC time is advanced according to CPU
	  ticks.

config RTC_GOLDFISH
	bool "Enable Goldfish driver"
	depends on DM_RTC
	help
	  The Goldfish RTC is a virtual device which may be supplied by QEMU.
	  It is enabled by default on QEMU's RISC-V virt machine.

config RTC_ISL1208
	bool "Enable ISL1208 driver"
	depends on DM_RTC
	help
	  The Renesas (formerly Intersil) ISL1208 is a I2C Real Time Clock (RTC) and
	  calendar with automatic leap year correction, 2-byte battery backed SRAM,
	  automatic power switch-over, alarm function and 15 selectable frequency
	  outputs.

	  This driver supports reading and writing the RTC/calendar and detects
	  total power failures.

config RTC_MAX313XX
	bool "Analog Devices MAX313XX RTC driver"
	depends on DM_RTC
	depends on DM_I2C
	help
	  If you say yes here you will get support for the
	  Analog Devices MAX313XX series RTC family.

	  Chip features not currently supported:
	  - Timestamp registers as SRAM
	  - Temperature sensor
	  - CLKOUT generation

config RTC_PCF85063
	bool "Enable PCF85063 driver"
	depends on DM_I2C
	depends on DM_RTC
	help
	  If you say yes here you get support for the NXP PCF85063 RTC
	  and compatible chips.

config RTC_PCF8563
	bool "Philips PCF8563"
	help
	  If you say yes here you get support for the Philips PCF8563 RTC
	  and compatible chips.

config RTC_PT7C4338
	bool "Enable Pericom Technology PT7C4338 RTC driver"

config RTC_RV3028
	bool "Enable RV3028 driver"
	depends on DM_RTC
	help
	  The MicroCrystal RV3028 is a I2C Real Time Clock (RTC)

config RTC_RV3029
	bool "Enable RV3029 driver"
	depends on DM_RTC
	help
	  The MicroCrystal RV3029 is a I2C Real Time Clock (RTC) with 8-byte
	  battery-backed SRAM.

	  This driver supports reading and writing the RTC/calendar and the
	  battery-baced SRAM section.

config RTC_RV3032
	bool "Enable RV3032 driver"
	depends on DM_RTC
	help
	  If you say yes here you get support for the Micro Crystal RV3032
	  RTC.

config RTC_RV8803
	bool "Enable RV8803 driver"
	depends on DM_RTC
	help
	  The Micro Crystal RV8803 is a high accuracy, ultra-low power I2C
	  Real Time Clock (RTC) with temperature compensation.

	  This driver supports reading and writing the RTC/calendar and
	  detects total power failures.

config RTC_RX8010SJ
	bool "Enable RX8010SJ driver"
	depends on DM_RTC
	help
	  Support for Epson RX8010SJ Real Time Clock devices.

config RTC_RX8025
	bool "Enable RX8025 driver"
	depends on DM_RTC
	help
	  Support for Epson RX8025 Real Time Clock devices.

config RTC_PL031
	bool "Enable ARM AMBA PL031 RTC driver"
	depends on DM_RTC
	help
	  The ARM PrimeCell Real Time Clock (PL031) is an optional SoC
	  peripheral based on the Advanced Microcontroller Bus Architecture
	  (AMBA). It is emulated in QEMU virtual ARM machines.

config RTC_MV
	bool "Enable Marvell RTC driver"
	depends on DM_RTC && ARCH_KIRKWOOD
	help
	  Enable Marvell RTC driver. This driver supports the rtc that is present
	  on some Marvell SoCs.

config RTC_S35392A
	bool "Enable S35392A driver"
	select BITREVERSE
	help
	  Enable s35392a driver which provides rtc get and set function.

config RTC_MC13XXX
	bool "Enable MC13XXX RTC driver"
	depends on !DM_RTC

config RTC_MC146818
	bool "Enable MC146818 driver"
	help
	  This is a widely used real-time clock chip originally by Motorola
	  and now available from NXP. It includes a battery-backed real-time
	  clock with a wide array of features and 50 bytes of general-purpose,
	  battery-backed RAM. The driver supports access to the clock and RAM.

config MCFRTC
	bool "Use common CF RTC driver"
	depends on M68K

config SYS_MCFRTC_BASE
	hex "Base address for RTC in immap.h"
	depends on MCFRTC

config RTC_MXS
	bool "Enable i.MXS RTC driver"
	depends on ARCH_MX23 || ARCH_MX28

config RTC_M41T62
	bool "Enable M41T62 driver"
	help
	  Enable driver for ST's M41T62 compatible RTC devices (like RV-4162).
	  It is a serial (I2C) real-time clock (RTC) with alarm.

config RTC_SANDBOX
	bool "Enable sandbox RTC driver"
	depends on SANDBOX && DM_RTC
	default y
	help
	  Enable the sandbox RTC driver. This driver connects to the RTC
	  emulator and is used to test the RTC uclasses and associated code,
	  as well as the I2C subsystem.

config SPL_RTC_SANDBOX
	bool "Enable sandbox RTC driver (SPL)"
	depends on SANDBOX && SPL_DM_RTC
	default y
	help
	  Enable the sandbox RTC driver. This driver connects to the RTC
	  emulator and is used to test the RTC uclasses and associated code,
	  as well as the I2C subsystem.

config RTC_STM32
	bool "Enable STM32 RTC driver"
	depends on DM_RTC
	help
	  Enable STM32 RTC driver. This driver supports the rtc that is present
	  on some STM32 SoCs.

config RTC_ABX80X
	bool "Enable Abracon ABx80x RTC driver"
	depends on DM_RTC
	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.

config RTC_DAVINCI
	bool "Enable TI OMAP RTC driver"
	depends on ARCH_DAVINCI || ARCH_OMAP2PLUS
	help
	  Say "yes" here to support the on chip real time clock
	  present on TI OMAP1, AM33xx, DA8xx/OMAP-L13x, AM43xx and DRA7xx.

config RTC_ZYNQMP
	bool "Enable ZynqMP RTC driver"
	depends on DM_RTC && (ARCH_ZYNQMP || ARCH_VERSAL || ARCH_VERSAL_NET || ARCH_VERSAL2)
	help
	  Say "yes" here to support the on chip real time clock
	  present on Xilinx ZynqMP SoC.

config RTC_HT1380
	bool "Enable Holtek HT1380/HT1381 RTC driver"
	depends on DM_RTC && DM_GPIO
	help
	  Say "yes" here to get support for Holtek HT1380/HT1381
	  Serial Timekeeper IC which provides seconds, minutes, hours,
	  day of the week, date, month and year information. It is to be
	  connected via 3 GPIO pins which work as reset, clock, and data.

endmenu
