Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 280575
b: refs/heads/master
c: 4fd826e
h: refs/heads/master
i:
  280573: 642eec1
  280571: 9e34b2a
  280567: e9b9c61
  280559: 5e1265c
  280543: 5dd07a2
  280511: 980febf
  280447: 5ac51c9
  280319: 3f3315a
  280063: 1c30545
  279551: 8a264bc
  278527: 60182f3
v: v3
  • Loading branch information
Guenter Roeck committed Jan 5, 2012
1 parent 2ec3a0a commit cd71a68
Show file tree
Hide file tree
Showing 2 changed files with 69 additions and 19 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: 56badacb922ac6117c8231716265301118b22b17
refs/heads/master: 4fd826ef97867a6e2ea53b089b3890d8914e9606
86 changes: 68 additions & 18 deletions trunk/drivers/hwmon/f75375s.c
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
* Datasheets available at:
*
* f75375:
* http://www.fintek.com.tw/files/productfiles/F75375_V026P.pdf
* http://www.fintek.com.tw/files/productfiles/F75375_V026P.pdf
*
* f75373:
* http://www.fintek.com.tw/files/productfiles/F75373_V025P.pdf
Expand Down Expand Up @@ -146,8 +146,8 @@ static inline int f75375_read8(struct i2c_client *client, u8 reg)
/* in most cases, should be called while holding update_lock */
static inline u16 f75375_read16(struct i2c_client *client, u8 reg)
{
return ((i2c_smbus_read_byte_data(client, reg) << 8)
| i2c_smbus_read_byte_data(client, reg + 1));
return (i2c_smbus_read_byte_data(client, reg) << 8)
| i2c_smbus_read_byte_data(client, reg + 1);
}

static inline void f75375_write8(struct i2c_client *client, u8 reg,
Expand Down Expand Up @@ -226,14 +226,14 @@ static inline u16 rpm_from_reg(u16 reg)
{
if (reg == 0 || reg == 0xffff)
return 0;
return (1500000 / reg);
return 1500000 / reg;
}

static inline u16 rpm_to_reg(int rpm)
{
if (rpm < 367 || rpm > 0xffff)
return 0xffff;
return (1500000 / rpm);
return 1500000 / rpm;
}

static ssize_t set_fan_min(struct device *dev, struct device_attribute *attr,
Expand All @@ -242,7 +242,12 @@ static ssize_t set_fan_min(struct device *dev, struct device_attribute *attr,
int nr = to_sensor_dev_attr(attr)->index;
struct i2c_client *client = to_i2c_client(dev);
struct f75375_data *data = i2c_get_clientdata(client);
int val = simple_strtoul(buf, NULL, 10);
unsigned long val;
int err;

err = kstrtoul(buf, 10, &val);
if (err < 0)
return err;

mutex_lock(&data->update_lock);
data->fan_min[nr] = rpm_to_reg(val);
Expand All @@ -257,7 +262,12 @@ static ssize_t set_fan_exp(struct device *dev, struct device_attribute *attr,
int nr = to_sensor_dev_attr(attr)->index;
struct i2c_client *client = to_i2c_client(dev);
struct f75375_data *data = i2c_get_clientdata(client);
int val = simple_strtoul(buf, NULL, 10);
unsigned long val;
int err;

err = kstrtoul(buf, 10, &val);
if (err < 0)
return err;

mutex_lock(&data->update_lock);
data->fan_exp[nr] = rpm_to_reg(val);
Expand All @@ -272,7 +282,12 @@ static ssize_t set_pwm(struct device *dev, struct device_attribute *attr,
int nr = to_sensor_dev_attr(attr)->index;
struct i2c_client *client = to_i2c_client(dev);
struct f75375_data *data = i2c_get_clientdata(client);
int val = simple_strtoul(buf, NULL, 10);
unsigned long val;
int err;

err = kstrtoul(buf, 10, &val);
if (err < 0)
return err;

mutex_lock(&data->update_lock);
data->pwm[nr] = SENSORS_LIMIT(val, 0, 255);
Expand Down Expand Up @@ -327,8 +342,12 @@ static ssize_t set_pwm_enable(struct device *dev, struct device_attribute *attr,
int nr = to_sensor_dev_attr(attr)->index;
struct i2c_client *client = to_i2c_client(dev);
struct f75375_data *data = i2c_get_clientdata(client);
int val = simple_strtoul(buf, NULL, 10);
int err = 0;
unsigned long val;
int err;

err = kstrtoul(buf, 10, &val);
if (err < 0)
return err;

mutex_lock(&data->update_lock);
err = set_pwm_enable_direct(client, nr, val);
Expand All @@ -342,8 +361,13 @@ static ssize_t set_pwm_mode(struct device *dev, struct device_attribute *attr,
int nr = to_sensor_dev_attr(attr)->index;
struct i2c_client *client = to_i2c_client(dev);
struct f75375_data *data = i2c_get_clientdata(client);
int val = simple_strtoul(buf, NULL, 10);
u8 conf = 0;
unsigned long val;
int err;
u8 conf;

err = kstrtoul(buf, 10, &val);
if (err < 0)
return err;

if (!(val == 0 || val == 1))
return -EINVAL;
Expand Down Expand Up @@ -410,7 +434,13 @@ static ssize_t set_in_max(struct device *dev, struct device_attribute *attr,
int nr = to_sensor_dev_attr(attr)->index;
struct i2c_client *client = to_i2c_client(dev);
struct f75375_data *data = i2c_get_clientdata(client);
int val = simple_strtoul(buf, NULL, 10);
unsigned long val;
int err;

err = kstrtoul(buf, 10, &val);
if (err < 0)
return err;

val = SENSORS_LIMIT(VOLT_TO_REG(val), 0, 0xff);
mutex_lock(&data->update_lock);
data->in_max[nr] = val;
Expand All @@ -425,7 +455,13 @@ static ssize_t set_in_min(struct device *dev, struct device_attribute *attr,
int nr = to_sensor_dev_attr(attr)->index;
struct i2c_client *client = to_i2c_client(dev);
struct f75375_data *data = i2c_get_clientdata(client);
int val = simple_strtoul(buf, NULL, 10);
unsigned long val;
int err;

err = kstrtoul(buf, 10, &val);
if (err < 0)
return err;

val = SENSORS_LIMIT(VOLT_TO_REG(val), 0, 0xff);
mutex_lock(&data->update_lock);
data->in_min[nr] = val;
Expand Down Expand Up @@ -466,7 +502,13 @@ static ssize_t set_temp_max(struct device *dev, struct device_attribute *attr,
int nr = to_sensor_dev_attr(attr)->index;
struct i2c_client *client = to_i2c_client(dev);
struct f75375_data *data = i2c_get_clientdata(client);
int val = simple_strtol(buf, NULL, 10);
unsigned long val;
int err;

err = kstrtoul(buf, 10, &val);
if (err < 0)
return err;

val = SENSORS_LIMIT(TEMP_TO_REG(val), 0, 127);
mutex_lock(&data->update_lock);
data->temp_high[nr] = val;
Expand All @@ -481,7 +523,13 @@ static ssize_t set_temp_max_hyst(struct device *dev,
int nr = to_sensor_dev_attr(attr)->index;
struct i2c_client *client = to_i2c_client(dev);
struct f75375_data *data = i2c_get_clientdata(client);
int val = simple_strtol(buf, NULL, 10);
unsigned long val;
int err;

err = kstrtoul(buf, 10, &val);
if (err < 0)
return err;

val = SENSORS_LIMIT(TEMP_TO_REG(val), 0, 127);
mutex_lock(&data->update_lock);
data->temp_max_hyst[nr] = val;
Expand Down Expand Up @@ -624,14 +672,16 @@ static int f75375_probe(struct i2c_client *client,
if (!i2c_check_functionality(client->adapter,
I2C_FUNC_SMBUS_BYTE_DATA))
return -EIO;
if (!(data = kzalloc(sizeof(struct f75375_data), GFP_KERNEL)))
data = kzalloc(sizeof(struct f75375_data), GFP_KERNEL);
if (!data)
return -ENOMEM;

i2c_set_clientdata(client, data);
mutex_init(&data->update_lock);
data->kind = id->driver_data;

if ((err = sysfs_create_group(&client->dev.kobj, &f75375_group)))
err = sysfs_create_group(&client->dev.kobj, &f75375_group);
if (err)
goto exit_free;

if (data->kind == f75375) {
Expand Down

0 comments on commit cd71a68

Please sign in to comment.