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

Commit 2a58b4f8 authored by Peter Meerwald's avatar Peter Meerwald Committed by Jonathan Cameron
Browse files

iio:tcs3472: Check for buffer enabled and locking

parent 4ff9f633
Loading
Loading
Loading
Loading
+10 −1
Original line number Diff line number Diff line
@@ -52,6 +52,7 @@

struct tcs3472_data {
	struct i2c_client *client;
	struct mutex lock;
	u8 enable;
	u8 control;
	u8 atime;
@@ -116,10 +117,17 @@ static int tcs3472_read_raw(struct iio_dev *indio_dev,

	switch (mask) {
	case IIO_CHAN_INFO_RAW:
		if (iio_buffer_enabled(indio_dev))
			return -EBUSY;

		mutex_lock(&data->lock);
		ret = tcs3472_req_data(data);
		if (ret < 0)
		if (ret < 0) {
			mutex_unlock(&data->lock);
			return ret;
		}
		ret = i2c_smbus_read_word_data(data->client, chan->address);
		mutex_unlock(&data->lock);
		if (ret < 0)
			return ret;
		*val = ret;
@@ -255,6 +263,7 @@ static int tcs3472_probe(struct i2c_client *client,
	data = iio_priv(indio_dev);
	i2c_set_clientdata(client, indio_dev);
	data->client = client;
	mutex_init(&data->lock);

	indio_dev->dev.parent = &client->dev;
	indio_dev->info = &tcs3472_info;