aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--drivers/hwmon/w83795.c13
1 files changed, 10 insertions, 3 deletions
diff --git a/drivers/hwmon/w83795.c b/drivers/hwmon/w83795.c
index b45416011c2a..62deffcc64a3 100644
--- a/drivers/hwmon/w83795.c
+++ b/drivers/hwmon/w83795.c
@@ -55,6 +55,7 @@ MODULE_PARM_DESC(reset, "Set to 1 to reset chip, not recommended");
55#define W83795_REG_I2C_ADDR 0xfc 55#define W83795_REG_I2C_ADDR 0xfc
56#define W83795_REG_CONFIG 0x01 56#define W83795_REG_CONFIG 0x01
57#define W83795_REG_CONFIG_CONFIG48 0x04 57#define W83795_REG_CONFIG_CONFIG48 0x04
58#define W83795_REG_CONFIG_START 0x01
58 59
59/* Multi-Function Pin Ctrl Registers */ 60/* Multi-Function Pin Ctrl Registers */
60#define W83795_REG_VOLT_CTRL1 0x02 61#define W83795_REG_VOLT_CTRL1 0x02
@@ -1664,12 +1665,18 @@ static const struct sensor_device_attribute_2 sda_single_files[] = {
1664 1665
1665static void w83795_init_client(struct i2c_client *client) 1666static void w83795_init_client(struct i2c_client *client)
1666{ 1667{
1668 u8 config;
1669
1667 if (reset) 1670 if (reset)
1668 w83795_write(client, W83795_REG_CONFIG, 0x80); 1671 w83795_write(client, W83795_REG_CONFIG, 0x80);
1669 1672
1670 /* Start monitoring */ 1673 /* Start monitoring if needed */
1671 w83795_write(client, W83795_REG_CONFIG, 1674 config = w83795_read(client, W83795_REG_CONFIG);
1672 w83795_read(client, W83795_REG_CONFIG) | 0x01); 1675 if (!(config & W83795_REG_CONFIG_START)) {
1676 dev_info(&client->dev, "Enabling monitoring operations\n");
1677 w83795_write(client, W83795_REG_CONFIG,
1678 config | W83795_REG_CONFIG_START);
1679 }
1673} 1680}
1674 1681
1675static int w83795_get_device_id(struct i2c_client *client) 1682static int w83795_get_device_id(struct i2c_client *client)