iio: adc: max1363: simplify with cleanup.h
Allocate the memory with scoped/cleanup.h to reduce error handling and make the code a bit simpler. Signed-off-by: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org> Reviewed-by: Nuno Sa <nuno.sa@analog.com> Link: https://patch.msgid.link/20240705-cleanup-h-iio-v1-4-77114c7e84c5@linaro.org Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
This commit is contained in:
parent
e3749aae6e
commit
adcba9cd61
@ -13,6 +13,7 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
#include <linux/interrupt.h>
|
#include <linux/interrupt.h>
|
||||||
|
#include <linux/cleanup.h>
|
||||||
#include <linux/device.h>
|
#include <linux/device.h>
|
||||||
#include <linux/kernel.h>
|
#include <linux/kernel.h>
|
||||||
#include <linux/sysfs.h>
|
#include <linux/sysfs.h>
|
||||||
@ -818,7 +819,6 @@ static int max1363_read_event_config(struct iio_dev *indio_dev,
|
|||||||
|
|
||||||
static int max1363_monitor_mode_update(struct max1363_state *st, int enabled)
|
static int max1363_monitor_mode_update(struct max1363_state *st, int enabled)
|
||||||
{
|
{
|
||||||
u8 *tx_buf;
|
|
||||||
int ret, i = 3, j;
|
int ret, i = 3, j;
|
||||||
unsigned long numelements;
|
unsigned long numelements;
|
||||||
int len;
|
int len;
|
||||||
@ -850,11 +850,10 @@ static int max1363_monitor_mode_update(struct max1363_state *st, int enabled)
|
|||||||
}
|
}
|
||||||
numelements = bitmap_weight(modemask, MAX1363_MAX_CHANNELS);
|
numelements = bitmap_weight(modemask, MAX1363_MAX_CHANNELS);
|
||||||
len = 3 * numelements + 3;
|
len = 3 * numelements + 3;
|
||||||
tx_buf = kmalloc(len, GFP_KERNEL);
|
u8 *tx_buf __free(kfree) = kmalloc(len, GFP_KERNEL);
|
||||||
if (!tx_buf) {
|
if (!tx_buf)
|
||||||
ret = -ENOMEM;
|
return -ENOMEM;
|
||||||
goto error_ret;
|
|
||||||
}
|
|
||||||
tx_buf[0] = st->configbyte;
|
tx_buf[0] = st->configbyte;
|
||||||
tx_buf[1] = st->setupbyte;
|
tx_buf[1] = st->setupbyte;
|
||||||
tx_buf[2] = (st->monitor_speed << 1);
|
tx_buf[2] = (st->monitor_speed << 1);
|
||||||
@ -893,11 +892,9 @@ static int max1363_monitor_mode_update(struct max1363_state *st, int enabled)
|
|||||||
|
|
||||||
ret = st->send(st->client, tx_buf, len);
|
ret = st->send(st->client, tx_buf, len);
|
||||||
if (ret < 0)
|
if (ret < 0)
|
||||||
goto error_ret;
|
return ret;
|
||||||
if (ret != len) {
|
if (ret != len)
|
||||||
ret = -EIO;
|
return -EIO;
|
||||||
goto error_ret;
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Now that we hopefully have sensible thresholds in place it is
|
* Now that we hopefully have sensible thresholds in place it is
|
||||||
@ -910,18 +907,13 @@ static int max1363_monitor_mode_update(struct max1363_state *st, int enabled)
|
|||||||
tx_buf[1] = MAX1363_MON_INT_ENABLE | (st->monitor_speed << 1) | 0xF0;
|
tx_buf[1] = MAX1363_MON_INT_ENABLE | (st->monitor_speed << 1) | 0xF0;
|
||||||
ret = st->send(st->client, tx_buf, 2);
|
ret = st->send(st->client, tx_buf, 2);
|
||||||
if (ret < 0)
|
if (ret < 0)
|
||||||
goto error_ret;
|
|
||||||
if (ret != 2) {
|
|
||||||
ret = -EIO;
|
|
||||||
goto error_ret;
|
|
||||||
}
|
|
||||||
ret = 0;
|
|
||||||
st->monitor_on = true;
|
|
||||||
error_ret:
|
|
||||||
|
|
||||||
kfree(tx_buf);
|
|
||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
|
if (ret != 2)
|
||||||
|
return -EIO;
|
||||||
|
|
||||||
|
st->monitor_on = true;
|
||||||
|
|
||||||
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
Loading…
Reference in New Issue
Block a user