Commit 760b6b79 authored by Marek Behún's avatar Marek Behún Committed by Lee Jones

leds: turris-omnia: Drop unnecessary mutex locking

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: 089381b2 ("leds: initial support for Turris Omnia LEDs")
Signed-off-by: default avatarMarek Behún <kabel@kernel.org>
Reviewed-by: default avatarLee Jones <lee@kernel.org>
Link: https://lore.kernel.org/r/20230802160748.11208-2-kabel@kernel.orgSigned-off-by: default avatarLee Jones <lee@kernel.org>
parent 72a29725
......@@ -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);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment