#include <linux/bcd.h>
#include <linux/init.h>
#include <linux/kernel.h>
#include <linux/gfp.h>
#include <linux/delay.h>
#include <linux/interrupt.h>
#include <linux/rtc.h>
#include <linux/platform_device.h>
#include <linux/io.h>
#include <linux/module.h>
#define DS1511_SEC …
#define DS1511_MIN …
#define DS1511_HOUR …
#define DS1511_DOW …
#define DS1511_DOM …
#define DS1511_MONTH …
#define DS1511_YEAR …
#define DS1511_CENTURY …
#define DS1511_AM1_SEC …
#define DS1511_AM2_MIN …
#define DS1511_AM3_HOUR …
#define DS1511_AM4_DATE …
#define DS1511_WD_MSEC …
#define DS1511_WD_SEC …
#define DS1511_CONTROL_A …
#define DS1511_CONTROL_B …
#define DS1511_RAMADDR_LSB …
#define DS1511_RAMDATA …
#define DS1511_BLF1 …
#define DS1511_BLF2 …
#define DS1511_PRS …
#define DS1511_PAB …
#define DS1511_TDF …
#define DS1511_KSF …
#define DS1511_WDF …
#define DS1511_IRQF …
#define DS1511_TE …
#define DS1511_CS …
#define DS1511_BME …
#define DS1511_TPE …
#define DS1511_TIE …
#define DS1511_KIE …
#define DS1511_WDE …
#define DS1511_WDS …
#define DS1511_RAM_MAX …
struct ds1511_data { … };
static DEFINE_SPINLOCK(ds1511_lock);
static __iomem char *ds1511_base;
static u32 reg_spacing = …;
static void rtc_write(uint8_t val, uint32_t reg)
{ … }
static uint8_t rtc_read(uint32_t reg)
{ … }
static void rtc_disable_update(void)
{ … }
static void rtc_enable_update(void)
{ … }
static int ds1511_rtc_set_time(struct device *dev, struct rtc_time *rtc_tm)
{ … }
static int ds1511_rtc_read_time(struct device *dev, struct rtc_time *rtc_tm)
{ … }
static void ds1511_rtc_alarm_enable(unsigned int enabled)
{ … }
static int ds1511_rtc_set_alarm(struct device *dev, struct rtc_wkalrm *alrm)
{ … }
static int ds1511_rtc_read_alarm(struct device *dev, struct rtc_wkalrm *alrm)
{ … }
static irqreturn_t ds1511_interrupt(int irq, void *dev_id)
{ … }
static int ds1511_rtc_alarm_irq_enable(struct device *dev, unsigned int enabled)
{ … }
static const struct rtc_class_ops ds1511_rtc_ops = …;
static int ds1511_nvram_read(void *priv, unsigned int pos, void *buf,
size_t size)
{ … }
static int ds1511_nvram_write(void *priv, unsigned int pos, void *buf,
size_t size)
{ … }
static int ds1511_rtc_probe(struct platform_device *pdev)
{ … }
MODULE_ALIAS(…) …;
static struct platform_driver ds1511_rtc_driver = …;
module_platform_driver(…) …;
MODULE_AUTHOR(…) …;
MODULE_DESCRIPTION(…) …;
MODULE_LICENSE(…) …;