summaryrefslogtreecommitdiffstats
path: root/drivers/staging/iio/light
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/staging/iio/light')
-rw-r--r--drivers/staging/iio/light/tsl2x7x.c15
1 files changed, 9 insertions, 6 deletions
diff --git a/drivers/staging/iio/light/tsl2x7x.c b/drivers/staging/iio/light/tsl2x7x.c
index 5c611250127f..cc209b64ed5a 100644
--- a/drivers/staging/iio/light/tsl2x7x.c
+++ b/drivers/staging/iio/light/tsl2x7x.c
@@ -489,16 +489,20 @@ static int tsl2x7x_get_prox(struct iio_dev *indio_dev)
case tmd2671:
case tsl2771:
case tmd2771:
- if (!(ret & TSL2X7X_STA_ADC_VALID))
+ if (!(ret & TSL2X7X_STA_ADC_VALID)) {
+ ret = -EINVAL;
goto prox_poll_err;
+ }
break;
case tsl2572:
case tsl2672:
case tmd2672:
case tsl2772:
case tmd2772:
- if (!(ret & TSL2X7X_STA_PRX_VALID))
+ if (!(ret & TSL2X7X_STA_PRX_VALID)) {
+ ret = -EINVAL;
goto prox_poll_err;
+ }
break;
}
@@ -512,14 +516,13 @@ static int tsl2x7x_get_prox(struct iio_dev *indio_dev)
chdata[i] = ret;
}
- chip->prox_data =
- le16_to_cpup((const __le16 *)&chdata[0]);
+ chip->prox_data = le16_to_cpup((const __le16 *)&chdata[0]);
+ ret = chip->prox_data;
prox_poll_err:
-
mutex_unlock(&chip->prox_mutex);
- return chip->prox_data;
+ return ret;
}
/**