[patch 13/36] hwmon: (w83795) Only start monitoring if needed

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



This saves an SMBus write if monitoring was already enabled.

Signed-off-by: Jean Delvare <khali@xxxxxxxxxxxx>
---
 drivers/hwmon/w83795.c |   13 ++++++++++---
 1 file changed, 10 insertions(+), 3 deletions(-)

--- linux-2.6.36-rc4.orig/drivers/hwmon/w83795.c	2010-09-15 15:12:45.000000000 +0200
+++ linux-2.6.36-rc4/drivers/hwmon/w83795.c	2010-09-15 15:12:48.000000000 +0200
@@ -55,6 +55,7 @@ MODULE_PARM_DESC(reset, "Set to 1 to res
 #define W83795_REG_I2C_ADDR		0xfc
 #define W83795_REG_CONFIG		0x01
 #define W83795_REG_CONFIG_CONFIG48	0x04
+#define W83795_REG_CONFIG_START	0x01
 
 /* Multi-Function Pin Ctrl Registers */
 #define W83795_REG_VOLT_CTRL1		0x02
@@ -1664,12 +1665,18 @@ static const struct sensor_device_attrib
 
 static void w83795_init_client(struct i2c_client *client)
 {
+	u8 config;
+
 	if (reset)
 		w83795_write(client, W83795_REG_CONFIG, 0x80);
 
-	/* Start monitoring */
-	w83795_write(client, W83795_REG_CONFIG,
-		     w83795_read(client, W83795_REG_CONFIG) | 0x01);
+	/* 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,
+			     config | W83795_REG_CONFIG_START);
+	}
 }
 
 static int w83795_get_device_id(struct i2c_client *client)


_______________________________________________
lm-sensors mailing list
lm-sensors@xxxxxxxxxxxxxx
http://lists.lm-sensors.org/mailman/listinfo/lm-sensors


[Index of Archives]     [Linux Kernel]     [Linux Hardware Monitoring]     [Linux USB Devel]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [Yosemite Backpacking]

  Powered by Linux