linux-iio.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* Re: [PATCH 0/8] IIO: Cleanups and complicated channel modifiers.
  2012-05-30 19:40 [PATCH 0/8] IIO: Cleanups and complicated channel modifiers Jonathan Cameron
@ 2012-05-30 19:33 ` Getz, Robin
  2012-05-31  7:18   ` Jonathan Cameron
  2012-05-30 19:40 ` [PATCH 1/8] staging:iio:accel drop sysfs interface for resetting devices Jonathan Cameron
                   ` (7 subsequent siblings)
  8 siblings, 1 reply; 19+ messages in thread
From: Getz, Robin @ 2012-05-30 19:33 UTC (permalink / raw)
  To: Jonathan Cameron; +Cc: linux-iio@vger.kernel.org

On Wed 30 May 2012 15:40, Jonathan Cameron pondered:
> Hi All,
>
> Dropping the reset attributes was discussed a while back and no
> one could come up with a reason for having them. Unless anyone
> does have a good reason, lets drop these before we move the
> relevant drivers out of staging.

This is the only way that userspace can re-initialise the device (if someone 
modified the calibration settings, and wants to get back to the factory 
setting).

That doesn't mean it's necessary - it just means that is what it was there 
for.

-Robin

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

* [PATCH 0/8] IIO: Cleanups and complicated channel modifiers.
@ 2012-05-30 19:40 Jonathan Cameron
  2012-05-30 19:33 ` Getz, Robin
                   ` (8 more replies)
  0 siblings, 9 replies; 19+ messages in thread
From: Jonathan Cameron @ 2012-05-30 19:40 UTC (permalink / raw)
  To: linux-iio; +Cc: Jonathan Cameron

Hi All,

Dropping the reset attributes was discussed a while back and no
one could come up with a reason for having them. Unless anyone
does have a good reason, lets drop these before we move the
relevant drivers out of staging.

The other patches here are more 'interesting' in that they make use of
modifiers for sum squared of xyz and root sum squared of x and y.
These are common enough things to see and to my mind are well handled
as modifiers. What do people think?

Jonathan

Jonathan Cameron (8):
  staging:iio:accel drop sysfs interface for resetting devices.
  staging:iio:gyro:adis16260 drop sysfs interface for manual device
    reset.
  staging:iio:imu:adis16400 drop sysfs interface for manual device
    reset.
  IIO: Add a modifier for sqrt(x^2+y^2)
  staging:iio:accel:adis16204 fix bug in channel modifier handling
  staging:iio:accel:adis16204 support the rss channel via chan spec.
  IIO: Add a modifier for x^2+y^2+z^2
  staging:iio: Add some missing peak elements to the info_mask

 drivers/iio/industrialio-core.c            |    2 +
 drivers/staging/iio/accel/adis16201_core.c |   27 --------
 drivers/staging/iio/accel/adis16203_core.c |   28 --------
 drivers/staging/iio/accel/adis16204_core.c |  103 ++++++++--------------------
 drivers/staging/iio/accel/adis16209_core.c |   29 --------
 drivers/staging/iio/accel/adis16220_core.c |   24 -------
 drivers/staging/iio/accel/adis16240_core.c |   29 ++------
 drivers/staging/iio/gyro/adis16260_core.c  |   19 -----
 drivers/staging/iio/imu/adis16400_core.c   |   22 ------
 include/linux/iio/types.h                  |    2 +
 10 files changed, 39 insertions(+), 246 deletions(-)

-- 
1.7.10.2

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

* [PATCH 1/8] staging:iio:accel drop sysfs interface for resetting devices.
  2012-05-30 19:40 [PATCH 0/8] IIO: Cleanups and complicated channel modifiers Jonathan Cameron
  2012-05-30 19:33 ` Getz, Robin
@ 2012-05-30 19:40 ` Jonathan Cameron
  2012-06-01  9:24   ` Hennerich, Michael
  2012-05-30 19:41 ` [PATCH 2/8] staging:iio:gyro:adis16260 drop sysfs interface for manual device reset Jonathan Cameron
                   ` (6 subsequent siblings)
  8 siblings, 1 reply; 19+ messages in thread
From: Jonathan Cameron @ 2012-05-30 19:40 UTC (permalink / raw)
  To: linux-iio; +Cc: Jonathan Cameron

There is no reason why userspace should want to do this manually.
Hence, lets drop this abi.

Signed-off-by: Jonathan Cameron <jic23@kernel.org>
---
 drivers/staging/iio/accel/adis16201_core.c |   27 --------------------------
 drivers/staging/iio/accel/adis16203_core.c |   28 ---------------------------
 drivers/staging/iio/accel/adis16204_core.c |   20 -------------------
 drivers/staging/iio/accel/adis16209_core.c |   29 ----------------------------
 drivers/staging/iio/accel/adis16220_core.c |   24 -----------------------
 drivers/staging/iio/accel/adis16240_core.c |   20 -------------------
 6 files changed, 148 deletions(-)

diff --git a/drivers/staging/iio/accel/adis16201_core.c b/drivers/staging/iio/accel/adis16201_core.c
index 02b3409..204106b 100644
--- a/drivers/staging/iio/accel/adis16201_core.c
+++ b/drivers/staging/iio/accel/adis16201_core.c
@@ -159,21 +159,6 @@ static int adis16201_reset(struct iio_dev *indio_dev)
 	return ret;
 }
 
-static ssize_t adis16201_write_reset(struct device *dev,
-		struct device_attribute *attr,
-		const char *buf, size_t len)
-{
-	int ret;
-	bool res;
-
-	if (len < 1)
-		return -EINVAL;
-	ret = strtobool(buf, &res);
-	if (ret || !res)
-		return ret;
-	return adis16201_reset(dev_to_iio_dev(dev));
-}
-
 int adis16201_set_irq(struct iio_dev *indio_dev, bool enable)
 {
 	int ret = 0;
@@ -507,19 +492,7 @@ static struct iio_chan_spec adis16201_channels[] = {
 	IIO_CHAN_SOFT_TIMESTAMP(7)
 };
 
-static IIO_DEVICE_ATTR(reset, S_IWUSR, NULL, adis16201_write_reset, 0);
-
-static struct attribute *adis16201_attributes[] = {
-	&iio_dev_attr_reset.dev_attr.attr,
-	NULL
-};
-
-static const struct attribute_group adis16201_attribute_group = {
-	.attrs = adis16201_attributes,
-};
-
 static const struct iio_info adis16201_info = {
-	.attrs = &adis16201_attribute_group,
 	.read_raw = &adis16201_read_raw,
 	.write_raw = &adis16201_write_raw,
 	.driver_module = THIS_MODULE,
diff --git a/drivers/staging/iio/accel/adis16203_core.c b/drivers/staging/iio/accel/adis16203_core.c
index 15d46bf..22085e9 100644
--- a/drivers/staging/iio/accel/adis16203_core.c
+++ b/drivers/staging/iio/accel/adis16203_core.c
@@ -178,22 +178,6 @@ static int adis16203_reset(struct iio_dev *indio_dev)
 	return ret;
 }
 
-static ssize_t adis16203_write_reset(struct device *dev,
-		struct device_attribute *attr,
-		const char *buf, size_t len)
-{
-	struct iio_dev *indio_dev = dev_to_iio_dev(dev);
-	if (len < 1)
-		return -EINVAL;
-	switch (buf[0]) {
-	case '1':
-	case 'y':
-	case 'Y':
-		return adis16203_reset(indio_dev);
-	}
-	return -EINVAL;
-}
-
 int adis16203_set_irq(struct iio_dev *indio_dev, bool enable)
 {
 	int ret = 0;
@@ -444,19 +428,7 @@ static struct iio_chan_spec adis16203_channels[] = {
 	IIO_CHAN_SOFT_TIMESTAMP(5),
 };
 
-static IIO_DEVICE_ATTR(reset, S_IWUSR, NULL, adis16203_write_reset, 0);
-
-static struct attribute *adis16203_attributes[] = {
-	&iio_dev_attr_reset.dev_attr.attr,
-	NULL
-};
-
-static const struct attribute_group adis16203_attribute_group = {
-	.attrs = adis16203_attributes,
-};
-
 static const struct iio_info adis16203_info = {
-	.attrs = &adis16203_attribute_group,
 	.read_raw = &adis16203_read_raw,
 	.write_raw = &adis16203_write_raw,
 	.driver_module = THIS_MODULE,
diff --git a/drivers/staging/iio/accel/adis16204_core.c b/drivers/staging/iio/accel/adis16204_core.c
index ac9d95e..5c02bc6 100644
--- a/drivers/staging/iio/accel/adis16204_core.c
+++ b/drivers/staging/iio/accel/adis16204_core.c
@@ -207,23 +207,6 @@ static int adis16204_reset(struct iio_dev *indio_dev)
 	return ret;
 }
 
-static ssize_t adis16204_write_reset(struct device *dev,
-		struct device_attribute *attr,
-		const char *buf, size_t len)
-{
-	struct iio_dev *indio_dev = dev_to_iio_dev(dev);
-
-	if (len < 1)
-		return -EINVAL;
-	switch (buf[0]) {
-	case '1':
-	case 'y':
-	case 'Y':
-		return adis16204_reset(indio_dev);
-	}
-	return -EINVAL;
-}
-
 int adis16204_set_irq(struct iio_dev *indio_dev, bool enable)
 {
 	int ret = 0;
@@ -310,8 +293,6 @@ static IIO_DEV_ATTR_ACCEL_XYPEAK(adis16204_read_14bit_signed,
 		ADIS16204_XY_PEAK_OUT);
 static IIO_CONST_ATTR(in_accel_xy_scale, "0.017125");
 
-static IIO_DEVICE_ATTR(reset, S_IWUSR, NULL, adis16204_write_reset, 0);
-
 enum adis16204_channel {
 	in_supply,
 	in_aux,
@@ -520,7 +501,6 @@ static struct iio_chan_spec adis16204_channels[] = {
 };
 
 static struct attribute *adis16204_attributes[] = {
-	&iio_dev_attr_reset.dev_attr.attr,
 	&iio_dev_attr_in_accel_xy.dev_attr.attr,
 	&iio_dev_attr_in_accel_xypeak.dev_attr.attr,
 	&iio_const_attr_in_accel_xy_scale.dev_attr.attr,
diff --git a/drivers/staging/iio/accel/adis16209_core.c b/drivers/staging/iio/accel/adis16209_core.c
index f6fd0d3..f4c82f1 100644
--- a/drivers/staging/iio/accel/adis16209_core.c
+++ b/drivers/staging/iio/accel/adis16209_core.c
@@ -153,23 +153,6 @@ static int adis16209_reset(struct iio_dev *indio_dev)
 	return ret;
 }
 
-static ssize_t adis16209_write_reset(struct device *dev,
-		struct device_attribute *attr,
-		const char *buf, size_t len)
-{
-	struct iio_dev *indio_dev = dev_to_iio_dev(dev);
-
-	if (len < 1)
-		return -EINVAL;
-	switch (buf[0]) {
-	case '1':
-	case 'y':
-	case 'Y':
-		return adis16209_reset(indio_dev);
-	}
-	return -EINVAL;
-}
-
 int adis16209_set_irq(struct iio_dev *indio_dev, bool enable)
 {
 	int ret = 0;
@@ -519,19 +502,7 @@ static struct iio_chan_spec adis16209_channels[] = {
 	IIO_CHAN_SOFT_TIMESTAMP(8)
 };
 
-static IIO_DEVICE_ATTR(reset, S_IWUSR, NULL, adis16209_write_reset, 0);
-
-static struct attribute *adis16209_attributes[] = {
-	&iio_dev_attr_reset.dev_attr.attr,
-	NULL
-};
-
-static const struct attribute_group adis16209_attribute_group = {
-	.attrs = adis16209_attributes,
-};
-
 static const struct iio_info adis16209_info = {
-	.attrs = &adis16209_attribute_group,
 	.read_raw = &adis16209_read_raw,
 	.write_raw = &adis16209_write_raw,
 	.driver_module = THIS_MODULE,
diff --git a/drivers/staging/iio/accel/adis16220_core.c b/drivers/staging/iio/accel/adis16220_core.c
index 6a9ac89..2877410 100644
--- a/drivers/staging/iio/accel/adis16220_core.c
+++ b/drivers/staging/iio/accel/adis16220_core.c
@@ -204,26 +204,6 @@ static int adis16220_reset(struct iio_dev *indio_dev)
 	return ret;
 }
 
-static ssize_t adis16220_write_reset(struct device *dev,
-		struct device_attribute *attr,
-		const char *buf, size_t len)
-{
-	struct iio_dev *indio_dev = dev_to_iio_dev(dev);
-	bool val;
-	int ret;
-
-	ret = strtobool(buf, &val);
-	if (ret)
-		return ret;
-	if (!val)
-		return -EINVAL;
-
-	ret = adis16220_reset(indio_dev);
-	if (ret)
-		return ret;
-	return len;
-}
-
 static ssize_t adis16220_write_capture(struct device *dev,
 		struct device_attribute *attr,
 		const char *buf, size_t len)
@@ -454,9 +434,6 @@ static struct bin_attribute adc2_bin = {
 	.size = ADIS16220_CAPTURE_SIZE,
 };
 
-static IIO_DEVICE_ATTR(reset, S_IWUSR, NULL,
-		adis16220_write_reset, 0);
-
 #define IIO_DEV_ATTR_CAPTURE(_store)				\
 	IIO_DEVICE_ATTR(capture, S_IWUSR, NULL, _store, 0)
 
@@ -611,7 +588,6 @@ static const struct iio_chan_spec adis16220_channels[] = {
 };
 
 static struct attribute *adis16220_attributes[] = {
-	&iio_dev_attr_reset.dev_attr.attr,
 	&iio_dev_attr_capture.dev_attr.attr,
 	&iio_dev_attr_capture_count.dev_attr.attr,
 	NULL
diff --git a/drivers/staging/iio/accel/adis16240_core.c b/drivers/staging/iio/accel/adis16240_core.c
index 8b15eae..2df39d1 100644
--- a/drivers/staging/iio/accel/adis16240_core.c
+++ b/drivers/staging/iio/accel/adis16240_core.c
@@ -199,23 +199,6 @@ static int adis16240_reset(struct iio_dev *indio_dev)
 	return ret;
 }
 
-static ssize_t adis16240_write_reset(struct device *dev,
-		struct device_attribute *attr,
-		const char *buf, size_t len)
-{
-	struct iio_dev *indio_dev = dev_to_iio_dev(dev);
-
-	if (len < 1)
-		return -EINVAL;
-	switch (buf[0]) {
-	case '1':
-	case 'y':
-	case 'Y':
-		return adis16240_reset(indio_dev);
-	}
-	return -EINVAL;
-}
-
 int adis16240_set_irq(struct iio_dev *indio_dev, bool enable)
 {
 	int ret = 0;
@@ -329,8 +312,6 @@ static IIO_DEVICE_ATTR(in_accel_xyz_squared_peak_raw, S_IRUGO,
 		       adis16240_read_12bit_signed, NULL,
 		       ADIS16240_XYZPEAK_OUT);
 
-static IIO_DEVICE_ATTR(reset, S_IWUSR, NULL, adis16240_write_reset, 0);
-
 static IIO_CONST_ATTR_SAMP_FREQ_AVAIL("4096");
 
 enum adis16240_chan {
@@ -556,7 +537,6 @@ static struct iio_chan_spec adis16240_channels[] = {
 static struct attribute *adis16240_attributes[] = {
 	&iio_dev_attr_in_accel_xyz_squared_peak_raw.dev_attr.attr,
 	&iio_const_attr_sampling_frequency_available.dev_attr.attr,
-	&iio_dev_attr_reset.dev_attr.attr,
 	NULL
 };
 
-- 
1.7.10.2

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

* [PATCH 2/8] staging:iio:gyro:adis16260 drop sysfs interface for manual device reset.
  2012-05-30 19:40 [PATCH 0/8] IIO: Cleanups and complicated channel modifiers Jonathan Cameron
  2012-05-30 19:33 ` Getz, Robin
  2012-05-30 19:40 ` [PATCH 1/8] staging:iio:accel drop sysfs interface for resetting devices Jonathan Cameron
@ 2012-05-30 19:41 ` Jonathan Cameron
  2012-06-01  9:23   ` Hennerich, Michael
  2012-05-30 19:41 ` [PATCH 3/8] staging:iio:imu:adis16400 " Jonathan Cameron
                   ` (5 subsequent siblings)
  8 siblings, 1 reply; 19+ messages in thread
From: Jonathan Cameron @ 2012-05-30 19:41 UTC (permalink / raw)
  To: linux-iio; +Cc: Jonathan Cameron

There is no reason for userspace to do this, so lets
drop this abi.

Signed-off-by: Jonathan Cameron <jic23@kernel.org>
---
 drivers/staging/iio/gyro/adis16260_core.c |   19 -------------------
 1 file changed, 19 deletions(-)

diff --git a/drivers/staging/iio/gyro/adis16260_core.c b/drivers/staging/iio/gyro/adis16260_core.c
index ec765f9..a19bf44 100644
--- a/drivers/staging/iio/gyro/adis16260_core.c
+++ b/drivers/staging/iio/gyro/adis16260_core.c
@@ -233,22 +233,6 @@ static int adis16260_reset(struct iio_dev *indio_dev)
 	return ret;
 }
 
-static ssize_t adis16260_write_reset(struct device *dev,
-		struct device_attribute *attr,
-		const char *buf, size_t len)
-{
-	struct iio_dev *indio_dev = dev_to_iio_dev(dev);
-	if (len < 1)
-		return -EINVAL;
-	switch (buf[0]) {
-	case '1':
-	case 'y':
-	case 'Y':
-		return adis16260_reset(indio_dev);
-	}
-	return -EINVAL;
-}
-
 int adis16260_set_irq(struct iio_dev *indio_dev, bool enable)
 {
 	int ret;
@@ -375,8 +359,6 @@ static IIO_DEV_ATTR_SAMP_FREQ(S_IWUSR | S_IRUGO,
 		adis16260_read_frequency,
 		adis16260_write_frequency);
 
-static IIO_DEVICE_ATTR(reset, S_IWUSR, NULL, adis16260_write_reset, 0);
-
 static IIO_DEVICE_ATTR(sampling_frequency_available,
 		       S_IRUGO, adis16260_read_frequency_available, NULL, 0);
 
@@ -604,7 +586,6 @@ static int adis16260_write_raw(struct iio_dev *indio_dev,
 static struct attribute *adis16260_attributes[] = {
 	&iio_dev_attr_sampling_frequency.dev_attr.attr,
 	&iio_dev_attr_sampling_frequency_available.dev_attr.attr,
-	&iio_dev_attr_reset.dev_attr.attr,
 	NULL
 };
 
-- 
1.7.10.2

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

* [PATCH 3/8] staging:iio:imu:adis16400 drop sysfs interface for manual device reset.
  2012-05-30 19:40 [PATCH 0/8] IIO: Cleanups and complicated channel modifiers Jonathan Cameron
                   ` (2 preceding siblings ...)
  2012-05-30 19:41 ` [PATCH 2/8] staging:iio:gyro:adis16260 drop sysfs interface for manual device reset Jonathan Cameron
@ 2012-05-30 19:41 ` Jonathan Cameron
  2012-06-01  9:23   ` Hennerich, Michael
  2012-05-30 19:41 ` [PATCH 4/8] IIO: Add a modifier for sqrt(x^2+y^2) Jonathan Cameron
                   ` (4 subsequent siblings)
  8 siblings, 1 reply; 19+ messages in thread
From: Jonathan Cameron @ 2012-05-30 19:41 UTC (permalink / raw)
  To: linux-iio; +Cc: Jonathan Cameron

There is no reason for userspace to do this, so lets
drop this abi.

Signed-off-by: Jonathan Cameron <jic23@kernel.org>
---
 drivers/staging/iio/imu/adis16400_core.c |   22 ----------------------
 1 file changed, 22 deletions(-)

diff --git a/drivers/staging/iio/imu/adis16400_core.c b/drivers/staging/iio/imu/adis16400_core.c
index 1f6bd85..57b165d 100644
--- a/drivers/staging/iio/imu/adis16400_core.c
+++ b/drivers/staging/iio/imu/adis16400_core.c
@@ -268,25 +268,6 @@ static int adis16400_reset(struct iio_dev *indio_dev)
 	return ret;
 }
 
-static ssize_t adis16400_write_reset(struct device *dev,
-		struct device_attribute *attr,
-		const char *buf, size_t len)
-{
-	bool val;
-	int ret;
-
-	ret = strtobool(buf, &val);
-	if (ret < 0)
-		return ret;
-	if (val) {
-		ret = adis16400_reset(dev_to_iio_dev(dev));
-		if (ret < 0)
-			return ret;
-	}
-
-	return len;
-}
-
 int adis16400_set_irq(struct iio_dev *indio_dev, bool enable)
 {
 	int ret;
@@ -454,8 +435,6 @@ static IIO_DEV_ATTR_SAMP_FREQ(S_IWUSR | S_IRUGO,
 			      adis16400_read_frequency,
 			      adis16400_write_frequency);
 
-static IIO_DEVICE_ATTR(reset, S_IWUSR, NULL, adis16400_write_reset, 0);
-
 static IIO_CONST_ATTR_SAMP_FREQ_AVAIL("409 546 819 1638");
 
 enum adis16400_chan {
@@ -1064,7 +1043,6 @@ static const struct iio_chan_spec adis16334_channels[] = {
 static struct attribute *adis16400_attributes[] = {
 	&iio_dev_attr_sampling_frequency.dev_attr.attr,
 	&iio_const_attr_sampling_frequency_available.dev_attr.attr,
-	&iio_dev_attr_reset.dev_attr.attr,
 	NULL
 };
 
-- 
1.7.10.2

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

* [PATCH 4/8] IIO: Add a modifier for sqrt(x^2+y^2)
  2012-05-30 19:40 [PATCH 0/8] IIO: Cleanups and complicated channel modifiers Jonathan Cameron
                   ` (3 preceding siblings ...)
  2012-05-30 19:41 ` [PATCH 3/8] staging:iio:imu:adis16400 " Jonathan Cameron
@ 2012-05-30 19:41 ` Jonathan Cameron
  2012-05-30 19:41 ` [PATCH 5/8] staging:iio:accel:adis16204 fix bug in channel modifier handling Jonathan Cameron
                   ` (3 subsequent siblings)
  8 siblings, 0 replies; 19+ messages in thread
From: Jonathan Cameron @ 2012-05-30 19:41 UTC (permalink / raw)
  To: linux-iio; +Cc: Jonathan Cameron

There will probably be a number of such modifiers eventually but
this one is used in the adis16204 accelerometer driver.

Signed-off-by: Jonathan Cameron <jic23@kernel.org>
---
 drivers/iio/industrialio-core.c |    1 +
 include/linux/iio/types.h       |    1 +
 2 files changed, 2 insertions(+)

diff --git a/drivers/iio/industrialio-core.c b/drivers/iio/industrialio-core.c
index aa2edf4..071fbf1 100644
--- a/drivers/iio/industrialio-core.c
+++ b/drivers/iio/industrialio-core.c
@@ -70,6 +70,7 @@ static const char * const iio_modifier_names[] = {
 	[IIO_MOD_X] = "x",
 	[IIO_MOD_Y] = "y",
 	[IIO_MOD_Z] = "z",
+	[IIO_MOD_ROOT_SUM_SQUARED_X_Y] = "sqrt(x^2+y^2)",
 	[IIO_MOD_LIGHT_BOTH] = "both",
 	[IIO_MOD_LIGHT_IR] = "ir",
 };
diff --git a/include/linux/iio/types.h b/include/linux/iio/types.h
index 1b073b1..ab907bf 100644
--- a/include/linux/iio/types.h
+++ b/include/linux/iio/types.h
@@ -45,6 +45,7 @@ enum iio_modifier {
 	IIO_MOD_X_OR_Y_OR_Z,
 	IIO_MOD_LIGHT_BOTH,
 	IIO_MOD_LIGHT_IR,
+	IIO_MOD_ROOT_SUM_SQUARED_X_Y,
 };
 
 #define IIO_VAL_INT 1
-- 
1.7.10.2

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

* [PATCH 5/8] staging:iio:accel:adis16204 fix bug in channel modifier handling
  2012-05-30 19:40 [PATCH 0/8] IIO: Cleanups and complicated channel modifiers Jonathan Cameron
                   ` (4 preceding siblings ...)
  2012-05-30 19:41 ` [PATCH 4/8] IIO: Add a modifier for sqrt(x^2+y^2) Jonathan Cameron
@ 2012-05-30 19:41 ` Jonathan Cameron
  2012-06-01  9:23   ` Hennerich, Michael
  2012-05-30 19:41 ` [PATCH 6/8] staging:iio:accel:adis16204 support the rss channel via chan spec Jonathan Cameron
                   ` (2 subsequent siblings)
  8 siblings, 1 reply; 19+ messages in thread
From: Jonathan Cameron @ 2012-05-30 19:41 UTC (permalink / raw)
  To: linux-iio; +Cc: Jonathan Cameron

Will result in the correct scale value for the x axis.

Signed-off-by: Jonathan Cameron <jic23@kernel.org>
---
 drivers/staging/iio/accel/adis16204_core.c |    2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/staging/iio/accel/adis16204_core.c b/drivers/staging/iio/accel/adis16204_core.c
index 5c02bc6..a36135d 100644
--- a/drivers/staging/iio/accel/adis16204_core.c
+++ b/drivers/staging/iio/accel/adis16204_core.c
@@ -362,7 +362,7 @@ static int adis16204_read_raw(struct iio_dev *indio_dev,
 			return IIO_VAL_INT_PLUS_MICRO;
 		case IIO_ACCEL:
 			*val = 0;
-			if (chan->channel == 'x')
+			if (chan->channel2 == IIO_CHAN_MOD_X)
 				*val2 = 17125;
 			else
 				*val2 = 8407;
-- 
1.7.10.2

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

* [PATCH 6/8] staging:iio:accel:adis16204 support the rss channel via chan spec.
  2012-05-30 19:40 [PATCH 0/8] IIO: Cleanups and complicated channel modifiers Jonathan Cameron
                   ` (5 preceding siblings ...)
  2012-05-30 19:41 ` [PATCH 5/8] staging:iio:accel:adis16204 fix bug in channel modifier handling Jonathan Cameron
@ 2012-05-30 19:41 ` Jonathan Cameron
  2012-05-30 19:43   ` Jonathan Cameron
  2012-06-01  9:24   ` Hennerich, Michael
  2012-05-30 19:41 ` [PATCH 7/8] IIO: Add a modifier for x^2+y^2+z^2 Jonathan Cameron
  2012-05-30 19:41 ` [PATCH 8/8] staging:iio: Add some missing peak elements to the info_mask Jonathan Cameron
  8 siblings, 2 replies; 19+ messages in thread
From: Jonathan Cameron @ 2012-05-30 19:41 UTC (permalink / raw)
  To: linux-iio; +Cc: Jonathan Cameron

Reduces code and makes this channel available within the kernel.
Note that it is not added to the buffer, thus maintaining the
previous functionality of this driver.

Signed-off-by: Jonathan Cameron <jic23@kernel.org>
---
 drivers/staging/iio/accel/adis16204_core.c |   83 ++++++++++------------------
 1 file changed, 29 insertions(+), 54 deletions(-)

diff --git a/drivers/staging/iio/accel/adis16204_core.c b/drivers/staging/iio/accel/adis16204_core.c
index a36135d..cb8701d 100644
--- a/drivers/staging/iio/accel/adis16204_core.c
+++ b/drivers/staging/iio/accel/adis16204_core.c
@@ -169,32 +169,6 @@ error_ret:
 	return ret;
 }
 
-static ssize_t adis16204_read_14bit_signed(struct device *dev,
-		struct device_attribute *attr,
-		char *buf)
-{
-	struct iio_dev *indio_dev = dev_to_iio_dev(dev);
-	struct iio_dev_attr *this_attr = to_iio_dev_attr(attr);
-	s16 val = 0;
-	ssize_t ret;
-
-	mutex_lock(&indio_dev->mlock);
-
-	ret = adis16204_spi_read_reg_16(indio_dev,
-					this_attr->address, (u16 *)&val);
-	if (!ret) {
-		if (val & ADIS16204_ERROR_ACTIVE)
-			adis16204_check_status(indio_dev);
-
-		val = ((s16)(val << 2) >> 2);
-		ret = sprintf(buf, "%d\n", val);
-	}
-
-	mutex_unlock(&indio_dev->mlock);
-
-	return ret;
-}
-
 static int adis16204_reset(struct iio_dev *indio_dev)
 {
 	int ret;
@@ -282,16 +256,6 @@ err_ret:
 }
 
 /* Unique to this driver currently */
-#define IIO_DEV_ATTR_ACCEL_XY(_show, _addr)			\
-	IIO_DEVICE_ATTR(in_accel_xy, S_IRUGO, _show, NULL, _addr)
-#define IIO_DEV_ATTR_ACCEL_XYPEAK(_show, _addr)		\
-	IIO_DEVICE_ATTR(in_accel_xypeak, S_IRUGO, _show, NULL, _addr)
-
-static IIO_DEV_ATTR_ACCEL_XY(adis16204_read_14bit_signed,
-		ADIS16204_XY_RSS_OUT);
-static IIO_DEV_ATTR_ACCEL_XYPEAK(adis16204_read_14bit_signed,
-		ADIS16204_XY_PEAK_OUT);
-static IIO_CONST_ATTR(in_accel_xy_scale, "0.017125");
 
 enum adis16204_channel {
 	in_supply,
@@ -299,9 +263,10 @@ enum adis16204_channel {
 	temp,
 	accel_x,
 	accel_y,
+	accel_xy,
 };
 
-static u8 adis16204_addresses[5][3] = {
+static u8 adis16204_addresses[6][3] = {
 	[in_supply] = { ADIS16204_SUPPLY_OUT },
 	[in_aux] = { ADIS16204_AUX_ADC },
 	[temp] = { ADIS16204_TEMP_OUT },
@@ -309,6 +274,8 @@ static u8 adis16204_addresses[5][3] = {
 		      ADIS16204_X_PEAK_OUT },
 	[accel_y] = { ADIS16204_XACCL_OUT, ADIS16204_YACCL_NULL,
 		      ADIS16204_Y_PEAK_OUT },
+	[accel_xy] = { ADIS16204_XY_RSS_OUT, 0,
+		       ADIS16204_XY_PEAK_OUT },
 };
 
 static int adis16204_read_raw(struct iio_dev *indio_dev,
@@ -362,10 +329,16 @@ static int adis16204_read_raw(struct iio_dev *indio_dev,
 			return IIO_VAL_INT_PLUS_MICRO;
 		case IIO_ACCEL:
 			*val = 0;
-			if (chan->channel2 == IIO_CHAN_MOD_X)
-				*val2 = 17125;
-			else
-				*val2 = 8407;
+			switch (chan->channel2) {
+			case IIO_MOD_X:
+			case IIO_MOD_ROOT_SUM_SQUARED_X_Y:
+ 				*val2 = 17125;
+				break;
+			case IIO_MOD_Y:
+			case IIO_MOD_Z:
+ 				*val2 = 8407;
+				break;
+			}
 			return IIO_VAL_INT_PLUS_MICRO;
 		default:
 			return -EINVAL;
@@ -498,21 +471,23 @@ static struct iio_chan_spec adis16204_channels[] = {
 		},
 	},
 	IIO_CHAN_SOFT_TIMESTAMP(5),
-};
-
-static struct attribute *adis16204_attributes[] = {
-	&iio_dev_attr_in_accel_xy.dev_attr.attr,
-	&iio_dev_attr_in_accel_xypeak.dev_attr.attr,
-	&iio_const_attr_in_accel_xy_scale.dev_attr.attr,
-	NULL
-};
-
-static const struct attribute_group adis16204_attribute_group = {
-	.attrs = adis16204_attributes,
+	{
+		.type = IIO_ACCEL,
+		.modified = 1,
+		.channel2 = IIO_MOD_ROOT_SUM_SQUARED_X_Y,
+		.info_mask = IIO_CHAN_INFO_RAW_SEPARATE_BIT |
+		IIO_CHAN_INFO_SCALE_SEPARATE_BIT |
+		IIO_CHAN_INFO_PEAK_SEPARATE_BIT,
+		.address = accel_xy,
+		.scan_type = {
+			.sign = 'u',
+			.realbits = 14,
+			.storagebits = 16,
+		},
+	}
 };
 
 static const struct iio_info adis16204_info = {
-	.attrs = &adis16204_attribute_group,
 	.read_raw = &adis16204_read_raw,
 	.write_raw = &adis16204_write_raw,
 	.driver_module = THIS_MODULE,
@@ -549,7 +524,7 @@ static int __devinit adis16204_probe(struct spi_device *spi)
 
 	ret = iio_buffer_register(indio_dev,
 				  adis16204_channels,
-				  ARRAY_SIZE(adis16204_channels));
+				  6);
 	if (ret) {
 		printk(KERN_ERR "failed to initialize the ring\n");
 		goto error_unreg_ring_funcs;
-- 
1.7.10.2

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

* [PATCH 7/8] IIO: Add a modifier for x^2+y^2+z^2
  2012-05-30 19:40 [PATCH 0/8] IIO: Cleanups and complicated channel modifiers Jonathan Cameron
                   ` (6 preceding siblings ...)
  2012-05-30 19:41 ` [PATCH 6/8] staging:iio:accel:adis16204 support the rss channel via chan spec Jonathan Cameron
@ 2012-05-30 19:41 ` Jonathan Cameron
  2012-05-30 19:41 ` [PATCH 8/8] staging:iio: Add some missing peak elements to the info_mask Jonathan Cameron
  8 siblings, 0 replies; 19+ messages in thread
From: Jonathan Cameron @ 2012-05-30 19:41 UTC (permalink / raw)
  To: linux-iio; +Cc: Jonathan Cameron

There will probably be a number of such modifiers eventually but
this one is used in the adis16240 accelerometer driver.

Signed-off-by: Jonathan Cameron <jic23@kernel.org>
---
 drivers/iio/industrialio-core.c |    1 +
 include/linux/iio/types.h       |    1 +
 2 files changed, 2 insertions(+)

diff --git a/drivers/iio/industrialio-core.c b/drivers/iio/industrialio-core.c
index 071fbf1..6c433e8 100644
--- a/drivers/iio/industrialio-core.c
+++ b/drivers/iio/industrialio-core.c
@@ -71,6 +71,7 @@ static const char * const iio_modifier_names[] = {
 	[IIO_MOD_Y] = "y",
 	[IIO_MOD_Z] = "z",
 	[IIO_MOD_ROOT_SUM_SQUARED_X_Y] = "sqrt(x^2+y^2)",
+	[IIO_MOD_SUM_SQUARED_X_Y_Z] = "x^2+y^2+z^2",
 	[IIO_MOD_LIGHT_BOTH] = "both",
 	[IIO_MOD_LIGHT_IR] = "ir",
 };
diff --git a/include/linux/iio/types.h b/include/linux/iio/types.h
index ab907bf..2ca6058 100644
--- a/include/linux/iio/types.h
+++ b/include/linux/iio/types.h
@@ -46,6 +46,7 @@ enum iio_modifier {
 	IIO_MOD_LIGHT_BOTH,
 	IIO_MOD_LIGHT_IR,
 	IIO_MOD_ROOT_SUM_SQUARED_X_Y,
+	IIO_MOD_SUM_SQUARED_X_Y_Z,
 };
 
 #define IIO_VAL_INT 1
-- 
1.7.10.2

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

* [PATCH 8/8] staging:iio: Add some missing peak elements to the info_mask
  2012-05-30 19:40 [PATCH 0/8] IIO: Cleanups and complicated channel modifiers Jonathan Cameron
                   ` (7 preceding siblings ...)
  2012-05-30 19:41 ` [PATCH 7/8] IIO: Add a modifier for x^2+y^2+z^2 Jonathan Cameron
@ 2012-05-30 19:41 ` Jonathan Cameron
  2012-06-01  9:25   ` Hennerich, Michael
  8 siblings, 1 reply; 19+ messages in thread
From: Jonathan Cameron @ 2012-05-30 19:41 UTC (permalink / raw)
  To: linux-iio; +Cc: Jonathan Cameron

These are supported by raw_read but not actually there.

Signed-off-by: Jonathan Cameron <jic23@kernel.org>
---
 drivers/staging/iio/accel/adis16240_core.c |    9 ++++++---
 1 file changed, 6 insertions(+), 3 deletions(-)

diff --git a/drivers/staging/iio/accel/adis16240_core.c b/drivers/staging/iio/accel/adis16240_core.c
index 2df39d1..3f30a99 100644
--- a/drivers/staging/iio/accel/adis16240_core.c
+++ b/drivers/staging/iio/accel/adis16240_core.c
@@ -481,7 +481,8 @@ static struct iio_chan_spec adis16240_channels[] = {
 		.channel2 = IIO_MOD_X,
 		.info_mask = IIO_CHAN_INFO_RAW_SEPARATE_BIT |
 		IIO_CHAN_INFO_SCALE_SHARED_BIT |
-		IIO_CHAN_INFO_CALIBBIAS_SEPARATE_BIT,
+		IIO_CHAN_INFO_CALIBBIAS_SEPARATE_BIT |
+		IIO_CHAN_INFO_PEAK_SEPARATE_BIT,
 		.address = accel_x,
 		.scan_index = ADIS16240_SCAN_ACC_X,
 		.scan_type = {
@@ -495,7 +496,8 @@ static struct iio_chan_spec adis16240_channels[] = {
 		.channel2 = IIO_MOD_Y,
 		.info_mask = IIO_CHAN_INFO_RAW_SEPARATE_BIT |
 		IIO_CHAN_INFO_SCALE_SHARED_BIT |
-		IIO_CHAN_INFO_CALIBBIAS_SEPARATE_BIT,
+		IIO_CHAN_INFO_CALIBBIAS_SEPARATE_BIT |
+		IIO_CHAN_INFO_PEAK_SEPARATE_BIT,
 		.address = accel_y,
 		.scan_index = ADIS16240_SCAN_ACC_Y,
 		.scan_type = {
@@ -509,7 +511,8 @@ static struct iio_chan_spec adis16240_channels[] = {
 		.channel2 = IIO_MOD_Z,
 		.info_mask = IIO_CHAN_INFO_RAW_SEPARATE_BIT |
 		IIO_CHAN_INFO_SCALE_SHARED_BIT |
-		IIO_CHAN_INFO_CALIBBIAS_SEPARATE_BIT,
+		IIO_CHAN_INFO_CALIBBIAS_SEPARATE_BIT |
+		IIO_CHAN_INFO_PEAK_SEPARATE_BIT,
 		.address = accel_z,
 		.scan_index = ADIS16240_SCAN_ACC_Z,
 		.scan_type = {
-- 
1.7.10.2

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

* Re: [PATCH 6/8] staging:iio:accel:adis16204 support the rss channel via chan spec.
  2012-05-30 19:41 ` [PATCH 6/8] staging:iio:accel:adis16204 support the rss channel via chan spec Jonathan Cameron
@ 2012-05-30 19:43   ` Jonathan Cameron
  2012-06-01  9:24   ` Hennerich, Michael
  1 sibling, 0 replies; 19+ messages in thread
From: Jonathan Cameron @ 2012-05-30 19:43 UTC (permalink / raw)
  To: Jonathan Cameron; +Cc: linux-iio

On 05/30/2012 08:41 PM, Jonathan Cameron wrote:
> Reduces code and makes this channel available within the kernel.
> Note that it is not added to the buffer, thus maintaining the
> previous functionality of this driver.
Sorry all, clean forgot to run checkpatch on this and some
tab / space mess has snuck in.  Will fixup, please just
pretend it isn't there!
> 
> Signed-off-by: Jonathan Cameron <jic23@kernel.org>
> ---
>  drivers/staging/iio/accel/adis16204_core.c |   83 ++++++++++------------------
>  1 file changed, 29 insertions(+), 54 deletions(-)
> 
> diff --git a/drivers/staging/iio/accel/adis16204_core.c b/drivers/staging/iio/accel/adis16204_core.c
> index a36135d..cb8701d 100644
> --- a/drivers/staging/iio/accel/adis16204_core.c
> +++ b/drivers/staging/iio/accel/adis16204_core.c
> @@ -169,32 +169,6 @@ error_ret:
>  	return ret;
>  }
>  
> -static ssize_t adis16204_read_14bit_signed(struct device *dev,
> -		struct device_attribute *attr,
> -		char *buf)
> -{
> -	struct iio_dev *indio_dev = dev_to_iio_dev(dev);
> -	struct iio_dev_attr *this_attr = to_iio_dev_attr(attr);
> -	s16 val = 0;
> -	ssize_t ret;
> -
> -	mutex_lock(&indio_dev->mlock);
> -
> -	ret = adis16204_spi_read_reg_16(indio_dev,
> -					this_attr->address, (u16 *)&val);
> -	if (!ret) {
> -		if (val & ADIS16204_ERROR_ACTIVE)
> -			adis16204_check_status(indio_dev);
> -
> -		val = ((s16)(val << 2) >> 2);
> -		ret = sprintf(buf, "%d\n", val);
> -	}
> -
> -	mutex_unlock(&indio_dev->mlock);
> -
> -	return ret;
> -}
> -
>  static int adis16204_reset(struct iio_dev *indio_dev)
>  {
>  	int ret;
> @@ -282,16 +256,6 @@ err_ret:
>  }
>  
>  /* Unique to this driver currently */
> -#define IIO_DEV_ATTR_ACCEL_XY(_show, _addr)			\
> -	IIO_DEVICE_ATTR(in_accel_xy, S_IRUGO, _show, NULL, _addr)
> -#define IIO_DEV_ATTR_ACCEL_XYPEAK(_show, _addr)		\
> -	IIO_DEVICE_ATTR(in_accel_xypeak, S_IRUGO, _show, NULL, _addr)
> -
> -static IIO_DEV_ATTR_ACCEL_XY(adis16204_read_14bit_signed,
> -		ADIS16204_XY_RSS_OUT);
> -static IIO_DEV_ATTR_ACCEL_XYPEAK(adis16204_read_14bit_signed,
> -		ADIS16204_XY_PEAK_OUT);
> -static IIO_CONST_ATTR(in_accel_xy_scale, "0.017125");
>  
>  enum adis16204_channel {
>  	in_supply,
> @@ -299,9 +263,10 @@ enum adis16204_channel {
>  	temp,
>  	accel_x,
>  	accel_y,
> +	accel_xy,
>  };
>  
> -static u8 adis16204_addresses[5][3] = {
> +static u8 adis16204_addresses[6][3] = {
>  	[in_supply] = { ADIS16204_SUPPLY_OUT },
>  	[in_aux] = { ADIS16204_AUX_ADC },
>  	[temp] = { ADIS16204_TEMP_OUT },
> @@ -309,6 +274,8 @@ static u8 adis16204_addresses[5][3] = {
>  		      ADIS16204_X_PEAK_OUT },
>  	[accel_y] = { ADIS16204_XACCL_OUT, ADIS16204_YACCL_NULL,
>  		      ADIS16204_Y_PEAK_OUT },
> +	[accel_xy] = { ADIS16204_XY_RSS_OUT, 0,
> +		       ADIS16204_XY_PEAK_OUT },
>  };
>  
>  static int adis16204_read_raw(struct iio_dev *indio_dev,
> @@ -362,10 +329,16 @@ static int adis16204_read_raw(struct iio_dev *indio_dev,
>  			return IIO_VAL_INT_PLUS_MICRO;
>  		case IIO_ACCEL:
>  			*val = 0;
> -			if (chan->channel2 == IIO_CHAN_MOD_X)
> -				*val2 = 17125;
> -			else
> -				*val2 = 8407;
> +			switch (chan->channel2) {
> +			case IIO_MOD_X:
> +			case IIO_MOD_ROOT_SUM_SQUARED_X_Y:
> + 				*val2 = 17125;
> +				break;
> +			case IIO_MOD_Y:
> +			case IIO_MOD_Z:
> + 				*val2 = 8407;
> +				break;
> +			}
>  			return IIO_VAL_INT_PLUS_MICRO;
>  		default:
>  			return -EINVAL;
> @@ -498,21 +471,23 @@ static struct iio_chan_spec adis16204_channels[] = {
>  		},
>  	},
>  	IIO_CHAN_SOFT_TIMESTAMP(5),
> -};
> -
> -static struct attribute *adis16204_attributes[] = {
> -	&iio_dev_attr_in_accel_xy.dev_attr.attr,
> -	&iio_dev_attr_in_accel_xypeak.dev_attr.attr,
> -	&iio_const_attr_in_accel_xy_scale.dev_attr.attr,
> -	NULL
> -};
> -
> -static const struct attribute_group adis16204_attribute_group = {
> -	.attrs = adis16204_attributes,
> +	{
> +		.type = IIO_ACCEL,
> +		.modified = 1,
> +		.channel2 = IIO_MOD_ROOT_SUM_SQUARED_X_Y,
> +		.info_mask = IIO_CHAN_INFO_RAW_SEPARATE_BIT |
> +		IIO_CHAN_INFO_SCALE_SEPARATE_BIT |
> +		IIO_CHAN_INFO_PEAK_SEPARATE_BIT,
> +		.address = accel_xy,
> +		.scan_type = {
> +			.sign = 'u',
> +			.realbits = 14,
> +			.storagebits = 16,
> +		},
> +	}
>  };
>  
>  static const struct iio_info adis16204_info = {
> -	.attrs = &adis16204_attribute_group,
>  	.read_raw = &adis16204_read_raw,
>  	.write_raw = &adis16204_write_raw,
>  	.driver_module = THIS_MODULE,
> @@ -549,7 +524,7 @@ static int __devinit adis16204_probe(struct spi_device *spi)
>  
>  	ret = iio_buffer_register(indio_dev,
>  				  adis16204_channels,
> -				  ARRAY_SIZE(adis16204_channels));
> +				  6);
>  	if (ret) {
>  		printk(KERN_ERR "failed to initialize the ring\n");
>  		goto error_unreg_ring_funcs;

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

* Re: [PATCH 0/8] IIO: Cleanups and complicated channel modifiers.
  2012-05-30 19:33 ` Getz, Robin
@ 2012-05-31  7:18   ` Jonathan Cameron
  0 siblings, 0 replies; 19+ messages in thread
From: Jonathan Cameron @ 2012-05-31  7:18 UTC (permalink / raw)
  To: Getz, Robin; +Cc: linux-iio@vger.kernel.org

On 5/30/2012 8:33 PM, Getz, Robin wrote:
> On Wed 30 May 2012 15:40, Jonathan Cameron pondered:
>> Hi All,
>>
>> Dropping the reset attributes was discussed a while back and no
>> one could come up with a reason for having them. Unless anyone
>> does have a good reason, lets drop these before we move the
>> relevant drivers out of staging.
>
> This is the only way that userspace can re-initialise the device (if someone
> modified the calibration settings, and wants to get back to the factory
> setting).
>
> That doesn't mean it's necessary - it just means that is what it was there
> for.
Indeed, it had a usecase. In my view if people go fiddlying with those 
without knowing what they are doing then then deserve to need to reboot 
or remove and reinsert the module!
>
> -Robin
>
> --
> To unsubscribe from this list: send the line "unsubscribe linux-iio" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html


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

* RE: [PATCH 3/8] staging:iio:imu:adis16400 drop sysfs interface for manual device reset.
  2012-05-30 19:41 ` [PATCH 3/8] staging:iio:imu:adis16400 " Jonathan Cameron
@ 2012-06-01  9:23   ` Hennerich, Michael
  0 siblings, 0 replies; 19+ messages in thread
From: Hennerich, Michael @ 2012-06-01  9:23 UTC (permalink / raw)
  To: Jonathan Cameron, linux-iio@vger.kernel.org

Jonathan Cameron wrote on 2012-05-30:
> There is no reason for userspace to do this, so lets
> drop this abi.
>
> Signed-off-by: Jonathan Cameron <jic23@kernel.org>
Acked-by: Michael Hennerich <michael.hennerich@analog.com>
> ---
>  drivers/staging/iio/imu/adis16400_core.c |   22 ----------------------
>  1 file changed, 22 deletions(-)
> diff --git a/drivers/staging/iio/imu/adis16400_core.c
> b/drivers/staging/iio/imu/adis16400_core.c index 1f6bd85..57b165d 100644
> --- a/drivers/staging/iio/imu/adis16400_core.c +++
> b/drivers/staging/iio/imu/adis16400_core.c @@ -268,25 +268,6 @@ static
> int adis16400_reset(struct iio_dev *indio_dev)
>       return ret;
>  }
> -static ssize_t adis16400_write_reset(struct device *dev,
> -             struct device_attribute *attr,
> -             const char *buf, size_t len)
> -{
> -     bool val;
> -     int ret;
> -
> -     ret =3D strtobool(buf, &val);
> -     if (ret < 0)
> -             return ret;
> -     if (val) {
> -             ret =3D adis16400_reset(dev_to_iio_dev(dev));
> -             if (ret < 0)
> -                     return ret;
> -     }
> -
> -     return len;
> -}
> -
>  int adis16400_set_irq(struct iio_dev *indio_dev, bool enable) {      int
>  ret; @@ -454,8 +435,6 @@ static IIO_DEV_ATTR_SAMP_FREQ(S_IWUSR |
>  S_IRUGO,                           adis16400_read_frequency,
>  adis16400_write_frequency);
> -static IIO_DEVICE_ATTR(reset, S_IWUSR, NULL, adis16400_write_reset, 0);
> -
>  static IIO_CONST_ATTR_SAMP_FREQ_AVAIL("409 546 819 1638");
>
>  enum adis16400_chan {
> @@ -1064,7 +1043,6 @@ static const struct iio_chan_spec
> adis16334_channels[] =3D {
>  static struct attribute *adis16400_attributes[] =3D {
>       &iio_dev_attr_sampling_frequency.dev_attr.attr,
>       &iio_const_attr_sampling_frequency_available.dev_attr.attr,
>  -    &iio_dev_attr_reset.dev_attr.attr,      NULL };

Greetings,
Michael

--
Analog Devices GmbH      Wilhelm-Wagenfeld-Str. 6      80807 Muenchen
Sitz der Gesellschaft: Muenchen; Registergericht: Muenchen HRB 40368;
Geschaeftsfuehrer:Dr.Carsten Suckrow, Thomas Wessel, William A. Martin, Mar=
garet Seif

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

* RE: [PATCH 2/8] staging:iio:gyro:adis16260 drop sysfs interface for manual device reset.
  2012-05-30 19:41 ` [PATCH 2/8] staging:iio:gyro:adis16260 drop sysfs interface for manual device reset Jonathan Cameron
@ 2012-06-01  9:23   ` Hennerich, Michael
  0 siblings, 0 replies; 19+ messages in thread
From: Hennerich, Michael @ 2012-06-01  9:23 UTC (permalink / raw)
  To: Jonathan Cameron, linux-iio@vger.kernel.org

Jonathan Cameron wrote on 2012-05-30:
> There is no reason for userspace to do this, so lets
> drop this abi.
>
> Signed-off-by: Jonathan Cameron <jic23@kernel.org>
Acked-by: Michael Hennerich <michael.hennerich@analog.com>
> ---
>  drivers/staging/iio/gyro/adis16260_core.c |   19 -------------------
>  1 file changed, 19 deletions(-)
> diff --git a/drivers/staging/iio/gyro/adis16260_core.c
> b/drivers/staging/iio/gyro/adis16260_core.c index ec765f9..a19bf44
> 100644 --- a/drivers/staging/iio/gyro/adis16260_core.c +++
> b/drivers/staging/iio/gyro/adis16260_core.c @@ -233,22 +233,6 @@ static
> int adis16260_reset(struct iio_dev *indio_dev)
>       return ret;
>  }
> -static ssize_t adis16260_write_reset(struct device *dev,
> -             struct device_attribute *attr,
> -             const char *buf, size_t len)
> -{
> -     struct iio_dev *indio_dev =3D dev_to_iio_dev(dev);
> -     if (len < 1)
> -             return -EINVAL;
> -     switch (buf[0]) {
> -     case '1':
> -     case 'y':
> -     case 'Y':
> -             return adis16260_reset(indio_dev);
> -     }
> -     return -EINVAL;
> -}
> -
>  int adis16260_set_irq(struct iio_dev *indio_dev, bool enable) {      int
>  ret; @@ -375,8 +359,6 @@ static IIO_DEV_ATTR_SAMP_FREQ(S_IWUSR |
>  S_IRUGO,             adis16260_read_frequency,               adis16260_w=
rite_frequency);
> -static IIO_DEVICE_ATTR(reset, S_IWUSR, NULL, adis16260_write_reset, 0);
> -
>  static IIO_DEVICE_ATTR(sampling_frequency_available,
>                      S_IRUGO, adis16260_read_frequency_available, NULL,
> 0);
>
> @@ -604,7 +586,6 @@ static int adis16260_write_raw(struct iio_dev
> *indio_dev,
>  static struct attribute *adis16260_attributes[] =3D {
>       &iio_dev_attr_sampling_frequency.dev_attr.attr,
>       &iio_dev_attr_sampling_frequency_available.dev_attr.attr,
>  -    &iio_dev_attr_reset.dev_attr.attr,      NULL };

Greetings,
Michael

--
Analog Devices GmbH      Wilhelm-Wagenfeld-Str. 6      80807 Muenchen
Sitz der Gesellschaft: Muenchen; Registergericht: Muenchen HRB 40368;
Geschaeftsfuehrer:Dr.Carsten Suckrow, Thomas Wessel, William A. Martin, Mar=
garet Seif

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

* RE: [PATCH 5/8] staging:iio:accel:adis16204 fix bug in channel modifier handling
  2012-05-30 19:41 ` [PATCH 5/8] staging:iio:accel:adis16204 fix bug in channel modifier handling Jonathan Cameron
@ 2012-06-01  9:23   ` Hennerich, Michael
  2012-06-30  8:44     ` Jonathan Cameron
  0 siblings, 1 reply; 19+ messages in thread
From: Hennerich, Michael @ 2012-06-01  9:23 UTC (permalink / raw)
  To: Jonathan Cameron, linux-iio@vger.kernel.org

Jonathan Cameron wrote on 2012-05-30:
> Will result in the correct scale value for the x axis.
>
> Signed-off-by: Jonathan Cameron <jic23@kernel.org>
Acked-by: Michael Hennerich <michael.hennerich@analog.com>
> ---
>  drivers/staging/iio/accel/adis16204_core.c |    2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> diff --git a/drivers/staging/iio/accel/adis16204_core.c
> b/drivers/staging/iio/accel/adis16204_core.c index 5c02bc6..a36135d
> 100644 --- a/drivers/staging/iio/accel/adis16204_core.c +++
> b/drivers/staging/iio/accel/adis16204_core.c @@ -362,7 +362,7 @@ static
> int adis16204_read_raw(struct iio_dev *indio_dev,
>                       return IIO_VAL_INT_PLUS_MICRO;
>               case IIO_ACCEL:
>                       *val =3D 0;
> -                     if (chan->channel =3D=3D 'x')
> +                     if (chan->channel2 =3D=3D IIO_CHAN_MOD_X)
>                               *val2 =3D 17125;
>                       else
>                               *val2 =3D 8407;

Greetings,
Michael

--
Analog Devices GmbH      Wilhelm-Wagenfeld-Str. 6      80807 Muenchen
Sitz der Gesellschaft: Muenchen; Registergericht: Muenchen HRB 40368;
Geschaeftsfuehrer:Dr.Carsten Suckrow, Thomas Wessel, William A. Martin, Mar=
garet Seif

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

* RE: [PATCH 1/8] staging:iio:accel drop sysfs interface for resetting devices.
  2012-05-30 19:40 ` [PATCH 1/8] staging:iio:accel drop sysfs interface for resetting devices Jonathan Cameron
@ 2012-06-01  9:24   ` Hennerich, Michael
  0 siblings, 0 replies; 19+ messages in thread
From: Hennerich, Michael @ 2012-06-01  9:24 UTC (permalink / raw)
  To: Jonathan Cameron, linux-iio@vger.kernel.org

Jonathan Cameron wrote on 2012-05-30:
> There is no reason why userspace should want to do this manually.
> Hence, lets drop this abi.
>
> Signed-off-by: Jonathan Cameron <jic23@kernel.org>
Acked-by: Michael Hennerich <michael.hennerich@analog.com>
> ---
>  drivers/staging/iio/accel/adis16201_core.c |   27 --------------------
>  ------ drivers/staging/iio/accel/adis16203_core.c |   28
>  -------------------- ------- drivers/staging/iio/accel/adis16204_core.c
>  |   20 ------------------- drivers/staging/iio/accel/adis16209_core.c |
>    29 -------------------- --------
>  drivers/staging/iio/accel/adis16220_core.c |   24 --------------------
>  --- drivers/staging/iio/accel/adis16240_core.c |   20
>  ------------------- 6 files changed, 148 deletions(-)
> diff --git a/drivers/staging/iio/accel/adis16201_core.c
> b/drivers/staging/iio/accel/adis16201_core.c index 02b3409..204106b
> 100644 --- a/drivers/staging/iio/accel/adis16201_core.c +++
> b/drivers/staging/iio/accel/adis16201_core.c @@ -159,21 +159,6 @@ static
> int adis16201_reset(struct iio_dev *indio_dev)
>       return ret;
>  }
> -static ssize_t adis16201_write_reset(struct device *dev,
> -             struct device_attribute *attr,
> -             const char *buf, size_t len)
> -{
> -     int ret;
> -     bool res;
> -
> -     if (len < 1)
> -             return -EINVAL;
> -     ret =3D strtobool(buf, &res);
> -     if (ret || !res)
> -             return ret;
> -     return adis16201_reset(dev_to_iio_dev(dev));
> -}
> -
>  int adis16201_set_irq(struct iio_dev *indio_dev, bool enable)
>  {
>       int ret =3D 0;
> @@ -507,19 +492,7 @@ static struct iio_chan_spec adis16201_channels[] =3D
> {
>       IIO_CHAN_SOFT_TIMESTAMP(7)
>  };
> -static IIO_DEVICE_ATTR(reset, S_IWUSR, NULL, adis16201_write_reset, 0);
> - -static struct attribute *adis16201_attributes[] =3D {
> -     &iio_dev_attr_reset.dev_attr.attr, -    NULL -}; - -static const st=
ruct
> attribute_group adis16201_attribute_group =3D { -       .attrs =3D
> adis16201_attributes, -}; -
>  static const struct iio_info adis16201_info =3D { -    .attrs =3D
>  &adis16201_attribute_group,  .read_raw =3D &adis16201_read_raw,
>       .write_raw =3D &adis16201_write_raw,      .driver_module =3D THIS_M=
ODULE,
> diff --git a/drivers/staging/iio/accel/adis16203_core.c
> b/drivers/staging/iio/accel/adis16203_core.c index 15d46bf..22085e9
> 100644 --- a/drivers/staging/iio/accel/adis16203_core.c +++
> b/drivers/staging/iio/accel/adis16203_core.c @@ -178,22 +178,6 @@ static
> int adis16203_reset(struct iio_dev *indio_dev)
>       return ret;
>  }
> -static ssize_t adis16203_write_reset(struct device *dev,
> -             struct device_attribute *attr,
> -             const char *buf, size_t len)
> -{
> -     struct iio_dev *indio_dev =3D dev_to_iio_dev(dev);
> -     if (len < 1)
> -             return -EINVAL;
> -     switch (buf[0]) {
> -     case '1':
> -     case 'y':
> -     case 'Y':
> -             return adis16203_reset(indio_dev);
> -     }
> -     return -EINVAL;
> -}
> -
>  int adis16203_set_irq(struct iio_dev *indio_dev, bool enable)
>  {
>       int ret =3D 0;
> @@ -444,19 +428,7 @@ static struct iio_chan_spec adis16203_channels[] =3D
> {
>       IIO_CHAN_SOFT_TIMESTAMP(5),
>  };
> -static IIO_DEVICE_ATTR(reset, S_IWUSR, NULL, adis16203_write_reset, 0);
> - -static struct attribute *adis16203_attributes[] =3D {
> -     &iio_dev_attr_reset.dev_attr.attr, -    NULL -}; - -static const st=
ruct
> attribute_group adis16203_attribute_group =3D { -       .attrs =3D
> adis16203_attributes, -}; -
>  static const struct iio_info adis16203_info =3D { -    .attrs =3D
>  &adis16203_attribute_group,  .read_raw =3D &adis16203_read_raw,
>       .write_raw =3D &adis16203_write_raw,      .driver_module =3D THIS_M=
ODULE,
> diff --git a/drivers/staging/iio/accel/adis16204_core.c
> b/drivers/staging/iio/accel/adis16204_core.c index ac9d95e..5c02bc6
> 100644 --- a/drivers/staging/iio/accel/adis16204_core.c +++
> b/drivers/staging/iio/accel/adis16204_core.c @@ -207,23 +207,6 @@ static
> int adis16204_reset(struct iio_dev *indio_dev)
>       return ret;
>  }
> -static ssize_t adis16204_write_reset(struct device *dev,
> -             struct device_attribute *attr,
> -             const char *buf, size_t len)
> -{
> -     struct iio_dev *indio_dev =3D dev_to_iio_dev(dev);
> -
> -     if (len < 1)
> -             return -EINVAL;
> -     switch (buf[0]) {
> -     case '1':
> -     case 'y':
> -     case 'Y':
> -             return adis16204_reset(indio_dev);
> -     }
> -     return -EINVAL;
> -}
> -
>  int adis16204_set_irq(struct iio_dev *indio_dev, bool enable)
>  {
>       int ret =3D 0;
> @@ -310,8 +293,6 @@ static
> IIO_DEV_ATTR_ACCEL_XYPEAK(adis16204_read_14bit_signed,
>               ADIS16204_XY_PEAK_OUT);
>  static IIO_CONST_ATTR(in_accel_xy_scale, "0.017125");
> -static IIO_DEVICE_ATTR(reset, S_IWUSR, NULL, adis16204_write_reset, 0);
> -
>  enum adis16204_channel {
>       in_supply,
>       in_aux,
> @@ -520,7 +501,6 @@ static struct iio_chan_spec adis16204_channels[] =3D
> {
>  };
>
>  static struct attribute *adis16204_attributes[] =3D {
>  -    &iio_dev_attr_reset.dev_attr.attr,
>       &iio_dev_attr_in_accel_xy.dev_attr.attr,
>       &iio_dev_attr_in_accel_xypeak.dev_attr.attr,
>       &iio_const_attr_in_accel_xy_scale.dev_attr.attr,
> diff --git a/drivers/staging/iio/accel/adis16209_core.c
> b/drivers/staging/iio/accel/adis16209_core.c index f6fd0d3..f4c82f1
> 100644 --- a/drivers/staging/iio/accel/adis16209_core.c +++
> b/drivers/staging/iio/accel/adis16209_core.c @@ -153,23 +153,6 @@ static
> int adis16209_reset(struct iio_dev *indio_dev)
>       return ret;
>  }
> -static ssize_t adis16209_write_reset(struct device *dev,
> -             struct device_attribute *attr,
> -             const char *buf, size_t len)
> -{
> -     struct iio_dev *indio_dev =3D dev_to_iio_dev(dev);
> -
> -     if (len < 1)
> -             return -EINVAL;
> -     switch (buf[0]) {
> -     case '1':
> -     case 'y':
> -     case 'Y':
> -             return adis16209_reset(indio_dev);
> -     }
> -     return -EINVAL;
> -}
> -
>  int adis16209_set_irq(struct iio_dev *indio_dev, bool enable)
>  {
>       int ret =3D 0;
> @@ -519,19 +502,7 @@ static struct iio_chan_spec adis16209_channels[] =3D
> {
>       IIO_CHAN_SOFT_TIMESTAMP(8)
>  };
> -static IIO_DEVICE_ATTR(reset, S_IWUSR, NULL, adis16209_write_reset, 0);
> - -static struct attribute *adis16209_attributes[] =3D {
> -     &iio_dev_attr_reset.dev_attr.attr, -    NULL -}; - -static const st=
ruct
> attribute_group adis16209_attribute_group =3D { -       .attrs =3D
> adis16209_attributes, -}; -
>  static const struct iio_info adis16209_info =3D { -    .attrs =3D
>  &adis16209_attribute_group,  .read_raw =3D &adis16209_read_raw,
>       .write_raw =3D &adis16209_write_raw,      .driver_module =3D THIS_M=
ODULE,
> diff --git a/drivers/staging/iio/accel/adis16220_core.c
> b/drivers/staging/iio/accel/adis16220_core.c index 6a9ac89..2877410
> 100644 --- a/drivers/staging/iio/accel/adis16220_core.c +++
> b/drivers/staging/iio/accel/adis16220_core.c @@ -204,26 +204,6 @@ static
> int adis16220_reset(struct iio_dev *indio_dev)
>       return ret;
>  }
> -static ssize_t adis16220_write_reset(struct device *dev,
> -             struct device_attribute *attr,
> -             const char *buf, size_t len)
> -{
> -     struct iio_dev *indio_dev =3D dev_to_iio_dev(dev);
> -     bool val;
> -     int ret;
> -
> -     ret =3D strtobool(buf, &val);
> -     if (ret)
> -             return ret;
> -     if (!val)
> -             return -EINVAL;
> -
> -     ret =3D adis16220_reset(indio_dev);
> -     if (ret)
> -             return ret;
> -     return len;
> -}
> -
>  static ssize_t adis16220_write_capture(struct device *dev,           str=
uct
>  device_attribute *attr,              const char *buf, size_t len) @@ -45=
4,9 +434,6
>  @@ static struct bin_attribute adc2_bin =3D {  .size =3D
>  ADIS16220_CAPTURE_SIZE, };
> -static IIO_DEVICE_ATTR(reset, S_IWUSR, NULL,
> -             adis16220_write_reset, 0);
> -
>  #define IIO_DEV_ATTR_CAPTURE(_store)                         \
>       IIO_DEVICE_ATTR(capture, S_IWUSR, NULL, _store, 0)
> @@ -611,7 +588,6 @@ static const struct iio_chan_spec
> adis16220_channels[] =3D {
>  };
>
>  static struct attribute *adis16220_attributes[] =3D {
>  -    &iio_dev_attr_reset.dev_attr.attr,
>       &iio_dev_attr_capture.dev_attr.attr,
>       &iio_dev_attr_capture_count.dev_attr.attr,      NULL
> diff --git a/drivers/staging/iio/accel/adis16240_core.c
> b/drivers/staging/iio/accel/adis16240_core.c index 8b15eae..2df39d1
> 100644 --- a/drivers/staging/iio/accel/adis16240_core.c +++
> b/drivers/staging/iio/accel/adis16240_core.c @@ -199,23 +199,6 @@ static
> int adis16240_reset(struct iio_dev *indio_dev)
>       return ret;
>  }
> -static ssize_t adis16240_write_reset(struct device *dev,
> -             struct device_attribute *attr,
> -             const char *buf, size_t len)
> -{
> -     struct iio_dev *indio_dev =3D dev_to_iio_dev(dev);
> -
> -     if (len < 1)
> -             return -EINVAL;
> -     switch (buf[0]) {
> -     case '1':
> -     case 'y':
> -     case 'Y':
> -             return adis16240_reset(indio_dev);
> -     }
> -     return -EINVAL;
> -}
> -
>  int adis16240_set_irq(struct iio_dev *indio_dev, bool enable)
>  {
>       int ret =3D 0;
> @@ -329,8 +312,6 @@ static
> IIO_DEVICE_ATTR(in_accel_xyz_squared_peak_raw, S_IRUGO,
>                      adis16240_read_12bit_signed, NULL,
>                      ADIS16240_XYZPEAK_OUT);
> -static IIO_DEVICE_ATTR(reset, S_IWUSR, NULL, adis16240_write_reset, 0);
> -
>  static IIO_CONST_ATTR_SAMP_FREQ_AVAIL("4096");
>
>  enum adis16240_chan {
> @@ -556,7 +537,6 @@ static struct iio_chan_spec adis16240_channels[] =3D
> {
>  static struct attribute *adis16240_attributes[] =3D {
>       &iio_dev_attr_in_accel_xyz_squared_peak_raw.dev_attr.attr,
>       &iio_const_attr_sampling_frequency_available.dev_attr.attr,
>  -    &iio_dev_attr_reset.dev_attr.attr,      NULL };

Greetings,
Michael

--
Analog Devices GmbH      Wilhelm-Wagenfeld-Str. 6      80807 Muenchen
Sitz der Gesellschaft: Muenchen; Registergericht: Muenchen HRB 40368;
Geschaeftsfuehrer:Dr.Carsten Suckrow, Thomas Wessel, William A. Martin, Mar=
garet Seif

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

* RE: [PATCH 6/8] staging:iio:accel:adis16204 support the rss channel via chan spec.
  2012-05-30 19:41 ` [PATCH 6/8] staging:iio:accel:adis16204 support the rss channel via chan spec Jonathan Cameron
  2012-05-30 19:43   ` Jonathan Cameron
@ 2012-06-01  9:24   ` Hennerich, Michael
  1 sibling, 0 replies; 19+ messages in thread
From: Hennerich, Michael @ 2012-06-01  9:24 UTC (permalink / raw)
  To: Jonathan Cameron, linux-iio@vger.kernel.org

Jonathan Cameron wrote on 2012-05-30:
> Reduces code and makes this channel available within the kernel.
> Note that it is not added to the buffer, thus maintaining the
> previous functionality of this driver.
>
> Signed-off-by: Jonathan Cameron <jic23@kernel.org>
Acked-by: Michael Hennerich <michael.hennerich@analog.com>
> ---
>  drivers/staging/iio/accel/adis16204_core.c |   83 ++++++++++----------
>  -------- 1 file changed, 29 insertions(+), 54 deletions(-)
> diff --git a/drivers/staging/iio/accel/adis16204_core.c
> b/drivers/staging/iio/accel/adis16204_core.c index a36135d..cb8701d
> 100644 --- a/drivers/staging/iio/accel/adis16204_core.c +++
> b/drivers/staging/iio/accel/adis16204_core.c @@ -169,32 +169,6 @@
> error_ret:
>       return ret;
>  }
> -static ssize_t adis16204_read_14bit_signed(struct device *dev,
> -             struct device_attribute *attr, -                char *buf) =
-{ - struct iio_dev
> *indio_dev =3D dev_to_iio_dev(dev); -   struct iio_dev_attr *this_attr =
=3D
> to_iio_dev_attr(attr); -      s16 val =3D 0; -  ssize_t ret; -
> -     mutex_lock(&indio_dev->mlock); - -      ret =3D
> adis16204_spi_read_reg_16(indio_dev, -                                   =
     this_attr->address, (u16
> *)&val); -    if (!ret) { -           if (val & ADIS16204_ERROR_ACTIVE)
> -                     adis16204_check_status(indio_dev); - -          val=
 =3D ((s16)(val << 2) >>
> 2); -         ret =3D sprintf(buf, "%d\n", val); -      } -
> -     mutex_unlock(&indio_dev->mlock); - -    return ret; -} -
>  static int adis16204_reset(struct iio_dev *indio_dev) {      int ret; @@
>  -282,16 +256,6 @@ err_ret: }
>
>  /* Unique to this driver currently */
> -#define IIO_DEV_ATTR_ACCEL_XY(_show, _addr)                  \
> -     IIO_DEVICE_ATTR(in_accel_xy, S_IRUGO, _show, NULL, _addr) -#define
> IIO_DEV_ATTR_ACCEL_XYPEAK(_show, _addr)               \
> -     IIO_DEVICE_ATTR(in_accel_xypeak, S_IRUGO, _show, NULL, _addr) -
> -static IIO_DEV_ATTR_ACCEL_XY(adis16204_read_14bit_signed,
> -             ADIS16204_XY_RSS_OUT); -static
> IIO_DEV_ATTR_ACCEL_XYPEAK(adis16204_read_14bit_signed,
> -             ADIS16204_XY_PEAK_OUT); -static IIO_CONST_ATTR(in_accel_xy_=
scale,
> "0.017125");
>
>  enum adis16204_channel {     in_supply, @@ -299,9 +263,10 @@ enum
>  adis16204_channel {  temp,   accel_x,        accel_y, +      accel_xy, }=
;
> -static u8 adis16204_addresses[5][3] =3D {
> +static u8 adis16204_addresses[6][3] =3D {
>       [in_supply] =3D { ADIS16204_SUPPLY_OUT },         [in_aux] =3D {
>  ADIS16204_AUX_ADC },         [temp] =3D { ADIS16204_TEMP_OUT }, @@ -309,=
6 +274,8
>  @@ static u8 adis16204_addresses[5][3] =3D {                 ADIS16204_X=
_PEAK_OUT
>  },   [accel_y] =3D { ADIS16204_XACCL_OUT, ADIS16204_YACCL_NULL,
>  ADIS16204_Y_PEAK_OUT },
> +     [accel_xy] =3D { ADIS16204_XY_RSS_OUT, 0,
> +                    ADIS16204_XY_PEAK_OUT },
>  };
>
>  static int adis16204_read_raw(struct iio_dev *indio_dev,
> @@ -362,10 +329,16 @@ static int adis16204_read_raw(struct iio_dev
> *indio_dev,
>                       return IIO_VAL_INT_PLUS_MICRO;
>               case IIO_ACCEL:
>                       *val =3D 0;
> -                     if (chan->channel2 =3D=3D IIO_CHAN_MOD_X)
> -                             *val2 =3D 17125;
> -                     else
> -                             *val2 =3D 8407;
> +                     switch (chan->channel2) {
> +                     case IIO_MOD_X:
> +                     case IIO_MOD_ROOT_SUM_SQUARED_X_Y:
> +                             *val2 =3D 17125;
> +                             break;
> +                     case IIO_MOD_Y:
> +                     case IIO_MOD_Z:
> +                             *val2 =3D 8407;
> +                             break;
> +                     }
>                       return IIO_VAL_INT_PLUS_MICRO;
>               default:
>                       return -EINVAL;
> @@ -498,21 +471,23 @@ static struct iio_chan_spec adis16204_channels[]
> =3D {
>               },
>       },
>       IIO_CHAN_SOFT_TIMESTAMP(5),
> -}; - -static struct attribute *adis16204_attributes[] =3D {
> -     &iio_dev_attr_in_accel_xy.dev_attr.attr,
> -     &iio_dev_attr_in_accel_xypeak.dev_attr.attr,
> -     &iio_const_attr_in_accel_xy_scale.dev_attr.attr, -      NULL -}; - =
-static
> const struct attribute_group adis16204_attribute_group =3D { -  .attrs =
=3D
> adis16204_attributes, +       { +             .type =3D IIO_ACCEL, +     =
       .modified =3D 1,
> +             .channel2 =3D IIO_MOD_ROOT_SUM_SQUARED_X_Y, +             .=
info_mask =3D
> IIO_CHAN_INFO_RAW_SEPARATE_BIT | +            IIO_CHAN_INFO_SCALE_SEPARAT=
E_BIT |
> +             IIO_CHAN_INFO_PEAK_SEPARATE_BIT, +              .address =
=3D accel_xy,
> +             .scan_type =3D { +                        .sign =3D 'u', + =
                 .realbits =3D 14, +                       .storagebits
> =3D 16, +               }, +    }
>  };
>
>  static const struct iio_info adis16204_info =3D { -    .attrs =3D
>  &adis16204_attribute_group,  .read_raw =3D &adis16204_read_raw,
>       .write_raw =3D &adis16204_write_raw,      .driver_module =3D THIS_M=
ODULE,
> @@ -549,7 +524,7 @@ static int __devinit adis16204_probe(struct
> spi_device *spi)
>
>       ret =3D iio_buffer_register(indio_dev,
>                                 adis16204_channels,
> -                               ARRAY_SIZE(adis16204_channels));
> +                               6);
>       if (ret) {
>               printk(KERN_ERR "failed to initialize the ring\n");
>               goto error_unreg_ring_funcs;

Greetings,
Michael

--
Analog Devices GmbH      Wilhelm-Wagenfeld-Str. 6      80807 Muenchen
Sitz der Gesellschaft: Muenchen; Registergericht: Muenchen HRB 40368;
Geschaeftsfuehrer:Dr.Carsten Suckrow, Thomas Wessel, William A. Martin, Mar=
garet Seif

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

* RE: [PATCH 8/8] staging:iio: Add some missing peak elements to the info_mask
  2012-05-30 19:41 ` [PATCH 8/8] staging:iio: Add some missing peak elements to the info_mask Jonathan Cameron
@ 2012-06-01  9:25   ` Hennerich, Michael
  0 siblings, 0 replies; 19+ messages in thread
From: Hennerich, Michael @ 2012-06-01  9:25 UTC (permalink / raw)
  To: Jonathan Cameron, linux-iio@vger.kernel.org

Jonathan Cameron wrote on 2012-05-30:
> These are supported by raw_read but not actually there.
>
> Signed-off-by: Jonathan Cameron <jic23@kernel.org>
Acked-by: Michael Hennerich <michael.hennerich@analog.com>

> ---
>  drivers/staging/iio/accel/adis16240_core.c |    9 ++++++---
>  1 file changed, 6 insertions(+), 3 deletions(-)
> diff --git a/drivers/staging/iio/accel/adis16240_core.c
> b/drivers/staging/iio/accel/adis16240_core.c index 2df39d1..3f30a99
> 100644 --- a/drivers/staging/iio/accel/adis16240_core.c +++
> b/drivers/staging/iio/accel/adis16240_core.c @@ -481,7 +481,8 @@ static
> struct iio_chan_spec adis16240_channels[] =3D {
>               .channel2 =3D IIO_MOD_X,
>               .info_mask =3D IIO_CHAN_INFO_RAW_SEPARATE_BIT |
>               IIO_CHAN_INFO_SCALE_SHARED_BIT |
> -             IIO_CHAN_INFO_CALIBBIAS_SEPARATE_BIT,
> +             IIO_CHAN_INFO_CALIBBIAS_SEPARATE_BIT |
> +             IIO_CHAN_INFO_PEAK_SEPARATE_BIT,
>               .address =3D accel_x,
>               .scan_index =3D ADIS16240_SCAN_ACC_X,
>               .scan_type =3D {
> @@ -495,7 +496,8 @@ static struct iio_chan_spec adis16240_channels[] =3D
> {
>               .channel2 =3D IIO_MOD_Y,
>               .info_mask =3D IIO_CHAN_INFO_RAW_SEPARATE_BIT |
>               IIO_CHAN_INFO_SCALE_SHARED_BIT |
> -             IIO_CHAN_INFO_CALIBBIAS_SEPARATE_BIT,
> +             IIO_CHAN_INFO_CALIBBIAS_SEPARATE_BIT |
> +             IIO_CHAN_INFO_PEAK_SEPARATE_BIT,
>               .address =3D accel_y,
>               .scan_index =3D ADIS16240_SCAN_ACC_Y,
>               .scan_type =3D {
> @@ -509,7 +511,8 @@ static struct iio_chan_spec adis16240_channels[] =3D
> {
>               .channel2 =3D IIO_MOD_Z,
>               .info_mask =3D IIO_CHAN_INFO_RAW_SEPARATE_BIT |
>               IIO_CHAN_INFO_SCALE_SHARED_BIT |
> -             IIO_CHAN_INFO_CALIBBIAS_SEPARATE_BIT,
> +             IIO_CHAN_INFO_CALIBBIAS_SEPARATE_BIT |
> +             IIO_CHAN_INFO_PEAK_SEPARATE_BIT,
>               .address =3D accel_z,
>               .scan_index =3D ADIS16240_SCAN_ACC_Z,
>               .scan_type =3D {

Greetings,
Michael

--
Analog Devices GmbH      Wilhelm-Wagenfeld-Str. 6      80807 Muenchen
Sitz der Gesellschaft: Muenchen; Registergericht: Muenchen HRB 40368;
Geschaeftsfuehrer:Dr.Carsten Suckrow, Thomas Wessel, William A. Martin, Mar=
garet Seif

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

* Re: [PATCH 5/8] staging:iio:accel:adis16204 fix bug in channel modifier handling
  2012-06-01  9:23   ` Hennerich, Michael
@ 2012-06-30  8:44     ` Jonathan Cameron
  0 siblings, 0 replies; 19+ messages in thread
From: Jonathan Cameron @ 2012-06-30  8:44 UTC (permalink / raw)
  To: Hennerich, Michael; +Cc: linux-iio@vger.kernel.org

On 06/01/2012 10:23 AM, Hennerich, Michael wrote:
> Jonathan Cameron wrote on 2012-05-30:
>> Will result in the correct scale value for the x axis.
>>
>> Signed-off-by: Jonathan Cameron <jic23@kernel.org>
> Acked-by: Michael Hennerich <michael.hennerich@analog.com>
>> ---
>>  drivers/staging/iio/accel/adis16204_core.c |    2 +-
>>  1 file changed, 1 insertion(+), 1 deletion(-)
>> diff --git a/drivers/staging/iio/accel/adis16204_core.c
>> b/drivers/staging/iio/accel/adis16204_core.c index 5c02bc6..a36135d
>> 100644 --- a/drivers/staging/iio/accel/adis16204_core.c +++
>> b/drivers/staging/iio/accel/adis16204_core.c @@ -362,7 +362,7 @@ static
>> int adis16204_read_raw(struct iio_dev *indio_dev,
>>                       return IIO_VAL_INT_PLUS_MICRO;
>>               case IIO_ACCEL:
>>                       *val = 0;
>> -                     if (chan->channel == 'x')
>> +                     if (chan->channel2 == IIO_CHAN_MOD_X)
Should be IIO_MOD_X oops.  Was wiped out in the next patch.
Picked up doing some final compile tests on this set.

>>                               *val2 = 17125;
>>                       else
>>                               *val2 = 8407;
> 
> Greetings,
> Michael
> 
> --
> Analog Devices GmbH      Wilhelm-Wagenfeld-Str. 6      80807 Muenchen
> Sitz der Gesellschaft: Muenchen; Registergericht: Muenchen HRB 40368;
> Geschaeftsfuehrer:Dr.Carsten Suckrow, Thomas Wessel, William A. Martin, Margaret Seif
> 
> 
> 
> --
> To unsubscribe from this list: send the line "unsubscribe linux-iio" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html
> 



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

end of thread, other threads:[~2012-06-30  8:44 UTC | newest]

Thread overview: 19+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2012-05-30 19:40 [PATCH 0/8] IIO: Cleanups and complicated channel modifiers Jonathan Cameron
2012-05-30 19:33 ` Getz, Robin
2012-05-31  7:18   ` Jonathan Cameron
2012-05-30 19:40 ` [PATCH 1/8] staging:iio:accel drop sysfs interface for resetting devices Jonathan Cameron
2012-06-01  9:24   ` Hennerich, Michael
2012-05-30 19:41 ` [PATCH 2/8] staging:iio:gyro:adis16260 drop sysfs interface for manual device reset Jonathan Cameron
2012-06-01  9:23   ` Hennerich, Michael
2012-05-30 19:41 ` [PATCH 3/8] staging:iio:imu:adis16400 " Jonathan Cameron
2012-06-01  9:23   ` Hennerich, Michael
2012-05-30 19:41 ` [PATCH 4/8] IIO: Add a modifier for sqrt(x^2+y^2) Jonathan Cameron
2012-05-30 19:41 ` [PATCH 5/8] staging:iio:accel:adis16204 fix bug in channel modifier handling Jonathan Cameron
2012-06-01  9:23   ` Hennerich, Michael
2012-06-30  8:44     ` Jonathan Cameron
2012-05-30 19:41 ` [PATCH 6/8] staging:iio:accel:adis16204 support the rss channel via chan spec Jonathan Cameron
2012-05-30 19:43   ` Jonathan Cameron
2012-06-01  9:24   ` Hennerich, Michael
2012-05-30 19:41 ` [PATCH 7/8] IIO: Add a modifier for x^2+y^2+z^2 Jonathan Cameron
2012-05-30 19:41 ` [PATCH 8/8] staging:iio: Add some missing peak elements to the info_mask Jonathan Cameron
2012-06-01  9:25   ` Hennerich, Michael

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