diff options
Diffstat (limited to 'drivers/iio/light/tcs3414.c')
-rw-r--r-- | drivers/iio/light/tcs3414.c | 12 |
1 files changed, 5 insertions, 7 deletions
diff --git a/drivers/iio/light/tcs3414.c b/drivers/iio/light/tcs3414.c index f90f8c5919fe..8a15fb541dc3 100644 --- a/drivers/iio/light/tcs3414.c +++ b/drivers/iio/light/tcs3414.c | |||
@@ -53,7 +53,6 @@ | |||
53 | 53 | ||
54 | struct tcs3414_data { | 54 | struct tcs3414_data { |
55 | struct i2c_client *client; | 55 | struct i2c_client *client; |
56 | struct mutex lock; | ||
57 | u8 control; | 56 | u8 control; |
58 | u8 gain; | 57 | u8 gain; |
59 | u8 timing; | 58 | u8 timing; |
@@ -134,16 +133,16 @@ static int tcs3414_read_raw(struct iio_dev *indio_dev, | |||
134 | 133 | ||
135 | switch (mask) { | 134 | switch (mask) { |
136 | case IIO_CHAN_INFO_RAW: | 135 | case IIO_CHAN_INFO_RAW: |
137 | if (iio_buffer_enabled(indio_dev)) | 136 | ret = iio_device_claim_direct_mode(indio_dev); |
138 | return -EBUSY; | 137 | if (ret) |
139 | mutex_lock(&data->lock); | 138 | return ret; |
140 | ret = tcs3414_req_data(data); | 139 | ret = tcs3414_req_data(data); |
141 | if (ret < 0) { | 140 | if (ret < 0) { |
142 | mutex_unlock(&data->lock); | 141 | iio_device_release_direct_mode(indio_dev); |
143 | return ret; | 142 | return ret; |
144 | } | 143 | } |
145 | ret = i2c_smbus_read_word_data(data->client, chan->address); | 144 | ret = i2c_smbus_read_word_data(data->client, chan->address); |
146 | mutex_unlock(&data->lock); | 145 | iio_device_release_direct_mode(indio_dev); |
147 | if (ret < 0) | 146 | if (ret < 0) |
148 | return ret; | 147 | return ret; |
149 | *val = ret; | 148 | *val = ret; |
@@ -288,7 +287,6 @@ static int tcs3414_probe(struct i2c_client *client, | |||
288 | data = iio_priv(indio_dev); | 287 | data = iio_priv(indio_dev); |
289 | i2c_set_clientdata(client, indio_dev); | 288 | i2c_set_clientdata(client, indio_dev); |
290 | data->client = client; | 289 | data->client = client; |
291 | mutex_init(&data->lock); | ||
292 | 290 | ||
293 | indio_dev->dev.parent = &client->dev; | 291 | indio_dev->dev.parent = &client->dev; |
294 | indio_dev->info = &tcs3414_info; | 292 | indio_dev->info = &tcs3414_info; |