#include <linux/module.h>
#include <linux/delay.h>
#include <linux/init.h>
#include <linux/slab.h>
#include <linux/jiffies.h>
#include <linux/i2c.h>
#include <linux/hwmon.h>
#include <linux/hwmon-sysfs.h>
#include <linux/err.h>
#include <linux/mutex.h>
#define MAX_RETRIES …
static const unsigned short normal_i2c[] = …;
#define W83L785TS_REG_MAN_ID1 …
#define W83L785TS_REG_MAN_ID2 …
#define W83L785TS_REG_CHIP_ID …
#define W83L785TS_REG_CONFIG …
#define W83L785TS_REG_TYPE …
#define W83L785TS_REG_TEMP …
#define W83L785TS_REG_TEMP_OVER …
#define TEMP_FROM_REG(val) …
static int w83l785ts_probe(struct i2c_client *client);
static int w83l785ts_detect(struct i2c_client *client,
struct i2c_board_info *info);
static void w83l785ts_remove(struct i2c_client *client);
static u8 w83l785ts_read_value(struct i2c_client *client, u8 reg, u8 defval);
static struct w83l785ts_data *w83l785ts_update_device(struct device *dev);
static const struct i2c_device_id w83l785ts_id[] = …;
MODULE_DEVICE_TABLE(i2c, w83l785ts_id);
static struct i2c_driver w83l785ts_driver = …;
struct w83l785ts_data { … };
static ssize_t show_temp(struct device *dev, struct device_attribute *devattr,
char *buf)
{ … }
static SENSOR_DEVICE_ATTR(temp1_input, S_IRUGO, show_temp, NULL, 0);
static SENSOR_DEVICE_ATTR(temp1_max, S_IRUGO, show_temp, NULL, 1);
static int w83l785ts_detect(struct i2c_client *client,
struct i2c_board_info *info)
{ … }
static int w83l785ts_probe(struct i2c_client *client)
{ … }
static void w83l785ts_remove(struct i2c_client *client)
{ … }
static u8 w83l785ts_read_value(struct i2c_client *client, u8 reg, u8 defval)
{ … }
static struct w83l785ts_data *w83l785ts_update_device(struct device *dev)
{ … }
module_i2c_driver(…) …;
MODULE_AUTHOR(…) …;
MODULE_DESCRIPTION(…) …;
MODULE_LICENSE(…) …;