]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
hwmon: (tmp421) Rely on subsystem locking
authorGuenter Roeck <linux@roeck-us.net>
Sun, 8 Jun 2025 04:00:41 +0000 (21:00 -0700)
committerGuenter Roeck <linux@roeck-us.net>
Wed, 15 Oct 2025 18:02:43 +0000 (11:02 -0700)
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>
drivers/hwmon/tmp421.c

index 9537727aad9a89b7ed1300fb3229989e994f19cf..2e43ce8408d6c125c6ec022864d6d72adf066d89 100644 (file)
@@ -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;