iio: adc: ad7793: use iio helper function to guarantee direct mode
Subsystems (2)
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
@@ -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
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.Signed-off-by Alison Schofield <[email protected]>Cc Daniel Baluta <[email protected]>
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@@ -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; }