Commit 80646b95 authored by Jean Delvare's avatar Jean Delvare Committed by Jean Delvare

hwmon: (w83795) Only start monitoring if needed

This saves an SMBus write if monitoring was already enabled.
Signed-off-by: default avatarJean Delvare <khali@linux-fr.org>
parent 86ef4d2f
...@@ -55,6 +55,7 @@ MODULE_PARM_DESC(reset, "Set to 1 to reset chip, not recommended"); ...@@ -55,6 +55,7 @@ MODULE_PARM_DESC(reset, "Set to 1 to reset chip, not recommended");
#define W83795_REG_I2C_ADDR 0xfc #define W83795_REG_I2C_ADDR 0xfc
#define W83795_REG_CONFIG 0x01 #define W83795_REG_CONFIG 0x01
#define W83795_REG_CONFIG_CONFIG48 0x04 #define W83795_REG_CONFIG_CONFIG48 0x04
#define W83795_REG_CONFIG_START 0x01
/* Multi-Function Pin Ctrl Registers */ /* Multi-Function Pin Ctrl Registers */
#define W83795_REG_VOLT_CTRL1 0x02 #define W83795_REG_VOLT_CTRL1 0x02
...@@ -1664,12 +1665,18 @@ static const struct sensor_device_attribute_2 sda_single_files[] = { ...@@ -1664,12 +1665,18 @@ static const struct sensor_device_attribute_2 sda_single_files[] = {
static void w83795_init_client(struct i2c_client *client) static void w83795_init_client(struct i2c_client *client)
{ {
u8 config;
if (reset) if (reset)
w83795_write(client, W83795_REG_CONFIG, 0x80); w83795_write(client, W83795_REG_CONFIG, 0x80);
/* Start monitoring */ /* Start monitoring if needed */
config = w83795_read(client, W83795_REG_CONFIG);
if (!(config & W83795_REG_CONFIG_START)) {
dev_info(&client->dev, "Enabling monitoring operations\n");
w83795_write(client, W83795_REG_CONFIG, w83795_write(client, W83795_REG_CONFIG,
w83795_read(client, W83795_REG_CONFIG) | 0x01); config | W83795_REG_CONFIG_START);
}
} }
static int w83795_get_device_id(struct i2c_client *client) static int w83795_get_device_id(struct i2c_client *client)
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment