All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH V4] iio: ad9523: replace core mlock with local lock
@ 2018-07-18  7:29 Alexandru Ardelean
  2018-07-21 16:40 ` Jonathan Cameron
  0 siblings, 1 reply; 3+ messages in thread
From: Alexandru Ardelean @ 2018-07-18  7:29 UTC (permalink / raw)
  To: linux-iio, lars, Michael.Hennerich, jic23; +Cc: Alexandru Ardelean

From: Lars-Peter Clausen <lars@metafoo.de>

This is also part of a long term effort to make the use of mlock opaque and
single purpose.

This lock is required for accessing device registers. Some operations
require multiple consecutive R/W operations, during which the device
shouldn't be interrupted.

Signed-off-by: Lars-Peter Clausen <lars@metafoo.de>
Signed-off-by: Alexandru Ardelean <alexandru.ardelean@analog.com>
---

V3 -> V4:
* updated comment/description of the lock

 drivers/iio/frequency/ad9523.c | 32 ++++++++++++++++++++++----------
 1 file changed, 22 insertions(+), 10 deletions(-)

diff --git a/drivers/iio/frequency/ad9523.c b/drivers/iio/frequency/ad9523.c
index ddb6a334ae68..2ab175a0664d 100644
--- a/drivers/iio/frequency/ad9523.c
+++ b/drivers/iio/frequency/ad9523.c
@@ -274,6 +274,13 @@ struct ad9523_state {
 	unsigned long		vco_out_freq[AD9523_NUM_CLK_SRC];
 	unsigned char		vco_out_map[AD9523_NUM_CHAN_ALT_CLK_SRC];
 
+	/*
+	 * Lock for accessing device registers. Some operations require
+	 * multiple consecutive R/W operations, during which the device
+	 * shouldn't be interrupted.
+	 */
+	struct mutex		lock;
+
 	/*
 	 * DMA (thus cache coherency maintenance) requires the
 	 * transfer buffers to live in their own cache lines.
@@ -500,6 +507,7 @@ static ssize_t ad9523_store(struct device *dev,
 {
 	struct iio_dev *indio_dev = dev_to_iio_dev(dev);
 	struct iio_dev_attr *this_attr = to_iio_dev_attr(attr);
+	struct ad9523_state *st = iio_priv(indio_dev);
 	bool state;
 	int ret;
 
@@ -510,7 +518,7 @@ static ssize_t ad9523_store(struct device *dev,
 	if (!state)
 		return 0;
 
-	mutex_lock(&indio_dev->mlock);
+	mutex_lock(&st->lock);
 	switch ((u32)this_attr->address) {
 	case AD9523_SYNC:
 		ret = ad9523_sync(indio_dev);
@@ -521,7 +529,7 @@ static ssize_t ad9523_store(struct device *dev,
 	default:
 		ret = -ENODEV;
 	}
-	mutex_unlock(&indio_dev->mlock);
+	mutex_unlock(&st->lock);
 
 	return ret ? ret : len;
 }
@@ -532,15 +540,16 @@ static ssize_t ad9523_show(struct device *dev,
 {
 	struct iio_dev *indio_dev = dev_to_iio_dev(dev);
 	struct iio_dev_attr *this_attr = to_iio_dev_attr(attr);
+	struct ad9523_state *st = iio_priv(indio_dev);
 	int ret;
 
-	mutex_lock(&indio_dev->mlock);
+	mutex_lock(&st->lock);
 	ret = ad9523_read(indio_dev, AD9523_READBACK_0);
 	if (ret >= 0) {
 		ret = sprintf(buf, "%d\n", !!(ret & (1 <<
 			(u32)this_attr->address)));
 	}
-	mutex_unlock(&indio_dev->mlock);
+	mutex_unlock(&st->lock);
 
 	return ret;
 }
@@ -623,9 +632,9 @@ static int ad9523_read_raw(struct iio_dev *indio_dev,
 	unsigned int code;
 	int ret;
 
-	mutex_lock(&indio_dev->mlock);
+	mutex_lock(&st->lock);
 	ret = ad9523_read(indio_dev, AD9523_CHANNEL_CLOCK_DIST(chan->channel));
-	mutex_unlock(&indio_dev->mlock);
+	mutex_unlock(&st->lock);
 
 	if (ret < 0)
 		return ret;
@@ -659,7 +668,7 @@ static int ad9523_write_raw(struct iio_dev *indio_dev,
 	unsigned int reg;
 	int ret, tmp, code;
 
-	mutex_lock(&indio_dev->mlock);
+	mutex_lock(&st->lock);
 	ret = ad9523_read(indio_dev, AD9523_CHANNEL_CLOCK_DIST(chan->channel));
 	if (ret < 0)
 		goto out;
@@ -705,7 +714,7 @@ static int ad9523_write_raw(struct iio_dev *indio_dev,
 
 	ad9523_io_update(indio_dev);
 out:
-	mutex_unlock(&indio_dev->mlock);
+	mutex_unlock(&st->lock);
 	return ret;
 }
 
@@ -713,9 +722,10 @@ static int ad9523_reg_access(struct iio_dev *indio_dev,
 			      unsigned int reg, unsigned int writeval,
 			      unsigned int *readval)
 {
+	struct ad9523_state *st = iio_priv(indio_dev);
 	int ret;
 
-	mutex_lock(&indio_dev->mlock);
+	mutex_lock(&st->lock);
 	if (readval == NULL) {
 		ret = ad9523_write(indio_dev, reg | AD9523_R1B, writeval);
 		ad9523_io_update(indio_dev);
@@ -728,7 +738,7 @@ static int ad9523_reg_access(struct iio_dev *indio_dev,
 	}
 
 out_unlock:
-	mutex_unlock(&indio_dev->mlock);
+	mutex_unlock(&st->lock);
 
 	return ret;
 }
@@ -967,6 +977,8 @@ static int ad9523_probe(struct spi_device *spi)
 
 	st = iio_priv(indio_dev);
 
+	mutex_init(&st->lock);
+
 	st->reg = devm_regulator_get(&spi->dev, "vcc");
 	if (!IS_ERR(st->reg)) {
 		ret = regulator_enable(st->reg);
-- 
2.17.1


^ permalink raw reply related	[flat|nested] 3+ messages in thread

* Re: [PATCH V4] iio: ad9523: replace core mlock with local lock
  2018-07-18  7:29 [PATCH V4] iio: ad9523: replace core mlock with local lock Alexandru Ardelean
@ 2018-07-21 16:40 ` Jonathan Cameron
  2018-07-23  9:32   ` Ardelean, Alexandru
  0 siblings, 1 reply; 3+ messages in thread
From: Jonathan Cameron @ 2018-07-21 16:40 UTC (permalink / raw)
  To: Alexandru Ardelean; +Cc: linux-iio, lars, Michael.Hennerich

On Wed, 18 Jul 2018 10:29:53 +0300
Alexandru Ardelean <alexandru.ardelean@analog.com> wrote:

> From: Lars-Peter Clausen <lars@metafoo.de>
> 
> This is also part of a long term effort to make the use of mlock opaque and
> single purpose.
> 
> This lock is required for accessing device registers. Some operations
> require multiple consecutive R/W operations, during which the device
> shouldn't be interrupted.
> 
> Signed-off-by: Lars-Peter Clausen <lars@metafoo.de>
> Signed-off-by: Alexandru Ardelean <alexandru.ardelean@analog.com>
Hi Alexandru.  Lars pointed out I was simply wrong in my complaints with
the previous description - it was correct in that case - we need perhaps
to expand the description to include what you have here as well.

Given I doubt you care too much on the wording I've fused the two.

	/*
	 * Lock for accessing device registers. Some operations require
	 * multiple consecutive R/W operations, during which the device
	 * shouldn't be interrupted.  The buffers are also shared across
	 * all operations so need to be protected on stand alone reads and
	 * writes.
	 */

Applied with that minor addition.  Thanks for persistence on this!

Jonathan

> ---
> 
> V3 -> V4:
> * updated comment/description of the lock
> 
>  drivers/iio/frequency/ad9523.c | 32 ++++++++++++++++++++++----------
>  1 file changed, 22 insertions(+), 10 deletions(-)
> 
> diff --git a/drivers/iio/frequency/ad9523.c b/drivers/iio/frequency/ad9523.c
> index ddb6a334ae68..2ab175a0664d 100644
> --- a/drivers/iio/frequency/ad9523.c
> +++ b/drivers/iio/frequency/ad9523.c
> @@ -274,6 +274,13 @@ struct ad9523_state {
>  	unsigned long		vco_out_freq[AD9523_NUM_CLK_SRC];
>  	unsigned char		vco_out_map[AD9523_NUM_CHAN_ALT_CLK_SRC];
>  
> +	/*
> +	 * Lock for accessing device registers. Some operations require
> +	 * multiple consecutive R/W operations, during which the device
> +	 * shouldn't be interrupted.
> +	 */
> +	struct mutex		lock;
> +
>  	/*
>  	 * DMA (thus cache coherency maintenance) requires the
>  	 * transfer buffers to live in their own cache lines.
> @@ -500,6 +507,7 @@ static ssize_t ad9523_store(struct device *dev,
>  {
>  	struct iio_dev *indio_dev = dev_to_iio_dev(dev);
>  	struct iio_dev_attr *this_attr = to_iio_dev_attr(attr);
> +	struct ad9523_state *st = iio_priv(indio_dev);
>  	bool state;
>  	int ret;
>  
> @@ -510,7 +518,7 @@ static ssize_t ad9523_store(struct device *dev,
>  	if (!state)
>  		return 0;
>  
> -	mutex_lock(&indio_dev->mlock);
> +	mutex_lock(&st->lock);
>  	switch ((u32)this_attr->address) {
>  	case AD9523_SYNC:
>  		ret = ad9523_sync(indio_dev);
> @@ -521,7 +529,7 @@ static ssize_t ad9523_store(struct device *dev,
>  	default:
>  		ret = -ENODEV;
>  	}
> -	mutex_unlock(&indio_dev->mlock);
> +	mutex_unlock(&st->lock);
>  
>  	return ret ? ret : len;
>  }
> @@ -532,15 +540,16 @@ static ssize_t ad9523_show(struct device *dev,
>  {
>  	struct iio_dev *indio_dev = dev_to_iio_dev(dev);
>  	struct iio_dev_attr *this_attr = to_iio_dev_attr(attr);
> +	struct ad9523_state *st = iio_priv(indio_dev);
>  	int ret;
>  
> -	mutex_lock(&indio_dev->mlock);
> +	mutex_lock(&st->lock);
>  	ret = ad9523_read(indio_dev, AD9523_READBACK_0);
>  	if (ret >= 0) {
>  		ret = sprintf(buf, "%d\n", !!(ret & (1 <<
>  			(u32)this_attr->address)));
>  	}
> -	mutex_unlock(&indio_dev->mlock);
> +	mutex_unlock(&st->lock);
>  
>  	return ret;
>  }
> @@ -623,9 +632,9 @@ static int ad9523_read_raw(struct iio_dev *indio_dev,
>  	unsigned int code;
>  	int ret;
>  
> -	mutex_lock(&indio_dev->mlock);
> +	mutex_lock(&st->lock);
>  	ret = ad9523_read(indio_dev, AD9523_CHANNEL_CLOCK_DIST(chan->channel));
> -	mutex_unlock(&indio_dev->mlock);
> +	mutex_unlock(&st->lock);
>  
>  	if (ret < 0)
>  		return ret;
> @@ -659,7 +668,7 @@ static int ad9523_write_raw(struct iio_dev *indio_dev,
>  	unsigned int reg;
>  	int ret, tmp, code;
>  
> -	mutex_lock(&indio_dev->mlock);
> +	mutex_lock(&st->lock);
>  	ret = ad9523_read(indio_dev, AD9523_CHANNEL_CLOCK_DIST(chan->channel));
>  	if (ret < 0)
>  		goto out;
> @@ -705,7 +714,7 @@ static int ad9523_write_raw(struct iio_dev *indio_dev,
>  
>  	ad9523_io_update(indio_dev);
>  out:
> -	mutex_unlock(&indio_dev->mlock);
> +	mutex_unlock(&st->lock);
>  	return ret;
>  }
>  
> @@ -713,9 +722,10 @@ static int ad9523_reg_access(struct iio_dev *indio_dev,
>  			      unsigned int reg, unsigned int writeval,
>  			      unsigned int *readval)
>  {
> +	struct ad9523_state *st = iio_priv(indio_dev);
>  	int ret;
>  
> -	mutex_lock(&indio_dev->mlock);
> +	mutex_lock(&st->lock);
>  	if (readval == NULL) {
>  		ret = ad9523_write(indio_dev, reg | AD9523_R1B, writeval);
>  		ad9523_io_update(indio_dev);
> @@ -728,7 +738,7 @@ static int ad9523_reg_access(struct iio_dev *indio_dev,
>  	}
>  
>  out_unlock:
> -	mutex_unlock(&indio_dev->mlock);
> +	mutex_unlock(&st->lock);
>  
>  	return ret;
>  }
> @@ -967,6 +977,8 @@ static int ad9523_probe(struct spi_device *spi)
>  
>  	st = iio_priv(indio_dev);
>  
> +	mutex_init(&st->lock);
> +
>  	st->reg = devm_regulator_get(&spi->dev, "vcc");
>  	if (!IS_ERR(st->reg)) {
>  		ret = regulator_enable(st->reg);


^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: [PATCH V4] iio: ad9523: replace core mlock with local lock
  2018-07-21 16:40 ` Jonathan Cameron
@ 2018-07-23  9:32   ` Ardelean, Alexandru
  0 siblings, 0 replies; 3+ messages in thread
From: Ardelean, Alexandru @ 2018-07-23  9:32 UTC (permalink / raw)
  To: jic23; +Cc: lars, linux-iio, Hennerich, Michael

T24gU2F0LCAyMDE4LTA3LTIxIGF0IDE3OjQwICswMTAwLCBKb25hdGhhbiBDYW1lcm9uIHdyb3Rl
Og0KPiBPbiBXZWQsIDE4IEp1bCAyMDE4IDEwOjI5OjUzICswMzAwDQo+IEFsZXhhbmRydSBBcmRl
bGVhbiA8YWxleGFuZHJ1LmFyZGVsZWFuQGFuYWxvZy5jb20+IHdyb3RlOg0KPiANCj4gPiBGcm9t
OiBMYXJzLVBldGVyIENsYXVzZW4gPGxhcnNAbWV0YWZvby5kZT4NCj4gPiANCj4gPiBUaGlzIGlz
IGFsc28gcGFydCBvZiBhIGxvbmcgdGVybSBlZmZvcnQgdG8gbWFrZSB0aGUgdXNlIG9mIG1sb2Nr
IG9wYXF1ZQ0KPiA+IGFuZA0KPiA+IHNpbmdsZSBwdXJwb3NlLg0KPiA+IA0KPiA+IFRoaXMgbG9j
ayBpcyByZXF1aXJlZCBmb3IgYWNjZXNzaW5nIGRldmljZSByZWdpc3RlcnMuIFNvbWUgb3BlcmF0
aW9ucw0KPiA+IHJlcXVpcmUgbXVsdGlwbGUgY29uc2VjdXRpdmUgUi9XIG9wZXJhdGlvbnMsIGR1
cmluZyB3aGljaCB0aGUgZGV2aWNlDQo+ID4gc2hvdWxkbid0IGJlIGludGVycnVwdGVkLg0KPiA+
IA0KPiA+IFNpZ25lZC1vZmYtYnk6IExhcnMtUGV0ZXIgQ2xhdXNlbiA8bGFyc0BtZXRhZm9vLmRl
Pg0KPiA+IFNpZ25lZC1vZmYtYnk6IEFsZXhhbmRydSBBcmRlbGVhbiA8YWxleGFuZHJ1LmFyZGVs
ZWFuQGFuYWxvZy5jb20+DQo+IA0KPiBIaSBBbGV4YW5kcnUuICBMYXJzIHBvaW50ZWQgb3V0IEkg
d2FzIHNpbXBseSB3cm9uZyBpbiBteSBjb21wbGFpbnRzIHdpdGgNCj4gdGhlIHByZXZpb3VzIGRl
c2NyaXB0aW9uIC0gaXQgd2FzIGNvcnJlY3QgaW4gdGhhdCBjYXNlIC0gd2UgbmVlZCBwZXJoYXBz
DQo+IHRvIGV4cGFuZCB0aGUgZGVzY3JpcHRpb24gdG8gaW5jbHVkZSB3aGF0IHlvdSBoYXZlIGhl
cmUgYXMgd2VsbC4NCj4gDQo+IEdpdmVuIEkgZG91YnQgeW91IGNhcmUgdG9vIG11Y2ggb24gdGhl
IHdvcmRpbmcgSSd2ZSBmdXNlZCB0aGUgdHdvLg0KPiANCj4gCS8qDQo+IAkgKiBMb2NrIGZvciBh
Y2Nlc3NpbmcgZGV2aWNlIHJlZ2lzdGVycy4gU29tZSBvcGVyYXRpb25zIHJlcXVpcmUNCj4gCSAq
IG11bHRpcGxlIGNvbnNlY3V0aXZlIFIvVyBvcGVyYXRpb25zLCBkdXJpbmcgd2hpY2ggdGhlIGRl
dmljZQ0KPiAJICogc2hvdWxkbid0IGJlIGludGVycnVwdGVkLiAgVGhlIGJ1ZmZlcnMgYXJlIGFs
c28gc2hhcmVkIGFjcm9zcw0KPiAJICogYWxsIG9wZXJhdGlvbnMgc28gbmVlZCB0byBiZSBwcm90
ZWN0ZWQgb24gc3RhbmQgYWxvbmUgcmVhZHMgYW5kDQo+IAkgKiB3cml0ZXMuDQo+IAkgKi8NCj4g
DQo+IEFwcGxpZWQgd2l0aCB0aGF0IG1pbm9yIGFkZGl0aW9uLiAgVGhhbmtzIGZvciBwZXJzaXN0
ZW5jZSBvbiB0aGlzIQ0KDQpBY2suDQoNCkkgd2Fzbid0IHN1cmUgd2hhdCB0aGUgZmluYWwgcHJl
ZmVyZW5jZSB3YXMgZm9yIHRoaXMsIHNvIEkgc2VudCBhIFY0IGluDQpjYXNlIHRoYXQgd2FzIG1v
cmUgcHJlZmVycmVkLg0KDQpUaGFua3MNCkFsZXgNCg0KPiANCj4gSm9uYXRoYW4NCj4gDQo+ID4g
LS0tDQo+ID4gDQo+ID4gVjMgLT4gVjQ6DQo+ID4gKiB1cGRhdGVkIGNvbW1lbnQvZGVzY3JpcHRp
b24gb2YgdGhlIGxvY2sNCj4gPiANCj4gPiAgZHJpdmVycy9paW8vZnJlcXVlbmN5L2FkOTUyMy5j
IHwgMzIgKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0NCj4gPiAgMSBmaWxlIGNoYW5n
ZWQsIDIyIGluc2VydGlvbnMoKyksIDEwIGRlbGV0aW9ucygtKQ0KPiA+IA0KPiA+IGRpZmYgLS1n
aXQgYS9kcml2ZXJzL2lpby9mcmVxdWVuY3kvYWQ5NTIzLmMNCj4gPiBiL2RyaXZlcnMvaWlvL2Zy
ZXF1ZW5jeS9hZDk1MjMuYw0KPiA+IGluZGV4IGRkYjZhMzM0YWU2OC4uMmFiMTc1YTA2NjRkIDEw
MDY0NA0KPiA+IC0tLSBhL2RyaXZlcnMvaWlvL2ZyZXF1ZW5jeS9hZDk1MjMuYw0KPiA+ICsrKyBi
L2RyaXZlcnMvaWlvL2ZyZXF1ZW5jeS9hZDk1MjMuYw0KPiA+IEBAIC0yNzQsNiArMjc0LDEzIEBA
IHN0cnVjdCBhZDk1MjNfc3RhdGUgew0KPiA+ICAJdW5zaWduZWQgbG9uZwkJdmNvX291dF9mcmVx
W0FEOTUyM19OVU1fQ0xLX1NSQ107DQo+ID4gIAl1bnNpZ25lZCBjaGFyCQl2Y29fb3V0X21hcFtB
RDk1MjNfTlVNX0NIQU5fQUxUX0MNCj4gPiBMS19TUkNdOw0KPiA+ICANCj4gPiArCS8qDQo+ID4g
KwkgKiBMb2NrIGZvciBhY2Nlc3NpbmcgZGV2aWNlIHJlZ2lzdGVycy4gU29tZSBvcGVyYXRpb25z
DQo+ID4gcmVxdWlyZQ0KPiA+ICsJICogbXVsdGlwbGUgY29uc2VjdXRpdmUgUi9XIG9wZXJhdGlv
bnMsIGR1cmluZyB3aGljaCB0aGUNCj4gPiBkZXZpY2UNCj4gPiArCSAqIHNob3VsZG4ndCBiZSBp
bnRlcnJ1cHRlZC4NCj4gPiArCSAqLw0KPiA+ICsJc3RydWN0IG11dGV4CQlsb2NrOw0KPiA+ICsN
Cj4gPiAgCS8qDQo+ID4gIAkgKiBETUEgKHRodXMgY2FjaGUgY29oZXJlbmN5IG1haW50ZW5hbmNl
KSByZXF1aXJlcyB0aGUNCj4gPiAgCSAqIHRyYW5zZmVyIGJ1ZmZlcnMgdG8gbGl2ZSBpbiB0aGVp
ciBvd24gY2FjaGUgbGluZXMuDQo+ID4gQEAgLTUwMCw2ICs1MDcsNyBAQCBzdGF0aWMgc3NpemVf
dCBhZDk1MjNfc3RvcmUoc3RydWN0IGRldmljZSAqZGV2LA0KPiA+ICB7DQo+ID4gIAlzdHJ1Y3Qg
aWlvX2RldiAqaW5kaW9fZGV2ID0gZGV2X3RvX2lpb19kZXYoZGV2KTsNCj4gPiAgCXN0cnVjdCBp
aW9fZGV2X2F0dHIgKnRoaXNfYXR0ciA9IHRvX2lpb19kZXZfYXR0cihhdHRyKTsNCj4gPiArCXN0
cnVjdCBhZDk1MjNfc3RhdGUgKnN0ID0gaWlvX3ByaXYoaW5kaW9fZGV2KTsNCj4gPiAgCWJvb2wg
c3RhdGU7DQo+ID4gIAlpbnQgcmV0Ow0KPiA+ICANCj4gPiBAQCAtNTEwLDcgKzUxOCw3IEBAIHN0
YXRpYyBzc2l6ZV90IGFkOTUyM19zdG9yZShzdHJ1Y3QgZGV2aWNlICpkZXYsDQo+ID4gIAlpZiAo
IXN0YXRlKQ0KPiA+ICAJCXJldHVybiAwOw0KPiA+ICANCj4gPiAtCW11dGV4X2xvY2soJmluZGlv
X2Rldi0+bWxvY2spOw0KPiA+ICsJbXV0ZXhfbG9jaygmc3QtPmxvY2spOw0KPiA+ICAJc3dpdGNo
ICgodTMyKXRoaXNfYXR0ci0+YWRkcmVzcykgew0KPiA+ICAJY2FzZSBBRDk1MjNfU1lOQzoNCj4g
PiAgCQlyZXQgPSBhZDk1MjNfc3luYyhpbmRpb19kZXYpOw0KPiA+IEBAIC01MjEsNyArNTI5LDcg
QEAgc3RhdGljIHNzaXplX3QgYWQ5NTIzX3N0b3JlKHN0cnVjdCBkZXZpY2UgKmRldiwNCj4gPiAg
CWRlZmF1bHQ6DQo+ID4gIAkJcmV0ID0gLUVOT0RFVjsNCj4gPiAgCX0NCj4gPiAtCW11dGV4X3Vu
bG9jaygmaW5kaW9fZGV2LT5tbG9jayk7DQo+ID4gKwltdXRleF91bmxvY2soJnN0LT5sb2NrKTsN
Cj4gPiAgDQo+ID4gIAlyZXR1cm4gcmV0ID8gcmV0IDogbGVuOw0KPiA+ICB9DQo+ID4gQEAgLTUz
MiwxNSArNTQwLDE2IEBAIHN0YXRpYyBzc2l6ZV90IGFkOTUyM19zaG93KHN0cnVjdCBkZXZpY2Ug
KmRldiwNCj4gPiAgew0KPiA+ICAJc3RydWN0IGlpb19kZXYgKmluZGlvX2RldiA9IGRldl90b19p
aW9fZGV2KGRldik7DQo+ID4gIAlzdHJ1Y3QgaWlvX2Rldl9hdHRyICp0aGlzX2F0dHIgPSB0b19p
aW9fZGV2X2F0dHIoYXR0cik7DQo+ID4gKwlzdHJ1Y3QgYWQ5NTIzX3N0YXRlICpzdCA9IGlpb19w
cml2KGluZGlvX2Rldik7DQo+ID4gIAlpbnQgcmV0Ow0KPiA+ICANCj4gPiAtCW11dGV4X2xvY2so
JmluZGlvX2Rldi0+bWxvY2spOw0KPiA+ICsJbXV0ZXhfbG9jaygmc3QtPmxvY2spOw0KPiA+ICAJ
cmV0ID0gYWQ5NTIzX3JlYWQoaW5kaW9fZGV2LCBBRDk1MjNfUkVBREJBQ0tfMCk7DQo+ID4gIAlp
ZiAocmV0ID49IDApIHsNCj4gPiAgCQlyZXQgPSBzcHJpbnRmKGJ1ZiwgIiVkXG4iLCAhIShyZXQg
JiAoMSA8PA0KPiA+ICAJCQkodTMyKXRoaXNfYXR0ci0+YWRkcmVzcykpKTsNCj4gPiAgCX0NCj4g
PiAtCW11dGV4X3VubG9jaygmaW5kaW9fZGV2LT5tbG9jayk7DQo+ID4gKwltdXRleF91bmxvY2so
JnN0LT5sb2NrKTsNCj4gPiAgDQo+ID4gIAlyZXR1cm4gcmV0Ow0KPiA+ICB9DQo+ID4gQEAgLTYy
Myw5ICs2MzIsOSBAQCBzdGF0aWMgaW50IGFkOTUyM19yZWFkX3JhdyhzdHJ1Y3QgaWlvX2Rldg0K
PiA+ICppbmRpb19kZXYsDQo+ID4gIAl1bnNpZ25lZCBpbnQgY29kZTsNCj4gPiAgCWludCByZXQ7
DQo+ID4gIA0KPiA+IC0JbXV0ZXhfbG9jaygmaW5kaW9fZGV2LT5tbG9jayk7DQo+ID4gKwltdXRl
eF9sb2NrKCZzdC0+bG9jayk7DQo+ID4gIAlyZXQgPSBhZDk1MjNfcmVhZChpbmRpb19kZXYsIEFE
OTUyM19DSEFOTkVMX0NMT0NLX0RJU1QoY2hhbi0NCj4gPiA+Y2hhbm5lbCkpOw0KPiA+IC0JbXV0
ZXhfdW5sb2NrKCZpbmRpb19kZXYtPm1sb2NrKTsNCj4gPiArCW11dGV4X3VubG9jaygmc3QtPmxv
Y2spOw0KPiA+ICANCj4gPiAgCWlmIChyZXQgPCAwKQ0KPiA+ICAJCXJldHVybiByZXQ7DQo+ID4g
QEAgLTY1OSw3ICs2NjgsNyBAQCBzdGF0aWMgaW50IGFkOTUyM193cml0ZV9yYXcoc3RydWN0IGlp
b19kZXYNCj4gPiAqaW5kaW9fZGV2LA0KPiA+ICAJdW5zaWduZWQgaW50IHJlZzsNCj4gPiAgCWlu
dCByZXQsIHRtcCwgY29kZTsNCj4gPiAgDQo+ID4gLQltdXRleF9sb2NrKCZpbmRpb19kZXYtPm1s
b2NrKTsNCj4gPiArCW11dGV4X2xvY2soJnN0LT5sb2NrKTsNCj4gPiAgCXJldCA9IGFkOTUyM19y
ZWFkKGluZGlvX2RldiwgQUQ5NTIzX0NIQU5ORUxfQ0xPQ0tfRElTVChjaGFuLQ0KPiA+ID5jaGFu
bmVsKSk7DQo+ID4gIAlpZiAocmV0IDwgMCkNCj4gPiAgCQlnb3RvIG91dDsNCj4gPiBAQCAtNzA1
LDcgKzcxNCw3IEBAIHN0YXRpYyBpbnQgYWQ5NTIzX3dyaXRlX3JhdyhzdHJ1Y3QgaWlvX2Rldg0K
PiA+ICppbmRpb19kZXYsDQo+ID4gIA0KPiA+ICAJYWQ5NTIzX2lvX3VwZGF0ZShpbmRpb19kZXYp
Ow0KPiA+ICBvdXQ6DQo+ID4gLQltdXRleF91bmxvY2soJmluZGlvX2Rldi0+bWxvY2spOw0KPiA+
ICsJbXV0ZXhfdW5sb2NrKCZzdC0+bG9jayk7DQo+ID4gIAlyZXR1cm4gcmV0Ow0KPiA+ICB9DQo+
ID4gIA0KPiA+IEBAIC03MTMsOSArNzIyLDEwIEBAIHN0YXRpYyBpbnQgYWQ5NTIzX3JlZ19hY2Nl
c3Moc3RydWN0IGlpb19kZXYNCj4gPiAqaW5kaW9fZGV2LA0KPiA+ICAJCQkgICAgICB1bnNpZ25l
ZCBpbnQgcmVnLCB1bnNpZ25lZCBpbnQgd3JpdGV2YWwsDQo+ID4gIAkJCSAgICAgIHVuc2lnbmVk
IGludCAqcmVhZHZhbCkNCj4gPiAgew0KPiA+ICsJc3RydWN0IGFkOTUyM19zdGF0ZSAqc3QgPSBp
aW9fcHJpdihpbmRpb19kZXYpOw0KPiA+ICAJaW50IHJldDsNCj4gPiAgDQo+ID4gLQltdXRleF9s
b2NrKCZpbmRpb19kZXYtPm1sb2NrKTsNCj4gPiArCW11dGV4X2xvY2soJnN0LT5sb2NrKTsNCj4g
PiAgCWlmIChyZWFkdmFsID09IE5VTEwpIHsNCj4gPiAgCQlyZXQgPSBhZDk1MjNfd3JpdGUoaW5k
aW9fZGV2LCByZWcgfCBBRDk1MjNfUjFCLA0KPiA+IHdyaXRldmFsKTsNCj4gPiAgCQlhZDk1MjNf
aW9fdXBkYXRlKGluZGlvX2Rldik7DQo+ID4gQEAgLTcyOCw3ICs3MzgsNyBAQCBzdGF0aWMgaW50
IGFkOTUyM19yZWdfYWNjZXNzKHN0cnVjdCBpaW9fZGV2DQo+ID4gKmluZGlvX2RldiwNCj4gPiAg
CX0NCj4gPiAgDQo+ID4gIG91dF91bmxvY2s6DQo+ID4gLQltdXRleF91bmxvY2soJmluZGlvX2Rl
di0+bWxvY2spOw0KPiA+ICsJbXV0ZXhfdW5sb2NrKCZzdC0+bG9jayk7DQo+ID4gIA0KPiA+ICAJ
cmV0dXJuIHJldDsNCj4gPiAgfQ0KPiA+IEBAIC05NjcsNiArOTc3LDggQEAgc3RhdGljIGludCBh
ZDk1MjNfcHJvYmUoc3RydWN0IHNwaV9kZXZpY2UgKnNwaSkNCj4gPiAgDQo+ID4gIAlzdCA9IGlp
b19wcml2KGluZGlvX2Rldik7DQo+ID4gIA0KPiA+ICsJbXV0ZXhfaW5pdCgmc3QtPmxvY2spOw0K
PiA+ICsNCj4gPiAgCXN0LT5yZWcgPSBkZXZtX3JlZ3VsYXRvcl9nZXQoJnNwaS0+ZGV2LCAidmNj
Iik7DQo+ID4gIAlpZiAoIUlTX0VSUihzdC0+cmVnKSkgew0KPiA+ICAJCXJldCA9IHJlZ3VsYXRv
cl9lbmFibGUoc3QtPnJlZyk7DQo+IA0KPiA=

^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2018-07-23 10:32 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2018-07-18  7:29 [PATCH V4] iio: ad9523: replace core mlock with local lock Alexandru Ardelean
2018-07-21 16:40 ` Jonathan Cameron
2018-07-23  9:32   ` Ardelean, Alexandru

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.