linux-iio.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH v2] iio: ad7793: implement IIO_CHAN_INFO_SAMP_FREQ
@ 2018-03-08  9:33 Michael Nosthoff
  2018-03-09 12:39 ` Ardelean, Alexandru
  0 siblings, 1 reply; 2+ messages in thread
From: Michael Nosthoff @ 2018-03-08  9:33 UTC (permalink / raw)
  To: linux-iio

This commit is a follow-up to changes made to ad_sigma_delta.h
in staging: iio: ad7192: implement IIO_CHAN_INFO_SAMP_FREQ
which broke ad7793 as it was not altered to match those changes.

This driver predates the availability of IIO_CHAN_INFO_SAMP_FREQ
attribute wherein usage has some advantages like it can be accessed by
in-kernel consumers as well as reduces the code size.

Therefore, use IIO_CHAN_INFO_SAMP_FREQ to implement the
sampling_frequency attribute instead of using IIO_DEV_ATTR_SAMP_FREQ()
macro.

Move code from the functions associated with IIO_DEV_ATTR_SAMP_FREQ()
into respective read and write hooks with the mask set to
IIO_CHAN_INFO_SAMP_FREQ.

Fixes: a13e831fcaa7 ("staging: iio: ad7192: implement 
IIO_CHAN_INFO_SAMP_FREQ")

Signed-off-by: Michael Nosthoff <committed@heine.so>
---
Changes in v2:

   - Added Fixes Tag
   - Removed unnecessary ret=0 statement

  drivers/iio/adc/ad7793.c | 73 
+++++++++++++++---------------------------------
  1 file changed, 22 insertions(+), 51 deletions(-)

diff --git a/drivers/iio/adc/ad7793.c b/drivers/iio/adc/ad7793.c
index 47c3d7f..fa31a36 100644
--- a/drivers/iio/adc/ad7793.c
+++ b/drivers/iio/adc/ad7793.c
@@ -348,55 +348,6 @@ static const u16 ad7793_sample_freq_avail[16] = {0, 
470, 242, 123, 62, 50, 39,
  static const u16 ad7797_sample_freq_avail[16] = {0, 0, 0, 123, 62, 50, 
0,
  					33, 0, 17, 16, 12, 10, 8, 6, 4};

-static ssize_t ad7793_read_frequency(struct device *dev,
-		struct device_attribute *attr,
-		char *buf)
-{
-	struct iio_dev *indio_dev = dev_to_iio_dev(dev);
-	struct ad7793_state *st = iio_priv(indio_dev);
-
-	return sprintf(buf, "%d\n",
-	       st->chip_info->sample_freq_avail[AD7793_MODE_RATE(st->mode)]);
-}
-
-static ssize_t ad7793_write_frequency(struct device *dev,
-		struct device_attribute *attr,
-		const char *buf,
-		size_t len)
-{
-	struct iio_dev *indio_dev = dev_to_iio_dev(dev);
-	struct ad7793_state *st = iio_priv(indio_dev);
-	long lval;
-	int i, ret;
-
-	ret = kstrtol(buf, 10, &lval);
-	if (ret)
-		return ret;
-
-	if (lval == 0)
-		return -EINVAL;
-
-	for (i = 0; i < 16; i++)
-		if (lval == st->chip_info->sample_freq_avail[i])
-			break;
-	if (i == 16)
-		return -EINVAL;
-
-	ret = iio_device_claim_direct_mode(indio_dev);
-	if (ret)
-		return ret;
-	st->mode &= ~AD7793_MODE_RATE(-1);
-	st->mode |= AD7793_MODE_RATE(i);
-	ad_sd_write_reg(&st->sd, AD7793_REG_MODE, sizeof(st->mode), st->mode);
-	iio_device_release_direct_mode(indio_dev);
-
-	return len;
-}
-
-static IIO_DEV_ATTR_SAMP_FREQ(S_IWUSR | S_IRUGO,
-		ad7793_read_frequency,
-		ad7793_write_frequency);
-
  static IIO_CONST_ATTR_SAMP_FREQ_AVAIL(
  	"470 242 123 62 50 39 33 19 17 16 12 10 8 6 4");

@@ -424,7 +375,6 @@ static 
IIO_DEVICE_ATTR_NAMED(in_m_in_scale_available,
  		ad7793_show_scale_available, NULL, 0);

  static struct attribute *ad7793_attributes[] = {
-	&iio_dev_attr_sampling_frequency.dev_attr.attr,
  	&iio_const_attr_sampling_frequency_available.dev_attr.attr,
  	&iio_dev_attr_in_m_in_scale_available.dev_attr.attr,
  	NULL
@@ -435,7 +385,6 @@ static const struct attribute_group 
ad7793_attribute_group = {
  };

  static struct attribute *ad7797_attributes[] = {
-	&iio_dev_attr_sampling_frequency.dev_attr.attr,
  	&iio_const_attr_sampling_frequency_available_ad7797.dev_attr.attr,
  	NULL
  };
@@ -505,6 +454,9 @@ static int ad7793_read_raw(struct iio_dev 
*indio_dev,
  			*val -= offset;
  		}
  		return IIO_VAL_INT;
+	case IIO_CHAN_INFO_SAMP_FREQ:
+		*val = st->chip_info->sample_freq_avail[AD7793_MODE_RATE(st->mode)];
+		return IIO_VAL_INT;
  	}
  	return -EINVAL;
  }
@@ -542,6 +494,25 @@ static int ad7793_write_raw(struct iio_dev 
*indio_dev,
  				break;
  			}
  		break;
+	case IIO_CHAN_INFO_SAMP_FREQ:
+		if (!val) {
+			ret = -EINVAL;
+			break;
+		}
+
+		for (i = 0; i < 16; i++)
+			if (val == st->chip_info->sample_freq_avail[i])
+				break;
+
+		if (i == 16) {
+			ret = -EINVAL;
+			break;
+		}
+
+		st->mode &= ~AD7793_MODE_RATE(-1);
+		st->mode |= AD7793_MODE_RATE(i);
+		ad_sd_write_reg(&st->sd, AD7793_REG_MODE, sizeof(st->mode), 
st->mode);
+		break;
  	default:
  		ret = -EINVAL;
  	}
-- 
2.7.4

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

* Re: [PATCH v2] iio: ad7793: implement IIO_CHAN_INFO_SAMP_FREQ
  2018-03-08  9:33 [PATCH v2] iio: ad7793: implement IIO_CHAN_INFO_SAMP_FREQ Michael Nosthoff
@ 2018-03-09 12:39 ` Ardelean, Alexandru
  0 siblings, 0 replies; 2+ messages in thread
From: Ardelean, Alexandru @ 2018-03-09 12:39 UTC (permalink / raw)
  To: linux-iio@vger.kernel.org, committed@heine.so

T24gVGh1LCAyMDE4LTAzLTA4IGF0IDEwOjMzICswMTAwLCBNaWNoYWVsIE5vc3Rob2ZmIHdyb3Rl
Og0KPiBUaGlzIGNvbW1pdCBpcyBhIGZvbGxvdy11cCB0byBjaGFuZ2VzIG1hZGUgdG8gYWRfc2ln
bWFfZGVsdGEuaA0KPiBpbiBzdGFnaW5nOiBpaW86IGFkNzE5MjogaW1wbGVtZW50IElJT19DSEFO
X0lORk9fU0FNUF9GUkVRDQo+IHdoaWNoIGJyb2tlIGFkNzc5MyBhcyBpdCB3YXMgbm90IGFsdGVy
ZWQgdG8gbWF0Y2ggdGhvc2UgY2hhbmdlcy4NCj4gDQo+IFRoaXMgZHJpdmVyIHByZWRhdGVzIHRo
ZSBhdmFpbGFiaWxpdHkgb2YgSUlPX0NIQU5fSU5GT19TQU1QX0ZSRVENCj4gYXR0cmlidXRlIHdo
ZXJlaW4gdXNhZ2UgaGFzIHNvbWUgYWR2YW50YWdlcyBsaWtlIGl0IGNhbiBiZSBhY2Nlc3NlZCBi
eQ0KPiBpbi1rZXJuZWwgY29uc3VtZXJzIGFzIHdlbGwgYXMgcmVkdWNlcyB0aGUgY29kZSBzaXpl
Lg0KPiANCj4gVGhlcmVmb3JlLCB1c2UgSUlPX0NIQU5fSU5GT19TQU1QX0ZSRVEgdG8gaW1wbGVt
ZW50IHRoZQ0KPiBzYW1wbGluZ19mcmVxdWVuY3kgYXR0cmlidXRlIGluc3RlYWQgb2YgdXNpbmcg
SUlPX0RFVl9BVFRSX1NBTVBfRlJFUSgpDQo+IG1hY3JvLg0KPiANCj4gTW92ZSBjb2RlIGZyb20g
dGhlIGZ1bmN0aW9ucyBhc3NvY2lhdGVkIHdpdGggSUlPX0RFVl9BVFRSX1NBTVBfRlJFUSgpDQo+
IGludG8gcmVzcGVjdGl2ZSByZWFkIGFuZCB3cml0ZSBob29rcyB3aXRoIHRoZSBtYXNrIHNldCB0
bw0KPiBJSU9fQ0hBTl9JTkZPX1NBTVBfRlJFUS4NCj4gDQo+IEZpeGVzOiBhMTNlODMxZmNhYTcg
KCJzdGFnaW5nOiBpaW86IGFkNzE5MjogaW1wbGVtZW50IA0KPiBJSU9fQ0hBTl9JTkZPX1NBTVBf
RlJFUSIpDQoNCkhleSwNCg0KVGhhbmtzIGZvciB0aGUgZWZmb3J0IGluIGZpbmRpbmcgYW5kIGZp
eGluZyB0aGlzIDopDQoNCkNhbiB5b3UgcmVjcmVhdGUgYW5kIHJlc2VuZCB0aGUgcGF0Y2ggPw0K
SXQgc2VlbXMgdG8gYmUgbWFsZm9ybWVkIDsgbGluZXMgbG9vayB3cmFwcGVkLg0KU2VlIGV4YW1w
bGUgaW5saW5lLg0KDQpJJ20gc3VzcGVjdGluZyB5b3UgZGlkIG5vdCB1c2UgYGdpdCBzZW5kLW1h
aWxgLg0KQ2FuIHlvdSByZXNlbmQgaXQgd2l0aCBgZ2l0IHNlbmQtZW1haWxgLg0KDQoNClRoYW5r
cw0KQWxleA0KDQo+IA0KPiBTaWduZWQtb2ZmLWJ5OiBNaWNoYWVsIE5vc3Rob2ZmIDxjb21taXR0
ZWRAaGVpbmUuc28+DQo+IC0tLQ0KPiBDaGFuZ2VzIGluIHYyOg0KPiANCj4gICAgLSBBZGRlZCBG
aXhlcyBUYWcNCj4gICAgLSBSZW1vdmVkIHVubmVjZXNzYXJ5IHJldD0wIHN0YXRlbWVudA0KPiAN
Cj4gICBkcml2ZXJzL2lpby9hZGMvYWQ3NzkzLmMgfCA3MyANCj4gKysrKysrKysrKysrKysrLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQo+ICAgMSBmaWxlIGNoYW5nZWQsIDIyIGlu
c2VydGlvbnMoKyksIDUxIGRlbGV0aW9ucygtKQ0KPiANCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMv
aWlvL2FkYy9hZDc3OTMuYyBiL2RyaXZlcnMvaWlvL2FkYy9hZDc3OTMuYw0KPiBpbmRleCA0N2Mz
ZDdmLi5mYTMxYTM2IDEwMDY0NA0KPiAtLS0gYS9kcml2ZXJzL2lpby9hZGMvYWQ3NzkzLmMNCj4g
KysrIGIvZHJpdmVycy9paW8vYWRjL2FkNzc5My5jDQo+IEBAIC0zNDgsNTUgKzM0OCw2IEBAIHN0
YXRpYyBjb25zdCB1MTYgYWQ3NzkzX3NhbXBsZV9mcmVxX2F2YWlsWzE2XSA9IHswLCANCj4gNDcw
LCAyNDIsIDEyMywgNjIsIDUwLCAzOSwNCg0KRXhhbXBsZTogdGhpcyBsaW5lIHNlZW1zIHRvIGhh
dmUgYmVlbiB3cmFwcGVkIGJ5IGFuIGVkaXRvciA7IHNvIGlzIHRoZSBuZXh0IG9uZTsNCg0KPiAg
IHN0YXRpYyBjb25zdCB1MTYgYWQ3Nzk3X3NhbXBsZV9mcmVxX2F2YWlsWzE2XSA9IHswLCAwLCAw
LCAxMjMsIDYyLCA1MCwgDQo+IDAsDQo+ICAgCQkJCQkzMywgMCwgMTcsIDE2LCAxMiwgMTAsIDgs
IDYsIDR9Ow0KPiANCj4gLXN0YXRpYyBzc2l6ZV90IGFkNzc5M19yZWFkX2ZyZXF1ZW5jeShzdHJ1
Y3QgZGV2aWNlICpkZXYsDQo+IC0JCXN0cnVjdCBkZXZpY2VfYXR0cmlidXRlICphdHRyLA0KPiAt
CQljaGFyICpidWYpDQo+IC17DQo+IC0Jc3RydWN0IGlpb19kZXYgKmluZGlvX2RldiA9IGRldl90
b19paW9fZGV2KGRldik7DQo+IC0Jc3RydWN0IGFkNzc5M19zdGF0ZSAqc3QgPSBpaW9fcHJpdihp
bmRpb19kZXYpOw0KPiAtDQo+IC0JcmV0dXJuIHNwcmludGYoYnVmLCAiJWRcbiIsDQo+IC0JICAg
ICAgIHN0LT5jaGlwX2luZm8tPnNhbXBsZV9mcmVxX2F2YWlsW0FENzc5M19NT0RFX1JBVEUoc3Qt
Pm1vZGUpXSk7DQo+IC19DQo+IC0NCj4gLXN0YXRpYyBzc2l6ZV90IGFkNzc5M193cml0ZV9mcmVx
dWVuY3koc3RydWN0IGRldmljZSAqZGV2LA0KPiAtCQlzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0ZSAq
YXR0ciwNCj4gLQkJY29uc3QgY2hhciAqYnVmLA0KPiAtCQlzaXplX3QgbGVuKQ0KPiAtew0KPiAt
CXN0cnVjdCBpaW9fZGV2ICppbmRpb19kZXYgPSBkZXZfdG9faWlvX2RldihkZXYpOw0KPiAtCXN0
cnVjdCBhZDc3OTNfc3RhdGUgKnN0ID0gaWlvX3ByaXYoaW5kaW9fZGV2KTsNCj4gLQlsb25nIGx2
YWw7DQo+IC0JaW50IGksIHJldDsNCj4gLQ0KPiAtCXJldCA9IGtzdHJ0b2woYnVmLCAxMCwgJmx2
YWwpOw0KPiAtCWlmIChyZXQpDQo+IC0JCXJldHVybiByZXQ7DQo+IC0NCj4gLQlpZiAobHZhbCA9
PSAwKQ0KPiAtCQlyZXR1cm4gLUVJTlZBTDsNCj4gLQ0KPiAtCWZvciAoaSA9IDA7IGkgPCAxNjsg
aSsrKQ0KPiAtCQlpZiAobHZhbCA9PSBzdC0+Y2hpcF9pbmZvLT5zYW1wbGVfZnJlcV9hdmFpbFtp
XSkNCj4gLQkJCWJyZWFrOw0KPiAtCWlmIChpID09IDE2KQ0KPiAtCQlyZXR1cm4gLUVJTlZBTDsN
Cj4gLQ0KPiAtCXJldCA9IGlpb19kZXZpY2VfY2xhaW1fZGlyZWN0X21vZGUoaW5kaW9fZGV2KTsN
Cj4gLQlpZiAocmV0KQ0KPiAtCQlyZXR1cm4gcmV0Ow0KPiAtCXN0LT5tb2RlICY9IH5BRDc3OTNf
TU9ERV9SQVRFKC0xKTsNCj4gLQlzdC0+bW9kZSB8PSBBRDc3OTNfTU9ERV9SQVRFKGkpOw0KPiAt
CWFkX3NkX3dyaXRlX3JlZygmc3QtPnNkLCBBRDc3OTNfUkVHX01PREUsIHNpemVvZihzdC0+bW9k
ZSksIHN0LT5tb2RlKTsNCj4gLQlpaW9fZGV2aWNlX3JlbGVhc2VfZGlyZWN0X21vZGUoaW5kaW9f
ZGV2KTsNCj4gLQ0KPiAtCXJldHVybiBsZW47DQo+IC19DQo+IC0NCj4gLXN0YXRpYyBJSU9fREVW
X0FUVFJfU0FNUF9GUkVRKFNfSVdVU1IgfCBTX0lSVUdPLA0KPiAtCQlhZDc3OTNfcmVhZF9mcmVx
dWVuY3ksDQo+IC0JCWFkNzc5M193cml0ZV9mcmVxdWVuY3kpOw0KPiAtDQo+ICAgc3RhdGljIElJ
T19DT05TVF9BVFRSX1NBTVBfRlJFUV9BVkFJTCgNCj4gICAJIjQ3MCAyNDIgMTIzIDYyIDUwIDM5
IDMzIDE5IDE3IDE2IDEyIDEwIDggNiA0Iik7DQo+IA0KPiBAQCAtNDI0LDcgKzM3NSw2IEBAIHN0
YXRpYyANCj4gSUlPX0RFVklDRV9BVFRSX05BTUVEKGluX21faW5fc2NhbGVfYXZhaWxhYmxlLA0K
PiAgIAkJYWQ3NzkzX3Nob3dfc2NhbGVfYXZhaWxhYmxlLCBOVUxMLCAwKTsNCj4gDQo+ICAgc3Rh
dGljIHN0cnVjdCBhdHRyaWJ1dGUgKmFkNzc5M19hdHRyaWJ1dGVzW10gPSB7DQo+IC0JJmlpb19k
ZXZfYXR0cl9zYW1wbGluZ19mcmVxdWVuY3kuZGV2X2F0dHIuYXR0ciwNCj4gICAJJmlpb19jb25z
dF9hdHRyX3NhbXBsaW5nX2ZyZXF1ZW5jeV9hdmFpbGFibGUuZGV2X2F0dHIuYXR0ciwNCj4gICAJ
Jmlpb19kZXZfYXR0cl9pbl9tX2luX3NjYWxlX2F2YWlsYWJsZS5kZXZfYXR0ci5hdHRyLA0KPiAg
IAlOVUxMDQo+IEBAIC00MzUsNyArMzg1LDYgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBhdHRyaWJ1
dGVfZ3JvdXAgDQo+IGFkNzc5M19hdHRyaWJ1dGVfZ3JvdXAgPSB7DQo+ICAgfTsNCj4gDQo+ICAg
c3RhdGljIHN0cnVjdCBhdHRyaWJ1dGUgKmFkNzc5N19hdHRyaWJ1dGVzW10gPSB7DQo+IC0JJmlp
b19kZXZfYXR0cl9zYW1wbGluZ19mcmVxdWVuY3kuZGV2X2F0dHIuYXR0ciwNCj4gICAJJmlpb19j
b25zdF9hdHRyX3NhbXBsaW5nX2ZyZXF1ZW5jeV9hdmFpbGFibGVfYWQ3Nzk3LmRldl9hdHRyLmF0
dHIsDQo+ICAgCU5VTEwNCj4gICB9Ow0KPiBAQCAtNTA1LDYgKzQ1NCw5IEBAIHN0YXRpYyBpbnQg
YWQ3NzkzX3JlYWRfcmF3KHN0cnVjdCBpaW9fZGV2IA0KPiAqaW5kaW9fZGV2LA0KPiAgIAkJCSp2
YWwgLT0gb2Zmc2V0Ow0KPiAgIAkJfQ0KPiAgIAkJcmV0dXJuIElJT19WQUxfSU5UOw0KPiArCWNh
c2UgSUlPX0NIQU5fSU5GT19TQU1QX0ZSRVE6DQo+ICsJCSp2YWwgPSBzdC0+Y2hpcF9pbmZvLT5z
YW1wbGVfZnJlcV9hdmFpbFtBRDc3OTNfTU9ERV9SQVRFKHN0LT5tb2RlKV07DQo+ICsJCXJldHVy
biBJSU9fVkFMX0lOVDsNCj4gICAJfQ0KPiAgIAlyZXR1cm4gLUVJTlZBTDsNCj4gICB9DQo+IEBA
IC01NDIsNiArNDk0LDI1IEBAIHN0YXRpYyBpbnQgYWQ3NzkzX3dyaXRlX3JhdyhzdHJ1Y3QgaWlv
X2RldiANCj4gKmluZGlvX2RldiwNCj4gICAJCQkJYnJlYWs7DQo+ICAgCQkJfQ0KPiAgIAkJYnJl
YWs7DQo+ICsJY2FzZSBJSU9fQ0hBTl9JTkZPX1NBTVBfRlJFUToNCj4gKwkJaWYgKCF2YWwpIHsN
Cj4gKwkJCXJldCA9IC1FSU5WQUw7DQo+ICsJCQlicmVhazsNCj4gKwkJfQ0KPiArDQo+ICsJCWZv
ciAoaSA9IDA7IGkgPCAxNjsgaSsrKQ0KPiArCQkJaWYgKHZhbCA9PSBzdC0+Y2hpcF9pbmZvLT5z
YW1wbGVfZnJlcV9hdmFpbFtpXSkNCj4gKwkJCQlicmVhazsNCj4gKw0KPiArCQlpZiAoaSA9PSAx
Nikgew0KPiArCQkJcmV0ID0gLUVJTlZBTDsNCj4gKwkJCWJyZWFrOw0KPiArCQl9DQo+ICsNCj4g
KwkJc3QtPm1vZGUgJj0gfkFENzc5M19NT0RFX1JBVEUoLTEpOw0KPiArCQlzdC0+bW9kZSB8PSBB
RDc3OTNfTU9ERV9SQVRFKGkpOw0KPiArCQlhZF9zZF93cml0ZV9yZWcoJnN0LT5zZCwgQUQ3Nzkz
X1JFR19NT0RFLCBzaXplb2Yoc3QtPm1vZGUpLCANCj4gc3QtPm1vZGUpOw0KPiArCQlicmVhazsN
Cj4gICAJZGVmYXVsdDoNCj4gICAJCXJldCA9IC1FSU5WQUw7DQo+ICAgCX0=

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

end of thread, other threads:[~2018-03-09 12:40 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2018-03-08  9:33 [PATCH v2] iio: ad7793: implement IIO_CHAN_INFO_SAMP_FREQ Michael Nosthoff
2018-03-09 12:39 ` Ardelean, Alexandru

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).