leds: turris-omnia: Drop unnecessary mutex locking
authorMarek Behún <kabel@kernel.org>
Wed, 2 Aug 2023 16:07:43 +0000 (18:07 +0200)
committerLee Jones <lee@kernel.org>
Fri, 18 Aug 2023 09:18:35 +0000 (10:18 +0100)
Do not lock driver mutex in the global LED panel brightness sysfs
accessors brightness_show() and brightness_store().

The mutex locking is unnecessary here. The I2C transfers are guarded by
I2C core locking mechanism, and the LED commands itself do not interfere
with other commands.

Fixes: 089381b27abe ("leds: initial support for Turris Omnia LEDs")
Signed-off-by: Marek Behún <kabel@kernel.org>
Reviewed-by: Lee Jones <lee@kernel.org>
Link: https://lore.kernel.org/r/20230802160748.11208-2-kabel@kernel.org
Signed-off-by: Lee Jones <lee@kernel.org>
drivers/leds/leds-turris-omnia.c

index ffcaf22..b8a95a9 100644 (file)
@@ -156,12 +156,9 @@ static ssize_t brightness_show(struct device *dev, struct device_attribute *a,
                               char *buf)
 {
        struct i2c_client *client = to_i2c_client(dev);
-       struct omnia_leds *leds = i2c_get_clientdata(client);
        int ret;
 
-       mutex_lock(&leds->lock);
        ret = i2c_smbus_read_byte_data(client, CMD_LED_GET_BRIGHTNESS);
-       mutex_unlock(&leds->lock);
 
        if (ret < 0)
                return ret;
@@ -173,7 +170,6 @@ static ssize_t brightness_store(struct device *dev, struct device_attribute *a,
                                const char *buf, size_t count)
 {
        struct i2c_client *client = to_i2c_client(dev);
-       struct omnia_leds *leds = i2c_get_clientdata(client);
        unsigned long brightness;
        int ret;
 
@@ -183,15 +179,10 @@ static ssize_t brightness_store(struct device *dev, struct device_attribute *a,
        if (brightness > 100)
                return -EINVAL;
 
-       mutex_lock(&leds->lock);
        ret = i2c_smbus_write_byte_data(client, CMD_LED_SET_BRIGHTNESS,
                                        (u8)brightness);
-       mutex_unlock(&leds->lock);
-
-       if (ret < 0)
-               return ret;
 
-       return count;
+       return ret < 0 ? ret : count;
 }
 static DEVICE_ATTR_RW(brightness);