Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 498adaeb authored by Vlad Dogaru's avatar Vlad Dogaru Committed by Jonathan Cameron
Browse files

iio: sx9500: rework error handling of raw readings



Fix error handling so that we can power the chip down even if a raw read
fails.

Reported-by: default avatarHartmut Knaack <knaack.h@gmx.de>
Signed-off-by: default avatarVlad Dogaru <vlad.dogaru@intel.com>
Acked-by: default avatarHartmut Knaack <knaack.h@gmx.de>
Signed-off-by: default avatarJonathan Cameron <jic23@kernel.org>
parent c99389ad
Loading
Loading
Loading
Loading
+9 −7
Original line number Diff line number Diff line
@@ -329,20 +329,20 @@ static int sx9500_read_proximity(struct sx9500_data *data,
	else
		ret = sx9500_wait_for_sample(data);

	if (ret < 0)
		return ret;

	mutex_lock(&data->mutex);

	ret = sx9500_read_prox_data(data, chan, val);
	if (ret < 0)
		goto out;
		goto out_dec_data_rdy;

	ret = sx9500_dec_chan_users(data, chan->channel);
	ret = sx9500_read_prox_data(data, chan, val);
	if (ret < 0)
		goto out;
		goto out_dec_data_rdy;

	ret = sx9500_dec_data_rdy_users(data);
	if (ret < 0)
		goto out_dec_chan;

	ret = sx9500_dec_chan_users(data, chan->channel);
	if (ret < 0)
		goto out;

@@ -350,6 +350,8 @@ static int sx9500_read_proximity(struct sx9500_data *data,

	goto out;

out_dec_data_rdy:
	sx9500_dec_data_rdy_users(data);
out_dec_chan:
	sx9500_dec_chan_users(data, chan->channel);
out: