#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/of.h>
#include <linux/string.h>
#include <linux/slab.h>
#include <linux/rtc.h>
#include <linux/spi/spi.h>
#include <linux/module.h>
#include <linux/regmap.h>
#define PCF2123_REG_CTRL1 …
#define PCF2123_REG_CTRL2 …
#define PCF2123_REG_SC …
#define PCF2123_REG_MN …
#define PCF2123_REG_HR …
#define PCF2123_REG_DM …
#define PCF2123_REG_DW …
#define PCF2123_REG_MO …
#define PCF2123_REG_YR …
#define PCF2123_REG_ALRM_MN …
#define PCF2123_REG_ALRM_HR …
#define PCF2123_REG_ALRM_DM …
#define PCF2123_REG_ALRM_DW …
#define PCF2123_REG_OFFSET …
#define PCF2123_REG_TMR_CLKOUT …
#define PCF2123_REG_CTDWN_TMR …
#define CTRL1_CLEAR …
#define CTRL1_CORR_INT …
#define CTRL1_12_HOUR …
#define CTRL1_SW_RESET …
#define CTRL1_STOP …
#define CTRL1_EXT_TEST …
#define CTRL2_TIE …
#define CTRL2_AIE …
#define CTRL2_TF …
#define CTRL2_AF …
#define CTRL2_TI_TP …
#define CTRL2_MSF …
#define CTRL2_SI …
#define CTRL2_MI …
#define OSC_HAS_STOPPED …
#define ALRM_DISABLE …
#define CD_TMR_4096KHZ …
#define CD_TMR_64HZ …
#define CD_TMR_1HZ …
#define CD_TMR_60th_HZ …
#define CD_TMR_TE …
#define OFFSET_SIGN_BIT …
#define OFFSET_COARSE …
#define OFFSET_STEP …
#define OFFSET_MASK …
#define PCF2123_WRITE …
#define PCF2123_READ …
static struct spi_driver pcf2123_driver;
struct pcf2123_data { … };
static const struct regmap_config pcf2123_regmap_config = …;
static int pcf2123_read_offset(struct device *dev, long *offset)
{ … }
static int pcf2123_set_offset(struct device *dev, long offset)
{ … }
static int pcf2123_rtc_read_time(struct device *dev, struct rtc_time *tm)
{ … }
static int pcf2123_rtc_set_time(struct device *dev, struct rtc_time *tm)
{ … }
static int pcf2123_rtc_alarm_irq_enable(struct device *dev, unsigned int en)
{ … }
static int pcf2123_rtc_read_alarm(struct device *dev, struct rtc_wkalrm *alm)
{ … }
static int pcf2123_rtc_set_alarm(struct device *dev, struct rtc_wkalrm *alm)
{ … }
static irqreturn_t pcf2123_rtc_irq(int irq, void *dev)
{ … }
static int pcf2123_reset(struct device *dev)
{ … }
static const struct rtc_class_ops pcf2123_rtc_ops = …;
static int pcf2123_probe(struct spi_device *spi)
{ … }
#ifdef CONFIG_OF
static const struct of_device_id pcf2123_dt_ids[] = …;
MODULE_DEVICE_TABLE(of, pcf2123_dt_ids);
#endif
static const struct spi_device_id pcf2123_spi_ids[] = …;
MODULE_DEVICE_TABLE(spi, pcf2123_spi_ids);
static struct spi_driver pcf2123_driver = …;
module_spi_driver(…) …;
MODULE_AUTHOR(…) …;
MODULE_DESCRIPTION(…) …;
MODULE_LICENSE(…) …;