#include <linux/clk.h>
#include <linux/delay.h>
#include <linux/init.h>
#include <linux/io.h>
#include <linux/module.h>
#include <linux/of.h>
#include <linux/platform_device.h>
#include <linux/rtc.h>
#include <linux/slab.h>
#define RTC_CCVR …
#define RTC_CMR …
#define RTC_CLR …
#define RTC_CCR …
#define RTC_CCR_IE …
#define RTC_CCR_MASK …
#define RTC_CCR_EN …
#define RTC_CCR_WEN …
#define RTC_STAT …
#define RTC_STAT_BIT …
#define RTC_RSTAT …
#define RTC_EOI …
#define RTC_VER …
struct xgene_rtc_dev { … };
static int xgene_rtc_read_time(struct device *dev, struct rtc_time *tm)
{ … }
static int xgene_rtc_set_time(struct device *dev, struct rtc_time *tm)
{ … }
static int xgene_rtc_read_alarm(struct device *dev, struct rtc_wkalrm *alrm)
{ … }
static int xgene_rtc_alarm_irq_enable(struct device *dev, u32 enabled)
{ … }
static int xgene_rtc_alarm_irq_enabled(struct device *dev)
{ … }
static int xgene_rtc_set_alarm(struct device *dev, struct rtc_wkalrm *alrm)
{ … }
static const struct rtc_class_ops xgene_rtc_ops = …;
static irqreturn_t xgene_rtc_interrupt(int irq, void *id)
{ … }
static int xgene_rtc_probe(struct platform_device *pdev)
{ … }
static void xgene_rtc_remove(struct platform_device *pdev)
{ … }
static int __maybe_unused xgene_rtc_suspend(struct device *dev)
{ … }
static int __maybe_unused xgene_rtc_resume(struct device *dev)
{ … }
static SIMPLE_DEV_PM_OPS(xgene_rtc_pm_ops, xgene_rtc_suspend, xgene_rtc_resume);
#ifdef CONFIG_OF
static const struct of_device_id xgene_rtc_of_match[] = …;
MODULE_DEVICE_TABLE(of, xgene_rtc_of_match);
#endif
static struct platform_driver xgene_rtc_driver = …;
module_platform_driver(…) …;
MODULE_DESCRIPTION(…) …;
MODULE_AUTHOR(…) …;
MODULE_LICENSE(…) …;