diff options
author | Jean Delvare <khali@linux-fr.org> | 2010-10-28 20:31:47 +0200 |
---|---|---|
committer | Jean Delvare <khali@endymion.delvare> | 2010-10-28 20:31:47 +0200 |
commit | 02728ffef9c2cf067e654e832b8c282a8a4d0b16 (patch) | |
tree | 00da2e02471413e8698cd5de3258329b5f03e1db /drivers/hwmon/w83795.c | |
parent | 54891a3c135b30ca0718dbf81f78260795a5b2fe (diff) |
hwmon: (w83795) Rework beep_enable implementation
Handle beep_enable just like all other beep bits. It doesn't need
anything special, so let's avoid redundant code. This also saves a
duplicate register read at initialization time.
Signed-off-by: Jean Delvare <khali@linux-fr.org>
Diffstat (limited to 'drivers/hwmon/w83795.c')
-rw-r--r-- | drivers/hwmon/w83795.c | 40 |
1 files changed, 2 insertions, 38 deletions
diff --git a/drivers/hwmon/w83795.c b/drivers/hwmon/w83795.c index b360696f241..fd70a7b4629 100644 --- a/drivers/hwmon/w83795.c +++ b/drivers/hwmon/w83795.c @@ -398,7 +398,6 @@ struct w83795_data { u8 alarms[6]; /* Register value */ u8 beeps[6]; /* Register value */ - u8 beep_enable; char valid; }; @@ -616,39 +615,6 @@ store_beep(struct device *dev, struct device_attribute *attr, return count; } -static ssize_t -show_beep_enable(struct device *dev, struct device_attribute *attr, char *buf) -{ - struct i2c_client *client = to_i2c_client(dev); - struct w83795_data *data = i2c_get_clientdata(client); - return sprintf(buf, "%u\n", data->beep_enable); -} - -static ssize_t -store_beep_enable(struct device *dev, struct device_attribute *attr, - const char *buf, size_t count) -{ - struct i2c_client *client = to_i2c_client(dev); - struct w83795_data *data = i2c_get_clientdata(client); - unsigned long val; - u8 tmp; - - if (strict_strtoul(buf, 10, &val) < 0) - return -EINVAL; - if (val != 0 && val != 1) - return -EINVAL; - - mutex_lock(&data->update_lock); - data->beep_enable = val; - tmp = w83795_read(client, W83795_REG_BEEP(5)); - tmp &= 0x7f; - tmp |= val << 7; - w83795_write(client, W83795_REG_BEEP(5), tmp); - mutex_unlock(&data->update_lock); - - return count; -} - /* Write any value to clear chassis alarm */ static ssize_t store_chassis_clear(struct device *dev, @@ -1689,8 +1655,8 @@ static const struct sensor_device_attribute_2 w83795_pwm[][7] = { static const struct sensor_device_attribute_2 sda_single_files[] = { SENSOR_ATTR_2(chassis, S_IWUSR | S_IRUGO, show_alarm_beep, store_chassis_clear, ALARM_STATUS, 46), - SENSOR_ATTR_2(beep_enable, S_IWUSR | S_IRUGO, show_beep_enable, - store_beep_enable, NOT_USED, NOT_USED), + SENSOR_ATTR_2(beep_enable, S_IWUSR | S_IRUGO, show_alarm_beep, + store_beep, BEEP_ENABLE, 47), SENSOR_ATTR_2(speed_cruise_tolerance, S_IWUSR | S_IRUGO, show_fanin, store_fanin, FANIN_TOL, NOT_USED), SENSOR_ATTR_2(pwm_default, S_IWUSR | S_IRUGO, show_sf_setup, @@ -2136,8 +2102,6 @@ static int w83795_probe(struct i2c_client *client, data->alarms[i] = w83795_read(client, W83795_REG_ALARM(i)); data->beeps[i] = w83795_read(client, W83795_REG_BEEP(i)); } - data->beep_enable = - (w83795_read(client, W83795_REG_BEEP(5)) >> 7) & 0x01; err = w83795_handle_files(dev, device_create_file); if (err) |