mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2025-01-07 13:53:24 +00:00
iio: adc: rtq6056: Use automated cleanup for mode handling in write_raw
Using iio_device_claim_direct_scoped() to automate mode claim and release simplifies code flow and allows for straight-forward error handling with direct returns on errors. Signed-off-by: Gabriel Schwartz <gschwartz@usp.br> Reviewed-by: Marcelo Schmitt <marcelo.schmitt1@gmail.com> Reviewed-by: ChiYuan Huang <cy_huang@richtek.com> Link: https://lore.kernel.org/r/20240426200118.20900-1-gschwartz@usp.br Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
This commit is contained in:
parent
0d8d626407
commit
427298c632
@ -520,32 +520,20 @@ static int rtq6056_adc_write_raw(struct iio_dev *indio_dev,
|
||||
{
|
||||
struct rtq6056_priv *priv = iio_priv(indio_dev);
|
||||
const struct richtek_dev_data *devdata = priv->devdata;
|
||||
int ret;
|
||||
|
||||
ret = iio_device_claim_direct_mode(indio_dev);
|
||||
if (ret)
|
||||
return ret;
|
||||
|
||||
switch (mask) {
|
||||
case IIO_CHAN_INFO_SAMP_FREQ:
|
||||
if (devdata->fixed_samp_freq) {
|
||||
ret = -EINVAL;
|
||||
break;
|
||||
iio_device_claim_direct_scoped(return -EBUSY, indio_dev) {
|
||||
switch (mask) {
|
||||
case IIO_CHAN_INFO_SAMP_FREQ:
|
||||
if (devdata->fixed_samp_freq)
|
||||
return -EINVAL;
|
||||
return rtq6056_adc_set_samp_freq(priv, chan, val);
|
||||
case IIO_CHAN_INFO_OVERSAMPLING_RATIO:
|
||||
return devdata->set_average(priv, val);
|
||||
default:
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
ret = rtq6056_adc_set_samp_freq(priv, chan, val);
|
||||
break;
|
||||
case IIO_CHAN_INFO_OVERSAMPLING_RATIO:
|
||||
ret = devdata->set_average(priv, val);
|
||||
break;
|
||||
default:
|
||||
ret = -EINVAL;
|
||||
break;
|
||||
}
|
||||
|
||||
iio_device_release_direct_mode(indio_dev);
|
||||
|
||||
return ret;
|
||||
unreachable();
|
||||
}
|
||||
|
||||
static const char *rtq6056_channel_labels[RTQ6056_MAX_CHANNEL] = {
|
||||
|
Loading…
Reference in New Issue
Block a user