# STM32 Cube LL RTC

# Copyright (c) 2018, Linaro Limited
# SPDX-License-Identifier: Apache-2.0

menuconfig COUNTER_RTC_STM32
	bool "STM32 Counter RTC driver"
	default y
	depends on DT_HAS_ST_STM32_RTC_ENABLED
	select USE_STM32_LL_RTC
	select USE_STM32_LL_PWR
	select USE_STM32_LL_RCC
	select USE_STM32_LL_EXTI
	help
	  Build RTC driver for STM32 SoCs.
	  Tested on STM32 F0, F2, F3, F4, L1, L4, F7, G0, G4, H7 series

if COUNTER_RTC_STM32

choice COUNTER_RTC_STM32_CLOCK_SRC
	bool "RTC clock source"
	depends on COUNTER_RTC_STM32

config COUNTER_RTC_STM32_CLOCK_LSI
	bool "LSI"
	help
	  Use LSI as RTC clock

config COUNTER_RTC_STM32_CLOCK_LSE
	bool "LSE"
	help
	  Use LSE as RTC clock

endchoice #COUNTER_RTC_STM32_CLOCK_SRC

if !SOC_SERIES_STM32F4X

choice COUNTER_RTC_STM32_LSE_DRIVE
	prompt "LSE oscillator drive capability"
	depends on COUNTER_RTC_STM32_CLOCK_LSE

config COUNTER_RTC_STM32_LSE_DRIVE_LOW
	bool "Low"
	help
	  Xtal mode lower driving capability

config COUNTER_RTC_STM32_LSE_DRIVE_MEDIUMLOW
	bool "Medium Low"
	help
	  Xtal mode medium low driving capability

config COUNTER_RTC_STM32_LSE_DRIVE_MEDIUMHIGH
	bool "Medium High"
	help
	  Xtal mode medium high driving capability

config COUNTER_RTC_STM32_LSE_DRIVE_HIGH
	bool "High"
	help
	  Xtal mode higher driving capability

endchoice

config COUNTER_RTC_STM32_LSE_DRIVE_STRENGTH
	hex
	default 0x00000000 if COUNTER_RTC_STM32_LSE_DRIVE_LOW
	default 0x00000008 if COUNTER_RTC_STM32_LSE_DRIVE_MEDIUMLOW
	default 0x00000010 if COUNTER_RTC_STM32_LSE_DRIVE_MEDIUMHIGH
	default 0x00000018 if COUNTER_RTC_STM32_LSE_DRIVE_HIGH

endif # !SOC_SERIES_STM32F4X

config COUNTER_RTC_STM32_LSE_BYPASS
	bool "LSE oscillator bypass"
	depends on COUNTER_RTC_STM32_CLOCK_LSE
	help
	  Enable LSE bypass

config COUNTER_RTC_STM32_BACKUP_DOMAIN_RESET
	bool "Do backup domain reset"
	default y
	help
	  Force a backup domain reset on startup

config COUNTER_RTC_STM32_SAVE_VALUE_BETWEEN_RESETS
	bool "Save rtc time value between resets"
	default y
	depends on !COUNTER_RTC_STM32_BACKUP_DOMAIN_RESET
	help
	  Do not reset the rtc time and date after each reset.

endif # COUNTER_RTC_STM32
