Commit dbcf6b5d authored by Alexandru Ardelean's avatar Alexandru Ardelean Committed by Jonathan Cameron
Browse files

iio: amplifiers: ad8366: use own lock to guard state



This driver is still using iio_dev's mlock to guard against inconsistent
state. This has been discouraged for some time.

This change switches to using it's own mutex, defined on the state struct.

Signed-off-by: default avatarAlexandru Ardelean <alexandru.ardelean@analog.com>
Signed-off-by: default avatarJonathan Cameron <Jonathan.Cameron@huawei.com>
parent 38ffa3a3
Loading
Loading
Loading
Loading
+6 −4
Original line number Diff line number Diff line
@@ -21,6 +21,7 @@
struct ad8366_state {
	struct spi_device	*spi;
	struct regulator	*reg;
	struct mutex            lock; /* protect sensor state */
	unsigned char		ch[2];
	/*
	 * DMA (thus cache coherency maintenance) requires the
@@ -58,7 +59,7 @@ static int ad8366_read_raw(struct iio_dev *indio_dev,
	int ret;
	unsigned code;

	mutex_lock(&indio_dev->mlock);
	mutex_lock(&st->lock);
	switch (m) {
	case IIO_CHAN_INFO_HARDWAREGAIN:
		code = st->ch[chan->channel];
@@ -73,7 +74,7 @@ static int ad8366_read_raw(struct iio_dev *indio_dev,
	default:
		ret = -EINVAL;
	}
	mutex_unlock(&indio_dev->mlock);
	mutex_unlock(&st->lock);

	return ret;
};
@@ -99,7 +100,7 @@ static int ad8366_write_raw(struct iio_dev *indio_dev,

	code = (code - 4500) / 253;

	mutex_lock(&indio_dev->mlock);
	mutex_lock(&st->lock);
	switch (mask) {
	case IIO_CHAN_INFO_HARDWAREGAIN:
		st->ch[chan->channel] = code;
@@ -108,7 +109,7 @@ static int ad8366_write_raw(struct iio_dev *indio_dev,
	default:
		ret = -EINVAL;
	}
	mutex_unlock(&indio_dev->mlock);
	mutex_unlock(&st->lock);

	return ret;
}
@@ -151,6 +152,7 @@ static int ad8366_probe(struct spi_device *spi)
	}

	spi_set_drvdata(spi, indio_dev);
	mutex_init(&st->lock);
	st->spi = spi;

	indio_dev->dev.parent = &spi->dev;