#include <linux/bcd.h>
#include <linux/bitfield.h>
#include <linux/clk.h>
#include <linux/errno.h>
#include <linux/iopoll.h>
#include <linux/ioport.h>
#include <linux/mfd/syscon.h>
#include <linux/module.h>
#include <linux/of.h>
#include <linux/platform_device.h>
#include <linux/pm_wakeirq.h>
#include <linux/regmap.h>
#include <linux/rtc.h>
#define DRIVER_NAME …
#define STM32_RTC_TR_SEC_SHIFT …
#define STM32_RTC_TR_SEC …
#define STM32_RTC_TR_MIN_SHIFT …
#define STM32_RTC_TR_MIN …
#define STM32_RTC_TR_HOUR_SHIFT …
#define STM32_RTC_TR_HOUR …
#define STM32_RTC_DR_DATE_SHIFT …
#define STM32_RTC_DR_DATE …
#define STM32_RTC_DR_MONTH_SHIFT …
#define STM32_RTC_DR_MONTH …
#define STM32_RTC_DR_WDAY_SHIFT …
#define STM32_RTC_DR_WDAY …
#define STM32_RTC_DR_YEAR_SHIFT …
#define STM32_RTC_DR_YEAR …
#define STM32_RTC_CR_FMT …
#define STM32_RTC_CR_ALRAE …
#define STM32_RTC_CR_ALRAIE …
#define STM32_RTC_ISR_ALRAWF …
#define STM32_RTC_ISR_INITS …
#define STM32_RTC_ISR_RSF …
#define STM32_RTC_ISR_INITF …
#define STM32_RTC_ISR_INIT …
#define STM32_RTC_ISR_ALRAF …
#define STM32_RTC_PRER_PRED_S_SHIFT …
#define STM32_RTC_PRER_PRED_S …
#define STM32_RTC_PRER_PRED_A_SHIFT …
#define STM32_RTC_PRER_PRED_A …
#define STM32_RTC_ALRMXR_SEC_SHIFT …
#define STM32_RTC_ALRMXR_SEC …
#define STM32_RTC_ALRMXR_SEC_MASK …
#define STM32_RTC_ALRMXR_MIN_SHIFT …
#define STM32_RTC_ALRMXR_MIN …
#define STM32_RTC_ALRMXR_MIN_MASK …
#define STM32_RTC_ALRMXR_HOUR_SHIFT …
#define STM32_RTC_ALRMXR_HOUR …
#define STM32_RTC_ALRMXR_PM …
#define STM32_RTC_ALRMXR_HOUR_MASK …
#define STM32_RTC_ALRMXR_DATE_SHIFT …
#define STM32_RTC_ALRMXR_DATE …
#define STM32_RTC_ALRMXR_WDSEL …
#define STM32_RTC_ALRMXR_WDAY_SHIFT …
#define STM32_RTC_ALRMXR_WDAY …
#define STM32_RTC_ALRMXR_DATE_MASK …
#define STM32_RTC_SR_ALRA …
#define STM32_RTC_VERR_MINREV_SHIFT …
#define STM32_RTC_VERR_MINREV …
#define STM32_RTC_VERR_MAJREV_SHIFT …
#define STM32_RTC_VERR_MAJREV …
#define STM32_RTC_SECCFGR …
#define STM32_RTC_SECCFGR_ALRA_SEC …
#define STM32_RTC_SECCFGR_INIT_SEC …
#define STM32_RTC_SECCFGR_SEC …
#define STM32_RTC_RXCIDCFGR(x) …
#define STM32_RTC_RXCIDCFGR_CFEN …
#define STM32_RTC_RXCIDCFGR_CID …
#define STM32_RTC_RXCIDCFGR_CID1 …
#define RTC_WPR_1ST_KEY …
#define RTC_WPR_2ND_KEY …
#define RTC_WPR_WRONG_KEY …
#define UNDEF_REG …
#define SEC_PER_DAY …
struct stm32_rtc;
struct stm32_rtc_registers { … };
struct stm32_rtc_events { … };
struct stm32_rtc_data { … };
struct stm32_rtc { … };
struct stm32_rtc_rif_resource { … };
static const struct stm32_rtc_rif_resource STM32_RTC_RES_ALRA = …;
static const struct stm32_rtc_rif_resource STM32_RTC_RES_INIT = …;
static void stm32_rtc_wpr_unlock(struct stm32_rtc *rtc)
{ … }
static void stm32_rtc_wpr_lock(struct stm32_rtc *rtc)
{ … }
static int stm32_rtc_enter_init_mode(struct stm32_rtc *rtc)
{ … }
static void stm32_rtc_exit_init_mode(struct stm32_rtc *rtc)
{ … }
static int stm32_rtc_wait_sync(struct stm32_rtc *rtc)
{ … }
static void stm32_rtc_clear_event_flags(struct stm32_rtc *rtc,
unsigned int flags)
{ … }
static irqreturn_t stm32_rtc_alarm_irq(int irq, void *dev_id)
{ … }
static void tm2bcd(struct rtc_time *tm)
{ … }
static void bcd2tm(struct rtc_time *tm)
{ … }
static int stm32_rtc_read_time(struct device *dev, struct rtc_time *tm)
{ … }
static int stm32_rtc_set_time(struct device *dev, struct rtc_time *tm)
{ … }
static int stm32_rtc_read_alarm(struct device *dev, struct rtc_wkalrm *alrm)
{ … }
static int stm32_rtc_alarm_irq_enable(struct device *dev, unsigned int enabled)
{ … }
static int stm32_rtc_valid_alrm(struct device *dev, struct rtc_time *tm)
{ … }
static int stm32_rtc_set_alarm(struct device *dev, struct rtc_wkalrm *alrm)
{ … }
static const struct rtc_class_ops stm32_rtc_ops = …;
static void stm32_rtc_clear_events(struct stm32_rtc *rtc,
unsigned int flags)
{ … }
static const struct stm32_rtc_data stm32_rtc_data = …;
static const struct stm32_rtc_data stm32h7_rtc_data = …;
static void stm32mp1_rtc_clear_events(struct stm32_rtc *rtc,
unsigned int flags)
{ … }
static const struct stm32_rtc_data stm32mp1_data = …;
static const struct stm32_rtc_data stm32mp25_data = …;
static const struct of_device_id stm32_rtc_of_match[] = …;
MODULE_DEVICE_TABLE(of, stm32_rtc_of_match);
static int stm32_rtc_check_rif(struct stm32_rtc *stm32_rtc,
struct stm32_rtc_rif_resource res)
{ … }
static int stm32_rtc_init(struct platform_device *pdev,
struct stm32_rtc *rtc)
{ … }
static int stm32_rtc_probe(struct platform_device *pdev)
{ … }
static void stm32_rtc_remove(struct platform_device *pdev)
{ … }
static int stm32_rtc_suspend(struct device *dev)
{ … }
static int stm32_rtc_resume(struct device *dev)
{ … }
static const struct dev_pm_ops stm32_rtc_pm_ops = …;
static struct platform_driver stm32_rtc_driver = …;
module_platform_driver(…) …;
MODULE_ALIAS(…) …;
MODULE_AUTHOR(…) …;
MODULE_DESCRIPTION(…) …;
MODULE_LICENSE(…) …;