mirror of
https://github.com/torvalds/linux.git
synced 2025-12-07 20:06:24 +00:00
hwmon: (tmp421) 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>
This commit is contained in:
@@ -19,7 +19,6 @@
|
||||
#include <linux/hwmon.h>
|
||||
#include <linux/hwmon-sysfs.h>
|
||||
#include <linux/err.h>
|
||||
#include <linux/mutex.h>
|
||||
#include <linux/of.h>
|
||||
#include <linux/sysfs.h>
|
||||
|
||||
@@ -99,7 +98,6 @@ struct tmp421_channel {
|
||||
|
||||
struct tmp421_data {
|
||||
struct i2c_client *client;
|
||||
struct mutex update_lock;
|
||||
u32 temp_config[MAX_CHANNELS + 1];
|
||||
struct hwmon_channel_info temp_info;
|
||||
const struct hwmon_channel_info *info[2];
|
||||
@@ -130,38 +128,28 @@ static int tmp421_update_device(struct tmp421_data *data)
|
||||
int ret = 0;
|
||||
int i;
|
||||
|
||||
mutex_lock(&data->update_lock);
|
||||
|
||||
if (time_after(jiffies, data->last_updated + (HZ / 2)) ||
|
||||
!data->valid) {
|
||||
data->valid = false;
|
||||
ret = i2c_smbus_read_byte_data(client, TMP421_CONFIG_REG_1);
|
||||
if (ret < 0)
|
||||
goto exit;
|
||||
return ret;
|
||||
data->config = ret;
|
||||
|
||||
for (i = 0; i < data->channels; i++) {
|
||||
ret = i2c_smbus_read_byte_data(client, TMP421_TEMP_MSB[i]);
|
||||
if (ret < 0)
|
||||
goto exit;
|
||||
return ret;
|
||||
data->channel[i].temp = ret << 8;
|
||||
|
||||
ret = i2c_smbus_read_byte_data(client, TMP421_TEMP_LSB[i]);
|
||||
if (ret < 0)
|
||||
goto exit;
|
||||
return ret;
|
||||
data->channel[i].temp |= ret;
|
||||
}
|
||||
data->last_updated = jiffies;
|
||||
data->valid = true;
|
||||
}
|
||||
|
||||
exit:
|
||||
mutex_unlock(&data->update_lock);
|
||||
|
||||
if (ret < 0) {
|
||||
data->valid = false;
|
||||
return ret;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -442,7 +430,6 @@ static int tmp421_probe(struct i2c_client *client)
|
||||
if (!data)
|
||||
return -ENOMEM;
|
||||
|
||||
mutex_init(&data->update_lock);
|
||||
data->channels = (unsigned long)i2c_get_match_data(client);
|
||||
data->client = client;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user