#include <linux/module.h>
#include <linux/i2c.h>
#include <linux/string.h>
#include <linux/list.h>
#include <linux/nvmem-provider.h>
#include <linux/sysfs.h>
#include <linux/ctype.h>
#include <linux/hwmon-sysfs.h>
#define DS1682_REG_CONFIG …
#define DS1682_REG_ALARM …
#define DS1682_REG_ELAPSED …
#define DS1682_REG_EVT_CNTR …
#define DS1682_REG_EEPROM …
#define DS1682_REG_RESET …
#define DS1682_REG_WRITE_DISABLE …
#define DS1682_REG_WRITE_MEM_DISABLE …
#define DS1682_EEPROM_SIZE …
static ssize_t ds1682_show(struct device *dev, struct device_attribute *attr,
char *buf)
{ … }
static ssize_t ds1682_store(struct device *dev, struct device_attribute *attr,
const char *buf, size_t count)
{ … }
static SENSOR_DEVICE_ATTR_2(elapsed_time, S_IRUGO | S_IWUSR, ds1682_show,
ds1682_store, 4, DS1682_REG_ELAPSED);
static SENSOR_DEVICE_ATTR_2(alarm_time, S_IRUGO | S_IWUSR, ds1682_show,
ds1682_store, 4, DS1682_REG_ALARM);
static SENSOR_DEVICE_ATTR_2(event_count, S_IRUGO | S_IWUSR, ds1682_show,
ds1682_store, 2, DS1682_REG_EVT_CNTR);
static const struct attribute_group ds1682_group = …;
static ssize_t ds1682_eeprom_read(struct file *filp, struct kobject *kobj,
struct bin_attribute *attr,
char *buf, loff_t off, size_t count)
{ … }
static ssize_t ds1682_eeprom_write(struct file *filp, struct kobject *kobj,
struct bin_attribute *attr,
char *buf, loff_t off, size_t count)
{ … }
static const struct bin_attribute ds1682_eeprom_attr = …;
static int ds1682_nvmem_read(void *priv, unsigned int offset, void *val,
size_t bytes)
{ … }
static int ds1682_nvmem_write(void *priv, unsigned int offset, void *val,
size_t bytes)
{ … }
static int ds1682_probe(struct i2c_client *client)
{ … }
static void ds1682_remove(struct i2c_client *client)
{ … }
static const struct i2c_device_id ds1682_id[] = …;
MODULE_DEVICE_TABLE(i2c, ds1682_id);
static const struct of_device_id ds1682_of_match[] = …;
MODULE_DEVICE_TABLE(of, ds1682_of_match);
static struct i2c_driver ds1682_driver = …;
module_i2c_driver(…) …;
MODULE_AUTHOR(…) …;
MODULE_DESCRIPTION(…) …;
MODULE_LICENSE(…) …;