hwmon: (max1619) Fix critical alarm display
authorGuenter Roeck <linux@roeck-us.net>
Sat, 19 Apr 2014 16:15:38 +0000 (09:15 -0700)
committerGuenter Roeck <linux@roeck-us.net>
Wed, 21 May 2014 23:02:25 +0000 (16:02 -0700)
The overtemperature status bit, which is used to display critical alarm status,
matches the output of the OVERT signal 1:1. If that signal is active-low, the
bit will read 1 if there is no alarm. It is therefore necessary to reverse
the bit in this case.

Signed-off-by: Guenter Roeck <linux@roeck-us.net>
drivers/hwmon/max1619.c

index 4c23afe..0927902 100644 (file)
@@ -325,6 +325,7 @@ static struct max1619_data *max1619_update_device(struct device *dev)
 {
        struct i2c_client *client = to_i2c_client(dev);
        struct max1619_data *data = i2c_get_clientdata(client);
+       int config;
 
        mutex_lock(&data->update_lock);
 
@@ -344,6 +345,10 @@ static struct max1619_data *max1619_update_device(struct device *dev)
                                        MAX1619_REG_R_TCRIT_HYST);
                data->alarms = i2c_smbus_read_byte_data(client,
                                        MAX1619_REG_R_STATUS);
+               /* If OVERT polarity is low, reverse alarm bit */
+               config = i2c_smbus_read_byte_data(client, MAX1619_REG_R_CONFIG);
+               if (!(config & 0x20))
+                       data->alarms ^= 0x02;
 
                data->last_updated = jiffies;
                data->valid = 1;