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

Commit 0d1462de authored by Vlad Dogaru's avatar Vlad Dogaru Committed by Jonathan Cameron
Browse files

iio: sx9500: fix bug in compensation code



The initial compensation was mistakingly toggling an extra bit in the
control register.  Fix this and make sure it's less likely to happen by
introducing an additional macro.

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 498adaeb
Loading
Loading
Loading
Loading
+3 −3
Original line number Diff line number Diff line
@@ -80,6 +80,7 @@
#define SX9500_COMPSTAT_MASK		GENMASK(3, 0)

#define SX9500_NUM_CHANNELS		4
#define SX9500_CHAN_MASK		GENMASK(SX9500_NUM_CHANNELS - 1, 0)

struct sx9500_data {
	struct mutex mutex;
@@ -802,8 +803,7 @@ static int sx9500_init_compensation(struct iio_dev *indio_dev)
	unsigned int val;

	ret = regmap_update_bits(data->regmap, SX9500_REG_PROX_CTRL0,
				 GENMASK(SX9500_NUM_CHANNELS, 0),
				 GENMASK(SX9500_NUM_CHANNELS, 0));
				 SX9500_CHAN_MASK, SX9500_CHAN_MASK);
	if (ret < 0)
		return ret;

@@ -823,7 +823,7 @@ static int sx9500_init_compensation(struct iio_dev *indio_dev)

out:
	regmap_update_bits(data->regmap, SX9500_REG_PROX_CTRL0,
			   GENMASK(SX9500_NUM_CHANNELS, 0), 0);
			   SX9500_CHAN_MASK, 0);
	return ret;
}