mirror of
https://github.com/hardkernel/linux.git
synced 2026-06-05 02:21:52 +09:00
iio: sx9310: Simplify error return handling
Checks for non-zero return values to signal error conditions. Signed-off-by: Daniel Campello <campello@chromium.org> Reviewed-by: Andy Shevchenko <andy.shevchenko@gmail.com> Reviewed-by: Stephen Boyd <swboyd@chromium.org> Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
This commit is contained in:
committed by
Jonathan Cameron
parent
124cbc339c
commit
a917af2ab8
@@ -347,7 +347,7 @@ static int sx9310_read_prox_data(struct sx9310_data *data,
|
||||
int ret;
|
||||
|
||||
ret = regmap_write(data->regmap, SX9310_REG_SENSOR_SEL, chan->channel);
|
||||
if (ret < 0)
|
||||
if (ret)
|
||||
return ret;
|
||||
|
||||
return regmap_bulk_read(data->regmap, chan->address, val, sizeof(*val));
|
||||
@@ -363,7 +363,7 @@ static int sx9310_wait_for_sample(struct sx9310_data *data)
|
||||
unsigned int val;
|
||||
|
||||
ret = regmap_read(data->regmap, SX9310_REG_PROX_CTRL0, &val);
|
||||
if (ret < 0)
|
||||
if (ret)
|
||||
return ret;
|
||||
|
||||
val = FIELD_GET(SX9310_REG_PROX_CTRL0_SCANPERIOD_MASK, val);
|
||||
@@ -376,17 +376,17 @@ static int sx9310_wait_for_sample(struct sx9310_data *data)
|
||||
static int sx9310_read_proximity(struct sx9310_data *data,
|
||||
const struct iio_chan_spec *chan, int *val)
|
||||
{
|
||||
int ret = 0;
|
||||
int ret;
|
||||
__be16 rawval;
|
||||
|
||||
mutex_lock(&data->mutex);
|
||||
|
||||
ret = sx9310_get_read_channel(data, chan->channel);
|
||||
if (ret < 0)
|
||||
if (ret)
|
||||
goto out;
|
||||
|
||||
ret = sx9310_enable_irq(data, SX9310_CONVDONE_IRQ);
|
||||
if (ret < 0)
|
||||
if (ret)
|
||||
goto out_put_channel;
|
||||
|
||||
mutex_unlock(&data->mutex);
|
||||
@@ -400,22 +400,22 @@ static int sx9310_read_proximity(struct sx9310_data *data,
|
||||
|
||||
mutex_lock(&data->mutex);
|
||||
|
||||
if (ret < 0)
|
||||
if (ret)
|
||||
goto out_disable_irq;
|
||||
|
||||
ret = sx9310_read_prox_data(data, chan, &rawval);
|
||||
if (ret < 0)
|
||||
if (ret)
|
||||
goto out_disable_irq;
|
||||
|
||||
*val = sign_extend32(be16_to_cpu(rawval),
|
||||
(chan->address == SX9310_REG_DIFF_MSB ? 11 : 15));
|
||||
|
||||
ret = sx9310_disable_irq(data, SX9310_CONVDONE_IRQ);
|
||||
if (ret < 0)
|
||||
if (ret)
|
||||
goto out_put_channel;
|
||||
|
||||
ret = sx9310_put_read_channel(data, chan->channel);
|
||||
if (ret < 0)
|
||||
if (ret)
|
||||
goto out;
|
||||
|
||||
mutex_unlock(&data->mutex);
|
||||
@@ -437,7 +437,7 @@ static int sx9310_read_samp_freq(struct sx9310_data *data, int *val, int *val2)
|
||||
unsigned int regval;
|
||||
int ret = regmap_read(data->regmap, SX9310_REG_PROX_CTRL0, ®val);
|
||||
|
||||
if (ret < 0)
|
||||
if (ret)
|
||||
return ret;
|
||||
|
||||
regval = FIELD_GET(SX9310_REG_PROX_CTRL0_SCANPERIOD_MASK, regval);
|
||||
@@ -539,7 +539,7 @@ static void sx9310_push_events(struct iio_dev *indio_dev)
|
||||
|
||||
/* Read proximity state on all channels */
|
||||
ret = regmap_read(data->regmap, SX9310_REG_STAT0, &val);
|
||||
if (ret < 0) {
|
||||
if (ret) {
|
||||
dev_err(&data->client->dev, "i2c transfer error in irq\n");
|
||||
return;
|
||||
}
|
||||
@@ -573,7 +573,7 @@ static irqreturn_t sx9310_irq_thread_handler(int irq, void *private)
|
||||
mutex_lock(&data->mutex);
|
||||
|
||||
ret = regmap_read(data->regmap, SX9310_REG_IRQ_SRC, &val);
|
||||
if (ret < 0) {
|
||||
if (ret) {
|
||||
dev_err(&data->client->dev, "i2c transfer error in irq\n");
|
||||
goto out;
|
||||
}
|
||||
@@ -616,20 +616,20 @@ static int sx9310_write_event_config(struct iio_dev *indio_dev,
|
||||
mutex_lock(&data->mutex);
|
||||
if (state) {
|
||||
ret = sx9310_get_event_channel(data, chan->channel);
|
||||
if (ret < 0)
|
||||
if (ret)
|
||||
goto out_unlock;
|
||||
if (!(data->chan_event & ~BIT(chan->channel))) {
|
||||
ret = sx9310_enable_irq(data, eventirq);
|
||||
if (ret < 0)
|
||||
if (ret)
|
||||
sx9310_put_event_channel(data, chan->channel);
|
||||
}
|
||||
} else {
|
||||
ret = sx9310_put_event_channel(data, chan->channel);
|
||||
if (ret < 0)
|
||||
if (ret)
|
||||
goto out_unlock;
|
||||
if (!data->chan_event) {
|
||||
ret = sx9310_disable_irq(data, eventirq);
|
||||
if (ret < 0)
|
||||
if (ret)
|
||||
sx9310_get_event_channel(data, chan->channel);
|
||||
}
|
||||
}
|
||||
@@ -668,7 +668,7 @@ static int sx9310_set_trigger_state(struct iio_trigger *trig, bool state)
|
||||
ret = sx9310_enable_irq(data, SX9310_CONVDONE_IRQ);
|
||||
else if (!data->chan_read)
|
||||
ret = sx9310_disable_irq(data, SX9310_CONVDONE_IRQ);
|
||||
if (ret < 0)
|
||||
if (ret)
|
||||
goto out;
|
||||
|
||||
data->trigger_enabled = state;
|
||||
@@ -697,7 +697,7 @@ static irqreturn_t sx9310_trigger_handler(int irq, void *private)
|
||||
indio_dev->masklength) {
|
||||
ret = sx9310_read_prox_data(data, &indio_dev->channels[bit],
|
||||
&val);
|
||||
if (ret < 0)
|
||||
if (ret)
|
||||
goto out;
|
||||
|
||||
data->buffer.channels[i++] = val;
|
||||
@@ -802,13 +802,13 @@ static int sx9310_init_compensation(struct iio_dev *indio_dev)
|
||||
unsigned int ctrl0;
|
||||
|
||||
ret = regmap_read(data->regmap, SX9310_REG_PROX_CTRL0, &ctrl0);
|
||||
if (ret < 0)
|
||||
if (ret)
|
||||
return ret;
|
||||
|
||||
/* run the compensation phase on all channels */
|
||||
ret = regmap_write(data->regmap, SX9310_REG_PROX_CTRL0,
|
||||
ctrl0 | SX9310_REG_PROX_CTRL0_SENSOREN_MASK);
|
||||
if (ret < 0)
|
||||
if (ret)
|
||||
return ret;
|
||||
|
||||
ret = regmap_read_poll_timeout(data->regmap, SX9310_REG_STAT1, val,
|
||||
@@ -834,21 +834,21 @@ static int sx9310_init_device(struct iio_dev *indio_dev)
|
||||
unsigned int i, val;
|
||||
|
||||
ret = regmap_write(data->regmap, SX9310_REG_RESET, SX9310_SOFT_RESET);
|
||||
if (ret < 0)
|
||||
if (ret)
|
||||
return ret;
|
||||
|
||||
usleep_range(1000, 2000); /* power-up time is ~1ms. */
|
||||
|
||||
/* Clear reset interrupt state by reading SX9310_REG_IRQ_SRC. */
|
||||
ret = regmap_read(data->regmap, SX9310_REG_IRQ_SRC, &val);
|
||||
if (ret < 0)
|
||||
if (ret)
|
||||
return ret;
|
||||
|
||||
/* Program some sane defaults. */
|
||||
for (i = 0; i < ARRAY_SIZE(sx9310_default_regs); i++) {
|
||||
initval = &sx9310_default_regs[i];
|
||||
ret = regmap_write(data->regmap, initval->reg, initval->def);
|
||||
if (ret < 0)
|
||||
if (ret)
|
||||
return ret;
|
||||
}
|
||||
|
||||
@@ -902,14 +902,14 @@ static int sx9310_probe(struct i2c_client *client)
|
||||
return PTR_ERR(data->regmap);
|
||||
|
||||
ret = regmap_read(data->regmap, SX9310_REG_WHOAMI, &data->whoami);
|
||||
if (ret < 0) {
|
||||
if (ret) {
|
||||
dev_err(&client->dev, "error in reading WHOAMI register: %d",
|
||||
ret);
|
||||
return ret;
|
||||
}
|
||||
|
||||
ret = sx9310_set_indio_dev_name(&client->dev, indio_dev, data->whoami);
|
||||
if (ret < 0)
|
||||
if (ret)
|
||||
return ret;
|
||||
|
||||
ACPI_COMPANION_SET(&indio_dev->dev, ACPI_COMPANION(&client->dev));
|
||||
@@ -920,7 +920,7 @@ static int sx9310_probe(struct i2c_client *client)
|
||||
i2c_set_clientdata(client, indio_dev);
|
||||
|
||||
ret = sx9310_init_device(indio_dev);
|
||||
if (ret < 0)
|
||||
if (ret)
|
||||
return ret;
|
||||
|
||||
if (client->irq) {
|
||||
@@ -929,7 +929,7 @@ static int sx9310_probe(struct i2c_client *client)
|
||||
sx9310_irq_thread_handler,
|
||||
IRQF_TRIGGER_LOW | IRQF_ONESHOT,
|
||||
"sx9310_event", indio_dev);
|
||||
if (ret < 0)
|
||||
if (ret)
|
||||
return ret;
|
||||
|
||||
data->trig =
|
||||
@@ -951,7 +951,7 @@ static int sx9310_probe(struct i2c_client *client)
|
||||
iio_pollfunc_store_time,
|
||||
sx9310_trigger_handler,
|
||||
&sx9310_buffer_setup_ops);
|
||||
if (ret < 0)
|
||||
if (ret)
|
||||
return ret;
|
||||
|
||||
return devm_iio_device_register(&client->dev, indio_dev);
|
||||
|
||||
Reference in New Issue
Block a user