#include <linux/bcd.h>
#include <linux/delay.h>
#include <linux/i2c.h>
#include <linux/module.h>
#include <linux/mutex.h>
#include <linux/nvmem-provider.h>
#include <linux/of.h>
#include <linux/rtc.h>
#include <linux/slab.h>
#define ISL12026_REG_PWR …
#define ISL12026_REG_PWR_BSW …
#define ISL12026_REG_PWR_SBIB …
#define ISL12026_REG_SC …
#define ISL12026_REG_HR …
#define ISL12026_REG_HR_MIL …
#define ISL12026_REG_SR …
#define ISL12026_REG_SR_RTCF …
#define ISL12026_REG_SR_WEL …
#define ISL12026_REG_SR_RWEL …
#define ISL12026_REG_SR_MBZ …
#define ISL12026_REG_SR_OSCF …
#define ISL12026_EEPROM_ADDR …
#define ISL12026_PAGESIZE …
#define ISL12026_NVMEM_WRITE_TIME …
struct isl12026 { … };
static int isl12026_read_reg(struct i2c_client *client, int reg)
{ … }
static int isl12026_arm_write(struct i2c_client *client)
{ … }
static int isl12026_disarm_write(struct i2c_client *client)
{ … }
static int isl12026_write_reg(struct i2c_client *client, int reg, u8 val)
{ … }
static int isl12026_rtc_set_time(struct device *dev, struct rtc_time *tm)
{ … }
static int isl12026_rtc_read_time(struct device *dev, struct rtc_time *tm)
{ … }
static const struct rtc_class_ops isl12026_rtc_ops = …;
static int isl12026_nvm_read(void *p, unsigned int offset,
void *val, size_t bytes)
{ … }
static int isl12026_nvm_write(void *p, unsigned int offset,
void *val, size_t bytes)
{ … }
static void isl12026_force_power_modes(struct i2c_client *client)
{ … }
static int isl12026_probe(struct i2c_client *client)
{ … }
static void isl12026_remove(struct i2c_client *client)
{ … }
static const struct of_device_id isl12026_dt_match[] = …;
MODULE_DEVICE_TABLE(of, isl12026_dt_match);
static struct i2c_driver isl12026_driver = …;
module_i2c_driver(…) …;
MODULE_DESCRIPTION(…) …;
MODULE_LICENSE(…) …;