hwmon: (adm9240) Rely on subsystem locking
Attribute access is now serialized in the hardware monitoring core, so locking in the driver code is no longer necessary. Drop it. Signed-off-by: Guenter Roeck <linux@roeck-us.net>pull/1354/merge
parent
e9b64fae44
commit
5dd26b6924
|
|
@ -37,7 +37,6 @@
|
|||
#include <linux/hwmon.h>
|
||||
#include <linux/hwmon-vid.h>
|
||||
#include <linux/err.h>
|
||||
#include <linux/mutex.h>
|
||||
#include <linux/regmap.h>
|
||||
|
||||
/* Addresses to scan */
|
||||
|
|
@ -125,7 +124,6 @@ static inline unsigned int AOUT_FROM_REG(u8 reg)
|
|||
struct adm9240_data {
|
||||
struct device *dev;
|
||||
struct regmap *regmap;
|
||||
struct mutex update_lock;
|
||||
|
||||
u8 fan_div[2]; /* rw fan1_div, read-only accessor */
|
||||
u8 vrm; /* -- vrm set on startup, no accessor */
|
||||
|
|
@ -170,8 +168,6 @@ static int adm9240_fan_min_write(struct adm9240_data *data, int channel, long va
|
|||
u8 fan_min;
|
||||
int err;
|
||||
|
||||
mutex_lock(&data->update_lock);
|
||||
|
||||
if (!val) {
|
||||
fan_min = 255;
|
||||
new_div = data->fan_div[channel];
|
||||
|
|
@ -206,8 +202,6 @@ static int adm9240_fan_min_write(struct adm9240_data *data, int channel, long va
|
|||
}
|
||||
err = regmap_write(data->regmap, ADM9240_REG_FAN_MIN(channel), fan_min);
|
||||
|
||||
mutex_unlock(&data->update_lock);
|
||||
|
||||
return err;
|
||||
}
|
||||
|
||||
|
|
@ -501,23 +495,17 @@ static int adm9240_fan_read(struct device *dev, u32 attr, int channel, long *val
|
|||
|
||||
switch (attr) {
|
||||
case hwmon_fan_input:
|
||||
mutex_lock(&data->update_lock);
|
||||
err = regmap_read(data->regmap, ADM9240_REG_FAN(channel), ®val);
|
||||
if (err < 0) {
|
||||
mutex_unlock(&data->update_lock);
|
||||
if (err < 0)
|
||||
return err;
|
||||
}
|
||||
if (regval == 255 && data->fan_div[channel] < 3) {
|
||||
/* adjust fan clock divider on overflow */
|
||||
err = adm9240_write_fan_div(data, channel,
|
||||
++data->fan_div[channel]);
|
||||
if (err) {
|
||||
mutex_unlock(&data->update_lock);
|
||||
if (err)
|
||||
return err;
|
||||
}
|
||||
}
|
||||
*val = FAN_FROM_REG(regval, BIT(data->fan_div[channel]));
|
||||
mutex_unlock(&data->update_lock);
|
||||
break;
|
||||
case hwmon_fan_div:
|
||||
*val = BIT(data->fan_div[channel]);
|
||||
|
|
@ -791,7 +779,6 @@ static int adm9240_probe(struct i2c_client *client)
|
|||
return -ENOMEM;
|
||||
|
||||
data->dev = dev;
|
||||
mutex_init(&data->update_lock);
|
||||
data->regmap = devm_regmap_init_i2c(client, &adm9240_regmap_config);
|
||||
if (IS_ERR(data->regmap))
|
||||
return PTR_ERR(data->regmap);
|
||||
|
|
|
|||
Loading…
Reference in New Issue