|
@@ -311,13 +311,17 @@ static int adis16203_read_raw(struct iio_dev *indio_dev,
|
|
|
mutex_lock(&indio_dev->mlock);
|
|
|
addr = adis16203_addresses[chan->address][0];
|
|
|
ret = adis16203_spi_read_reg_16(indio_dev, addr, &val16);
|
|
|
- if (ret)
|
|
|
+ if (ret) {
|
|
|
+ mutex_unlock(&indio_dev->mlock);
|
|
|
return ret;
|
|
|
+ }
|
|
|
|
|
|
if (val16 & ADIS16203_ERROR_ACTIVE) {
|
|
|
ret = adis16203_check_status(indio_dev);
|
|
|
- if (ret)
|
|
|
+ if (ret) {
|
|
|
+ mutex_unlock(&indio_dev->mlock);
|
|
|
return ret;
|
|
|
+ }
|
|
|
}
|
|
|
val16 = val16 & ((1 << chan->scan_type.realbits) - 1);
|
|
|
if (chan->scan_type.sign == 's')
|