From d078526eff158b9441890c2441a56b3db752fe34 Mon Sep 17 00:00:00 2001 From: Jean Delvare Date: Mon, 3 Dec 2007 23:28:42 +0100 Subject: [PATCH] --- yaml --- r: 84535 b: refs/heads/master c: 455f791ea3e33a274c098b4a8c2e35d4d1a6d518 h: refs/heads/master i: 84533: 83cbc9974713ef9cea9cac50bd97d62d87b683e7 84531: 85f77bb92e6882205c23dc67a2fc6e59c24875f5 84527: 1344c196693a4b70049dc42434938408077f584c v: v3 --- [refs] | 2 +- trunk/drivers/hwmon/lm85.c | 40 ++++++++++++++++++++++++++++++++++++-- 2 files changed, 39 insertions(+), 3 deletions(-) diff --git a/[refs] b/[refs] index bfe9f926090a..4b4b54ab0e97 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 4b4df95dccdd2c6a573c9dedefb747ed663c074d +refs/heads/master: 455f791ea3e33a274c098b4a8c2e35d4d1a6d518 diff --git a/trunk/drivers/hwmon/lm85.c b/trunk/drivers/hwmon/lm85.c index 194b8fb52f0e..9f1c6f1ee035 100644 --- a/trunk/drivers/hwmon/lm85.c +++ b/trunk/drivers/hwmon/lm85.c @@ -536,11 +536,47 @@ static ssize_t show_pwm_enable(struct device *dev, struct device_attribute return sprintf(buf, "%d\n", enable); } +static ssize_t set_pwm_enable(struct device *dev, struct device_attribute + *attr, const char *buf, size_t count) +{ + int nr = to_sensor_dev_attr(attr)->index; + struct i2c_client *client = to_i2c_client(dev); + struct lm85_data *data = i2c_get_clientdata(client); + long val = simple_strtol(buf, NULL, 10); + u8 config; + + switch (val) { + case 0: + config = 3; + break; + case 1: + config = 7; + break; + case 2: + /* Here we have to choose arbitrarily one of the 5 possible + configurations; I go for the safest */ + config = 6; + break; + default: + return -EINVAL; + } + + mutex_lock(&data->update_lock); + data->autofan[nr].config = lm85_read_value(client, + LM85_REG_AFAN_CONFIG(nr)); + data->autofan[nr].config = (data->autofan[nr].config & ~0xe0) + | (config << 5); + lm85_write_value(client, LM85_REG_AFAN_CONFIG(nr), + data->autofan[nr].config); + mutex_unlock(&data->update_lock); + return count; +} + #define show_pwm_reg(offset) \ static SENSOR_DEVICE_ATTR(pwm##offset, S_IRUGO | S_IWUSR, \ show_pwm, set_pwm, offset - 1); \ -static SENSOR_DEVICE_ATTR(pwm##offset##_enable, S_IRUGO, \ - show_pwm_enable, NULL, offset - 1) +static SENSOR_DEVICE_ATTR(pwm##offset##_enable, S_IRUGO | S_IWUSR, \ + show_pwm_enable, set_pwm_enable, offset - 1) show_pwm_reg(1); show_pwm_reg(2);