Commit 0d5cc938 authored by Guenter Roeck's avatar Guenter Roeck
Browse files

hwmon: (max6650) Simplify alarm handling



Instead of re-reading the alarm register after reporting an alarm,
mark cached values as invalid. While this results in always reading all
data on subsequent reads, it is quite unlikely that such reads will
actually happen before the cache times out. The upside is avoiding
unnecessary unconditional i2c read operations.

Cc: Jean-Francois Dagenais <jeff.dagenais@gmail.com>
Signed-off-by: default avatarGuenter Roeck <linux@roeck-us.net>
parent f5b20b11
Loading
Loading
Loading
Loading
+3 −6
Original line number Diff line number Diff line
@@ -512,15 +512,12 @@ static ssize_t alarm_show(struct device *dev,
{
	struct sensor_device_attribute *attr = to_sensor_dev_attr(devattr);
	struct max6650_data *data = max6650_update_device(dev);
	struct i2c_client *client = data->client;
	int alarm = 0;
	bool alarm = data->alarm & attr->index;

	if (data->alarm & attr->index) {
	if (alarm) {
		mutex_lock(&data->update_lock);
		alarm = 1;
		data->alarm &= ~attr->index;
		data->alarm |= i2c_smbus_read_byte_data(client,
							MAX6650_REG_ALARM);
		data->valid = false;
		mutex_unlock(&data->update_lock);
	}