#include <linux/bcd.h>
#include <linux/bitfield.h>
#include <linux/i2c.h>
#include <linux/module.h>
#include <linux/regmap.h>
#include <linux/rtc.h>
#include <linux/of.h>
#include <linux/pm_wakeirq.h>
#define PCF8523_REG_CONTROL1 …
#define PCF8523_CONTROL1_CAP_SEL …
#define PCF8523_CONTROL1_STOP …
#define PCF8523_CONTROL1_AIE …
#define PCF8523_REG_CONTROL2 …
#define PCF8523_CONTROL2_AF …
#define PCF8523_REG_CONTROL3 …
#define PCF8523_CONTROL3_PM …
#define PCF8523_PM_STANDBY …
#define PCF8523_CONTROL3_BLF …
#define PCF8523_CONTROL3_BSF …
#define PCF8523_REG_SECONDS …
#define PCF8523_SECONDS_OS …
#define PCF8523_REG_MINUTES …
#define PCF8523_REG_HOURS …
#define PCF8523_REG_DAYS …
#define PCF8523_REG_WEEKDAYS …
#define PCF8523_REG_MONTHS …
#define PCF8523_REG_YEARS …
#define PCF8523_REG_MINUTE_ALARM …
#define PCF8523_REG_HOUR_ALARM …
#define PCF8523_REG_DAY_ALARM …
#define PCF8523_REG_WEEKDAY_ALARM …
#define ALARM_DIS …
#define PCF8523_REG_OFFSET …
#define PCF8523_OFFSET_MODE …
#define PCF8523_TMR_CLKOUT_CTRL …
struct pcf8523 { … };
static int pcf8523_load_capacitance(struct pcf8523 *pcf8523, struct device_node *node)
{ … }
static irqreturn_t pcf8523_irq(int irq, void *dev_id)
{ … }
static int pcf8523_rtc_read_time(struct device *dev, struct rtc_time *tm)
{ … }
static int pcf8523_rtc_set_time(struct device *dev, struct rtc_time *tm)
{ … }
static int pcf8523_rtc_read_alarm(struct device *dev, struct rtc_wkalrm *tm)
{ … }
static int pcf8523_irq_enable(struct device *dev, unsigned int enabled)
{ … }
static int pcf8523_rtc_set_alarm(struct device *dev, struct rtc_wkalrm *tm)
{ … }
static int pcf8523_param_get(struct device *dev, struct rtc_param *param)
{ … }
static int pcf8523_param_set(struct device *dev, struct rtc_param *param)
{ … }
static int pcf8523_rtc_ioctl(struct device *dev, unsigned int cmd,
unsigned long arg)
{ … }
static int pcf8523_rtc_read_offset(struct device *dev, long *offset)
{ … }
static int pcf8523_rtc_set_offset(struct device *dev, long offset)
{ … }
#ifdef CONFIG_PM_SLEEP
static int pcf8523_suspend(struct device *dev)
{ … }
static int pcf8523_resume(struct device *dev)
{ … }
#endif
static SIMPLE_DEV_PM_OPS(pcf8523_pm, pcf8523_suspend, pcf8523_resume);
static const struct rtc_class_ops pcf8523_rtc_ops = …;
static const struct regmap_config regmap_config = …;
static int pcf8523_probe(struct i2c_client *client)
{ … }
static const struct i2c_device_id pcf8523_id[] = …;
MODULE_DEVICE_TABLE(i2c, pcf8523_id);
static const struct of_device_id pcf8523_of_match[] = …;
MODULE_DEVICE_TABLE(of, pcf8523_of_match);
static struct i2c_driver pcf8523_driver = …;
module_i2c_driver(…) …;
MODULE_AUTHOR(…) …;
MODULE_DESCRIPTION(…) …;
MODULE_LICENSE(…) …;