#include <linux/module.h>
#include <linux/kernel.h>
#include <linux/time.h>
#include <linux/rtc.h>
#include <linux/bcd.h>
#include <linux/interrupt.h>
#include <linux/ioctl.h>
#include <linux/completion.h>
#include <linux/mfd/wm8350/rtc.h>
#include <linux/mfd/wm8350/core.h>
#include <linux/delay.h>
#include <linux/platform_device.h>
#define WM8350_SET_ALM_RETRIES …
#define WM8350_SET_TIME_RETRIES …
#define WM8350_GET_TIME_RETRIES …
static int wm8350_rtc_readtime(struct device *dev, struct rtc_time *tm)
{ … }
static int wm8350_rtc_settime(struct device *dev, struct rtc_time *tm)
{ … }
static int wm8350_rtc_readalarm(struct device *dev, struct rtc_wkalrm *alrm)
{ … }
static int wm8350_rtc_stop_alarm(struct wm8350 *wm8350)
{ … }
static int wm8350_rtc_start_alarm(struct wm8350 *wm8350)
{ … }
static int wm8350_rtc_alarm_irq_enable(struct device *dev,
unsigned int enabled)
{ … }
static int wm8350_rtc_setalarm(struct device *dev, struct rtc_wkalrm *alrm)
{ … }
static irqreturn_t wm8350_rtc_alarm_handler(int irq, void *data)
{ … }
static irqreturn_t wm8350_rtc_update_handler(int irq, void *data)
{ … }
static const struct rtc_class_ops wm8350_rtc_ops = …;
#ifdef CONFIG_PM_SLEEP
static int wm8350_rtc_suspend(struct device *dev)
{ … }
static int wm8350_rtc_resume(struct device *dev)
{ … }
#endif
static int wm8350_rtc_probe(struct platform_device *pdev)
{ … }
static void wm8350_rtc_remove(struct platform_device *pdev)
{ … }
static SIMPLE_DEV_PM_OPS(wm8350_rtc_pm_ops, wm8350_rtc_suspend,
wm8350_rtc_resume);
static struct platform_driver wm8350_rtc_driver = …;
module_platform_driver(…) …;
MODULE_AUTHOR(…) …;
MODULE_DESCRIPTION(…) …;
MODULE_LICENSE(…) …;
MODULE_ALIAS(…) …;