mirror of
https://github.com/torvalds/linux.git
synced 2026-09-24 06:24:02 +02:00
iio: light: opt3001: move driver to guard(mutex)() use
Move driver to use guard(mutex)() macro, to facilitate automatic locking/unlocking of resources. This modernizes the driver and improves code style. While at it, remove unnecessary gotos and return variables. Reviewed-by: Andy Shevchenko <andriy.shevchenko@intel.com> Signed-off-by: Joshua Crofts <joshua.crofts1@gmail.com> Signed-off-by: Jonathan Cameron <jic23@kernel.org>
This commit is contained in:
parent
960642100c
commit
1bff00e98c
|
|
@ -10,6 +10,7 @@
|
|||
|
||||
#include <linux/array_size.h>
|
||||
#include <linux/bits.h>
|
||||
#include <linux/cleanup.h>
|
||||
#include <linux/delay.h>
|
||||
#include <linux/dev_printk.h>
|
||||
#include <linux/errno.h>
|
||||
|
|
@ -479,7 +480,6 @@ static int opt3001_read_raw(struct iio_dev *iio,
|
|||
int *val, int *val2, long mask)
|
||||
{
|
||||
struct opt3001 *opt = iio_priv(iio);
|
||||
int ret;
|
||||
|
||||
if (opt->mode == OPT3001_CONFIGURATION_M_CONTINUOUS)
|
||||
return -EBUSY;
|
||||
|
|
@ -487,23 +487,17 @@ static int opt3001_read_raw(struct iio_dev *iio,
|
|||
if (chan->type != opt->chip_info->chan_type)
|
||||
return -EINVAL;
|
||||
|
||||
mutex_lock(&opt->lock);
|
||||
guard(mutex)(&opt->lock);
|
||||
|
||||
switch (mask) {
|
||||
case IIO_CHAN_INFO_RAW:
|
||||
case IIO_CHAN_INFO_PROCESSED:
|
||||
ret = opt3001_get_processed(opt, val, val2);
|
||||
break;
|
||||
return opt3001_get_processed(opt, val, val2);
|
||||
case IIO_CHAN_INFO_INT_TIME:
|
||||
ret = opt3001_get_int_time(opt, val, val2);
|
||||
break;
|
||||
return opt3001_get_int_time(opt, val, val2);
|
||||
default:
|
||||
ret = -EINVAL;
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
mutex_unlock(&opt->lock);
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
static int opt3001_write_raw(struct iio_dev *iio,
|
||||
|
|
@ -511,7 +505,6 @@ static int opt3001_write_raw(struct iio_dev *iio,
|
|||
int val, int val2, long mask)
|
||||
{
|
||||
struct opt3001 *opt = iio_priv(iio);
|
||||
int ret;
|
||||
|
||||
if (opt->mode == OPT3001_CONFIGURATION_M_CONTINUOUS)
|
||||
return -EBUSY;
|
||||
|
|
@ -525,11 +518,9 @@ static int opt3001_write_raw(struct iio_dev *iio,
|
|||
if (val != 0)
|
||||
return -EINVAL;
|
||||
|
||||
mutex_lock(&opt->lock);
|
||||
ret = opt3001_set_int_time(opt, val2);
|
||||
mutex_unlock(&opt->lock);
|
||||
guard(mutex)(&opt->lock);
|
||||
|
||||
return ret;
|
||||
return opt3001_set_int_time(opt, val2);
|
||||
}
|
||||
|
||||
static int opt3001_read_event_value(struct iio_dev *iio,
|
||||
|
|
@ -540,26 +531,21 @@ static int opt3001_read_event_value(struct iio_dev *iio,
|
|||
int *val, int *val2)
|
||||
{
|
||||
struct opt3001 *opt = iio_priv(iio);
|
||||
int ret = IIO_VAL_INT_PLUS_MICRO;
|
||||
|
||||
mutex_lock(&opt->lock);
|
||||
guard(mutex)(&opt->lock);
|
||||
|
||||
switch (dir) {
|
||||
case IIO_EV_DIR_RISING:
|
||||
opt3001_to_iio_ret(opt, opt->high_thresh_exp,
|
||||
opt->high_thresh_mantissa, val, val2);
|
||||
break;
|
||||
return IIO_VAL_INT_PLUS_MICRO;
|
||||
case IIO_EV_DIR_FALLING:
|
||||
opt3001_to_iio_ret(opt, opt->low_thresh_exp,
|
||||
opt->low_thresh_mantissa, val, val2);
|
||||
break;
|
||||
return IIO_VAL_INT_PLUS_MICRO;
|
||||
default:
|
||||
ret = -EINVAL;
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
mutex_unlock(&opt->lock);
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
static int opt3001_write_event_value(struct iio_dev *iio,
|
||||
|
|
@ -586,12 +572,12 @@ static int opt3001_write_event_value(struct iio_dev *iio,
|
|||
if (val < 0)
|
||||
return -EINVAL;
|
||||
|
||||
mutex_lock(&opt->lock);
|
||||
guard(mutex)(&opt->lock);
|
||||
|
||||
ret = opt3001_find_scale(opt, val, val2, &exponent);
|
||||
if (ret < 0) {
|
||||
dev_err(dev, "can't find scale for %d.%06u\n", val, val2);
|
||||
goto err;
|
||||
return ret;
|
||||
}
|
||||
|
||||
whole = opt->chip_info->factor_whole;
|
||||
|
|
@ -614,20 +600,16 @@ static int opt3001_write_event_value(struct iio_dev *iio,
|
|||
opt->low_thresh_exp = exponent;
|
||||
break;
|
||||
default:
|
||||
ret = -EINVAL;
|
||||
goto err;
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
ret = i2c_smbus_write_word_swapped(client, reg, value);
|
||||
if (ret < 0) {
|
||||
dev_err(dev, "failed to write register %02x\n", reg);
|
||||
goto err;
|
||||
return ret;
|
||||
}
|
||||
|
||||
err:
|
||||
mutex_unlock(&opt->lock);
|
||||
|
||||
return ret;
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int opt3001_read_event_config(struct iio_dev *iio,
|
||||
|
|
@ -659,7 +641,7 @@ static int opt3001_write_event_config(struct iio_dev *iio,
|
|||
if (!state && opt->mode == OPT3001_CONFIGURATION_M_SHUTDOWN)
|
||||
return 0;
|
||||
|
||||
mutex_lock(&opt->lock);
|
||||
guard(mutex)(&opt->lock);
|
||||
|
||||
mode = state ? OPT3001_CONFIGURATION_M_CONTINUOUS
|
||||
: OPT3001_CONFIGURATION_M_SHUTDOWN;
|
||||
|
|
@ -668,7 +650,7 @@ static int opt3001_write_event_config(struct iio_dev *iio,
|
|||
if (ret < 0) {
|
||||
dev_err(dev, "failed to read register %02x\n",
|
||||
OPT3001_CONFIGURATION);
|
||||
goto err;
|
||||
return ret;
|
||||
}
|
||||
|
||||
reg = ret;
|
||||
|
|
@ -678,13 +660,10 @@ static int opt3001_write_event_config(struct iio_dev *iio,
|
|||
if (ret < 0) {
|
||||
dev_err(dev, "failed to write register %02x\n",
|
||||
OPT3001_CONFIGURATION);
|
||||
goto err;
|
||||
return ret;
|
||||
}
|
||||
|
||||
err:
|
||||
mutex_unlock(&opt->lock);
|
||||
|
||||
return ret;
|
||||
return 0;
|
||||
}
|
||||
|
||||
static const struct iio_info opt3001_info = {
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user