Re: [PATCH v2] iio: accel: bma180: use iio helper function to guarantee direct mode
On 25/07/16 20:11, Alison Schofield wrote: > 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> Cc: Daniel Baluta Applied. Thanks, Jonathan > --- > Changes in v2: > - put back private data lock I had removed in v1. > > drivers/iio/accel/bma180.c | 9 + > 1 file changed, 5 insertions(+), 4 deletions(-) > > diff --git a/drivers/iio/accel/bma180.c b/drivers/iio/accel/bma180.c > index e3f88ba..0890934 100644 > --- a/drivers/iio/accel/bma180.c > +++ b/drivers/iio/accel/bma180.c > @@ -469,13 +469,14 @@ static int bma180_read_raw(struct iio_dev *indio_dev, > > switch (mask) { > case IIO_CHAN_INFO_RAW: > + ret = iio_device_claim_direct_mode(indio_dev); > + if (ret) > + return ret; > + > mutex_lock(>mutex); > - if (iio_buffer_enabled(indio_dev)) { > - mutex_unlock(>mutex); > - return -EBUSY; > - } > ret = bma180_get_data_reg(data, chan->scan_index); > mutex_unlock(>mutex); > + iio_device_release_direct_mode(indio_dev); > if (ret < 0) > return ret; > *val = sign_extend32(ret >> chan->scan_type.shift, >
Re: [PATCH v2] iio: accel: bma180: use iio helper function to guarantee direct mode
On 25/07/16 20:11, Alison Schofield wrote: > 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 > Cc: Daniel Baluta Applied. Thanks, Jonathan > --- > Changes in v2: > - put back private data lock I had removed in v1. > > drivers/iio/accel/bma180.c | 9 + > 1 file changed, 5 insertions(+), 4 deletions(-) > > diff --git a/drivers/iio/accel/bma180.c b/drivers/iio/accel/bma180.c > index e3f88ba..0890934 100644 > --- a/drivers/iio/accel/bma180.c > +++ b/drivers/iio/accel/bma180.c > @@ -469,13 +469,14 @@ static int bma180_read_raw(struct iio_dev *indio_dev, > > switch (mask) { > case IIO_CHAN_INFO_RAW: > + ret = iio_device_claim_direct_mode(indio_dev); > + if (ret) > + return ret; > + > mutex_lock(>mutex); > - if (iio_buffer_enabled(indio_dev)) { > - mutex_unlock(>mutex); > - return -EBUSY; > - } > ret = bma180_get_data_reg(data, chan->scan_index); > mutex_unlock(>mutex); > + iio_device_release_direct_mode(indio_dev); > if (ret < 0) > return ret; > *val = sign_extend32(ret >> chan->scan_type.shift, >
[PATCH v2] iio: accel: bma180: 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. Signed-off-by: Alison SchofieldCc: Daniel Baluta --- Changes in v2: - put back private data lock I had removed in v1. drivers/iio/accel/bma180.c | 9 + 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/drivers/iio/accel/bma180.c b/drivers/iio/accel/bma180.c index e3f88ba..0890934 100644 --- a/drivers/iio/accel/bma180.c +++ b/drivers/iio/accel/bma180.c @@ -469,13 +469,14 @@ static int bma180_read_raw(struct iio_dev *indio_dev, switch (mask) { case IIO_CHAN_INFO_RAW: + ret = iio_device_claim_direct_mode(indio_dev); + if (ret) + return ret; + mutex_lock(>mutex); - if (iio_buffer_enabled(indio_dev)) { - mutex_unlock(>mutex); - return -EBUSY; - } ret = bma180_get_data_reg(data, chan->scan_index); mutex_unlock(>mutex); + iio_device_release_direct_mode(indio_dev); if (ret < 0) return ret; *val = sign_extend32(ret >> chan->scan_type.shift, -- 2.1.4
[PATCH v2] iio: accel: bma180: 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. Signed-off-by: Alison Schofield Cc: Daniel Baluta --- Changes in v2: - put back private data lock I had removed in v1. drivers/iio/accel/bma180.c | 9 + 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/drivers/iio/accel/bma180.c b/drivers/iio/accel/bma180.c index e3f88ba..0890934 100644 --- a/drivers/iio/accel/bma180.c +++ b/drivers/iio/accel/bma180.c @@ -469,13 +469,14 @@ static int bma180_read_raw(struct iio_dev *indio_dev, switch (mask) { case IIO_CHAN_INFO_RAW: + ret = iio_device_claim_direct_mode(indio_dev); + if (ret) + return ret; + mutex_lock(>mutex); - if (iio_buffer_enabled(indio_dev)) { - mutex_unlock(>mutex); - return -EBUSY; - } ret = bma180_get_data_reg(data, chan->scan_index); mutex_unlock(>mutex); + iio_device_release_direct_mode(indio_dev); if (ret < 0) return ret; *val = sign_extend32(ret >> chan->scan_type.shift, -- 2.1.4