#include <linux/module.h>
#include <linux/jiffies.h>
#include <linux/hwmon-sysfs.h>
#include <linux/interrupt.h>
#define ADT7X10_STAT_T_LOW (1 << 4)
#define ADT7X10_STAT_T_HIGH (1 << 5)
#define ADT7X10_STAT_T_CRIT (1 << 6)
#define ADT7X10_STAT_NOT_RDY (1 << 7)
#define ADT7X10_FAULT_QUEUE_MASK (1 << 0 | 1 << 1)
#define ADT7X10_CT_POLARITY (1 << 2)
#define ADT7X10_INT_POLARITY (1 << 3)
#define ADT7X10_EVENT_MODE (1 << 4)
#define ADT7X10_MODE_MASK (1 << 5 | 1 << 6)
#define ADT7X10_FULL (0 << 5 | 0 << 6)
#define ADT7X10_PD (1 << 5 | 1 << 6)
#define ADT7X10_RESOLUTION (1 << 7)
#define ADT7X10_T13_VALUE_MASK 0xFFF8
#define ADT7X10_T_HYST_MASK 0xF
#define ADT7X10_TEMP_MIN (-55000)
#define ADT7X10_TEMP_MAX 150000
const struct adt7x10_ops *ops;
struct device *hwmon_dev;
struct mutex update_lock;
unsigned long last_updated;
static int adt7x10_read_byte(struct device *dev, u8 reg)
struct adt7x10_data *d = dev_get_drvdata(dev);
return d->ops->read_byte(dev, reg);
static int adt7x10_write_byte(struct device *dev, u8 reg, u8 data)