Skip to contentSkip to conversation

iio: adc: ad7793: use iio helper function to guarantee direct mode

PATCH Applied Alison Schofield 2 participants 2 messages Jul 18, 2016 – Jul 24, 2016

Subsystems (2)
lore
Share & tools
lore
#0 lore raw

PATCH 1/1 iio: adc: ad7793: use iio helper function to guarantee direct mode

Replace the code that guarantees the device stays in direct mode with iio_device_claim_direct_mode() which does same.

---
This driver is not doing any error checking on the code I just wrapped in device_claim/release. It first saves info to the global state and then writes it to a register, with no error checking.

Does similar in both *write_raw, and *write_frequency.

I could add error checking in another patch if it's desired. I don't have this sensor to verify. Let me know if that would be welcome. Thanks!

 drivers/iio/adc/ad7793.c | 10 ++++------
 1 file changed, 4 insertions(+), 6 deletions(-)
drivers/iio/adc/ad7793.c +4 -6
index 847789b..e6706a0 100644
@@ -519,11 +519,9 @@ static int ad7793_write_raw(struct iio_dev *indio_dev,
 	int ret, i;
 	unsigned int tmp;
 
-	mutex_lock(&indio_dev->mlock);
-	if (iio_buffer_enabled(indio_dev)) {
-		mutex_unlock(&indio_dev->mlock);
-		return -EBUSY;
-	}
+	ret = iio_device_claim_direct_mode(indio_dev);
+	if (ret)
+		return ret;
 
 	switch (mask) {
 	case IIO_CHAN_INFO_SCALE:
@@ -548,7 +546,7 @@ static int ad7793_write_raw(struct iio_dev *indio_dev,
 		ret = -EINVAL;
 	}
 
-	mutex_unlock(&indio_dev->mlock);
+	iio_device_release_direct_mode(indio_dev);
 	return ret;
 }
 
Signature · 1 line
2.1.4
maintainer Applied
#1 lore raw
Quoted 5 lines · Alison Schofield

Replace the code that guarantees the device stays in direct mode with iio_device_claim_direct_mode() which does same.

Applied to the togreg branch of iio.git.

Quoted 10 lines

---

This driver is not doing any error checking on the code I just wrapped in device_claim/release. It first saves info to the global state and then writes it to a register, with no error checking.

Does similar in both *write_raw, and *write_frequency.

I could add error checking in another patch if it's desired. I don't have this sensor to verify. Let me know if that would be welcome. Thanks!

I'd be keen to see this cleaned up. Michael / Lars, can you easily test such a change (or we could rely on it being simple enough that it shouldn't be possible to get it wrong ;)

Quoted 34 lines

 drivers/iio/adc/ad7793.c | 10 ++++------
 1 file changed, 4 insertions(+), 6 deletions(-)
drivers/iio/adc/ad7793.c +4 -6
index 847789b..e6706a0 100644
@@ -519,11 +519,9 @@ static int ad7793_write_raw(struct iio_dev *indio_dev,
 	int ret, i;
 	unsigned int tmp;
 
-	mutex_lock(&indio_dev->mlock);
-	if (iio_buffer_enabled(indio_dev)) {
-		mutex_unlock(&indio_dev->mlock);
-		return -EBUSY;
-	}
+	ret = iio_device_claim_direct_mode(indio_dev);
+	if (ret)
+		return ret;
 
 	switch (mask) {
 	case IIO_CHAN_INFO_SCALE:
@@ -548,7 +546,7 @@ static int ad7793_write_raw(struct iio_dev *indio_dev,
 		ret = -EINVAL;
 	}
 
-	mutex_unlock(&indio_dev->mlock);
+	iio_device_release_direct_mode(indio_dev);
 	return ret;
 }