#include <linux/bcd.h>
#include <linux/delay.h>
#include <linux/device.h>
#include <linux/errno.h>
#include <linux/init.h>
#include <linux/kernel.h>
#include <linux/string.h>
#include <linux/slab.h>
#include <linux/rtc.h>
#include <linux/workqueue.h>
#include <linux/spi/spi.h>
#include <linux/module.h>
#define RS5C348_REG_SECS …
#define RS5C348_REG_MINS …
#define RS5C348_REG_HOURS …
#define RS5C348_REG_WDAY …
#define RS5C348_REG_DAY …
#define RS5C348_REG_MONTH …
#define RS5C348_REG_YEAR …
#define RS5C348_REG_CTL1 …
#define RS5C348_REG_CTL2 …
#define RS5C348_SECS_MASK …
#define RS5C348_MINS_MASK …
#define RS5C348_HOURS_MASK …
#define RS5C348_WDAY_MASK …
#define RS5C348_DAY_MASK …
#define RS5C348_MONTH_MASK …
#define RS5C348_BIT_PM …
#define RS5C348_BIT_Y2K …
#define RS5C348_BIT_24H …
#define RS5C348_BIT_XSTP …
#define RS5C348_BIT_VDET …
#define RS5C348_CMD_W(addr) …
#define RS5C348_CMD_R(addr) …
#define RS5C348_CMD_MW(addr) …
#define RS5C348_CMD_MR(addr) …
struct rs5c348_plat_data { … };
static int
rs5c348_rtc_set_time(struct device *dev, struct rtc_time *tm)
{ … }
static int
rs5c348_rtc_read_time(struct device *dev, struct rtc_time *tm)
{ … }
static const struct rtc_class_ops rs5c348_rtc_ops = …;
static int rs5c348_probe(struct spi_device *spi)
{ … }
static struct spi_driver rs5c348_driver = …;
module_spi_driver(…) …;
MODULE_AUTHOR(…) …;
MODULE_DESCRIPTION(…) …;
MODULE_LICENSE(…) …;
MODULE_ALIAS(…) …;