* [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).