* [PATCH 00/19] staging:iio:cleanups - post fixes
@ 2011-08-12 16:08 Jonathan Cameron
2011-08-12 16:08 ` [PATCH 01/19] staging:iio:trivial sparse related cleanups Jonathan Cameron
` (19 more replies)
0 siblings, 20 replies; 21+ messages in thread
From: Jonathan Cameron @ 2011-08-12 16:08 UTC (permalink / raw)
To: greg; +Cc: linux-iio, Jonathan Cameron
Hi Greg,
Apply post the previous fixes set please.
This is also hopefully a fairly uncontroversial set.
There may be some issues with any new drivers that cross with it
merging, so give me a shout if that happens.
The last 2 patches get rid of dev_data which should stop any new
drivers from doing things 'the old way.'
Now we have the iio_chan_spec based registration a lot of the
device type specific headers are pointless and hence we get
rid of them. The first once goes here, others are post the
next set of conversions.
Thanks,
Jonathan
Jonathan Cameron (19):
staging:iio:trivial sparse related cleanups.
staging:iio:imu:adis16400: use strtobool for reset sysfs and don't
assign unused tx members.
staging:iio:imu:adis16400 remove now unused headers.
staging:iio:triggers introduce iio_trigger_ops to take const bits out
of iio_trig_structure.
staging:iio:gyro:adis16260 remove some unused headers
staging:iio:imu:adis16400 remove unused headers.
staging:iio:gyro:adis16130 drop control of adc resolution.
staging:iio:accel: usused header removals.
staging:iio:adc: unused header removals.
staging:iio:inclinometer.h remove as now unused.
staging:iio:various header includes that should never have been.
staging:iio:adc: header cleanup - remove unused.
staging:iio:accel header housekeeping - remove unecessary includes.
staging:iio:gyro and meter: header housecleaning.
staging:iio:core flatten convenience function that only has one user.
staging:iio:core squash trivial wrappers and use ida allocation func.
staging:iio:sysfs cleanout header for unused definitions.
staging:iio:light:tsl2583 allocate chip state with iio_dev
staging:iio: Remove deprecated dev_data from iio_dev.
drivers/staging/iio/accel/adis16201_core.c | 4 -
drivers/staging/iio/accel/adis16201_ring.c | 5 -
drivers/staging/iio/accel/adis16201_trigger.c | 13 +-
drivers/staging/iio/accel/adis16203_core.c | 3 -
drivers/staging/iio/accel/adis16203_ring.c | 8 -
drivers/staging/iio/accel/adis16203_trigger.c | 14 +-
drivers/staging/iio/accel/adis16204_ring.c | 8 -
drivers/staging/iio/accel/adis16204_trigger.c | 14 +-
drivers/staging/iio/accel/adis16209_core.c | 3 -
drivers/staging/iio/accel/adis16209_ring.c | 8 -
drivers/staging/iio/accel/adis16209_trigger.c | 14 +-
drivers/staging/iio/accel/adis16240_core.c | 2 -
drivers/staging/iio/accel/adis16240_ring.c | 8 -
drivers/staging/iio/accel/adis16240_trigger.c | 14 +-
drivers/staging/iio/accel/inclinometer.h | 25 ---
drivers/staging/iio/accel/lis3l02dq_core.c | 2 -
drivers/staging/iio/accel/lis3l02dq_ring.c | 15 +-
drivers/staging/iio/accel/sca3000_core.c | 3 +-
drivers/staging/iio/accel/sca3000_ring.c | 71 -------
drivers/staging/iio/adc/ad7150.c | 2 +
drivers/staging/iio/adc/ad7298_core.c | 1 -
drivers/staging/iio/adc/ad7298_ring.c | 3 -
drivers/staging/iio/adc/ad7476_core.c | 1 -
drivers/staging/iio/adc/ad7476_ring.c | 2 -
drivers/staging/iio/adc/ad7606_core.c | 1 -
drivers/staging/iio/adc/ad7606_ring.c | 2 -
drivers/staging/iio/adc/ad7780.c | 1 -
drivers/staging/iio/adc/ad7793.c | 1 -
drivers/staging/iio/adc/ad7887_core.c | 2 +-
drivers/staging/iio/adc/ad7887_ring.c | 3 -
drivers/staging/iio/adc/ad799x_core.c | 13 +-
drivers/staging/iio/adc/ad799x_ring.c | 3 -
drivers/staging/iio/adc/max1363_core.c | 23 ++-
drivers/staging/iio/adc/max1363_ring.c | 4 -
drivers/staging/iio/dac/ad5791.c | 1 -
drivers/staging/iio/gyro/adis16130_core.c | 76 +-------
drivers/staging/iio/gyro/adis16260_core.c | 2 -
drivers/staging/iio/gyro/adis16260_ring.c | 8 -
drivers/staging/iio/gyro/adis16260_trigger.c | 14 +-
drivers/staging/iio/iio.h | 17 +--
drivers/staging/iio/imu/adis16400_core.c | 28 +--
drivers/staging/iio/imu/adis16400_ring.c | 8 -
drivers/staging/iio/imu/adis16400_trigger.c | 14 +-
drivers/staging/iio/industrialio-core.c | 130 +++++-------
drivers/staging/iio/industrialio-trigger.c | 16 +-
drivers/staging/iio/light/tsl2563.c | 2 +-
drivers/staging/iio/light/tsl2583.c | 220 +++++++++-----------
drivers/staging/iio/meter/ade7758_ring.c | 9 -
drivers/staging/iio/meter/ade7758_trigger.c | 16 +-
drivers/staging/iio/meter/ade7854.c | 2 +-
drivers/staging/iio/sysfs.h | 45 +----
drivers/staging/iio/trigger.h | 36 ++-
drivers/staging/iio/trigger/iio-trig-bfin-timer.c | 6 +-
drivers/staging/iio/trigger/iio-trig-gpio.c | 6 +-
.../staging/iio/trigger/iio-trig-periodic-rtc.c | 7 +-
drivers/staging/iio/trigger/iio-trig-sysfs.c | 6 +-
56 files changed, 311 insertions(+), 654 deletions(-)
delete mode 100644 drivers/staging/iio/accel/inclinometer.h
--
1.7.3.4
^ permalink raw reply [flat|nested] 21+ messages in thread
* [PATCH 01/19] staging:iio:trivial sparse related cleanups.
2011-08-12 16:08 [PATCH 00/19] staging:iio:cleanups - post fixes Jonathan Cameron
@ 2011-08-12 16:08 ` Jonathan Cameron
2011-08-12 16:08 ` [PATCH 02/19] staging:iio:imu:adis16400: use strtobool for reset sysfs and don't assign unused tx members Jonathan Cameron
` (18 subsequent siblings)
19 siblings, 0 replies; 21+ messages in thread
From: Jonathan Cameron @ 2011-08-12 16:08 UTC (permalink / raw)
To: greg; +Cc: linux-iio, Jonathan Cameron
Getting rid of messages that make it harder to spot important issues.
Some code removed that will be useful one day. Can put it back then.
Signed-off-by: Jonathan Cameron <jic23@cam.ac.uk>
---
drivers/staging/iio/accel/sca3000_ring.c | 68 ------------------------------
drivers/staging/iio/adc/ad7150.c | 2 +
drivers/staging/iio/dac/ad5791.c | 1 -
drivers/staging/iio/light/tsl2563.c | 2 +-
drivers/staging/iio/light/tsl2583.c | 4 +-
drivers/staging/iio/meter/ade7854.c | 2 +-
6 files changed, 6 insertions(+), 73 deletions(-)
diff --git a/drivers/staging/iio/accel/sca3000_ring.c b/drivers/staging/iio/accel/sca3000_ring.c
index a704c75..3e60861 100644
--- a/drivers/staging/iio/accel/sca3000_ring.c
+++ b/drivers/staging/iio/accel/sca3000_ring.c
@@ -226,74 +226,6 @@ static IIO_DEVICE_ATTR(75_percent, S_IRUGO | S_IWUSR,
sca3000_set_ring_int,
SCA3000_INT_MASK_RING_THREE_QUARTER);
-
-/**
- * sca3000_show_ring_bpse() -sysfs function to query bits per sample from ring
- * @dev: ring buffer device
- * @attr: this device attribute
- * @buf: buffer to write to
- **/
-static ssize_t sca3000_show_ring_bpse(struct device *dev,
- struct device_attribute *attr,
- char *buf)
-{
- int len = 0, ret;
- struct iio_ring_buffer *ring = dev_get_drvdata(dev);
- struct iio_dev *indio_dev = ring->indio_dev;
- struct sca3000_state *st = iio_priv(indio_dev);
-
- mutex_lock(&st->lock);
- ret = sca3000_read_data_short(st, SCA3000_REG_ADDR_MODE, 1);
- if (ret)
- goto error_ret;
- if (st->rx[0] & SCA3000_RING_BUF_8BIT)
- len = sprintf(buf, "s8/8\n");
- else
- len = sprintf(buf, "s11/16\n");
-error_ret:
- mutex_unlock(&st->lock);
-
- return ret ? ret : len;
-}
-
-/**
- * sca3000_store_ring_bpse() - bits per scan element
- * @dev: ring buffer device
- * @attr: attribute called from
- * @buf: input from userspace
- * @len: length of input
- **/
-static ssize_t sca3000_store_ring_bpse(struct device *dev,
- struct device_attribute *attr,
- const char *buf,
- size_t len)
-{
- struct iio_ring_buffer *ring = dev_get_drvdata(dev);
- struct iio_dev *indio_dev = ring->indio_dev;
- struct sca3000_state *st = iio_priv(indio_dev);
- int ret;
-
- mutex_lock(&st->lock);
-
- ret = sca3000_read_data_short(st, SCA3000_REG_ADDR_MODE, 1);
- if (ret)
- goto error_ret;
- if (sysfs_streq(buf, "s8/8")) {
- ret = sca3000_write_reg(st, SCA3000_REG_ADDR_MODE,
- st->rx[0] | SCA3000_RING_BUF_8BIT);
- st->bpse = 8;
- } else if (sysfs_streq(buf, "s11/16")) {
- ret = sca3000_write_reg(st, SCA3000_REG_ADDR_MODE,
- st->rx[0] & ~SCA3000_RING_BUF_8BIT);
- st->bpse = 11;
- } else
- ret = -EINVAL;
-error_ret:
- mutex_unlock(&st->lock);
-
- return ret ? ret : len;
-}
-
static ssize_t sca3000_show_buffer_scale(struct device *dev,
struct device_attribute *attr,
char *buf)
diff --git a/drivers/staging/iio/adc/ad7150.c b/drivers/staging/iio/adc/ad7150.c
index 04017ef..917fb2f 100644
--- a/drivers/staging/iio/adc/ad7150.c
+++ b/drivers/staging/iio/adc/ad7150.c
@@ -617,6 +617,8 @@ static IIO_DEV_ATTR_POWERDOWN_TIMER(S_IRUGO | S_IWUSR,
ad7150_store_powerdown_timer);
static struct attribute *ad7150_attributes[] = {
+ &iio_dev_attr_available_conversion_modes.dev_attr.attr,
+ &iio_dev_attr_conversion_mode.dev_attr.attr,
&iio_dev_attr_available_threshold_modes.dev_attr.attr,
&iio_dev_attr_threshold_mode.dev_attr.attr,
&iio_dev_attr_ch1_threshold.dev_attr.attr,
diff --git a/drivers/staging/iio/dac/ad5791.c b/drivers/staging/iio/dac/ad5791.c
index 64770d2..5b00b70 100644
--- a/drivers/staging/iio/dac/ad5791.c
+++ b/drivers/staging/iio/dac/ad5791.c
@@ -381,7 +381,6 @@ error_put_reg_pos:
if (!IS_ERR(reg_vdd))
regulator_put(reg_vdd);
-error_ret:
return ret;
}
diff --git a/drivers/staging/iio/light/tsl2563.c b/drivers/staging/iio/light/tsl2563.c
index f25243b..bb96857 100644
--- a/drivers/staging/iio/light/tsl2563.c
+++ b/drivers/staging/iio/light/tsl2563.c
@@ -697,7 +697,7 @@ static int __devinit tsl2563_probe(struct i2c_client *client,
struct tsl2563_platform_data *pdata = client->dev.platform_data;
int err = 0;
int ret;
- u8 id;
+ u8 id = 0;
indio_dev = iio_allocate_device(sizeof(*chip));
if (!indio_dev)
diff --git a/drivers/staging/iio/light/tsl2583.c b/drivers/staging/iio/light/tsl2583.c
index 5694610..296d0ff 100644
--- a/drivers/staging/iio/light/tsl2583.c
+++ b/drivers/staging/iio/light/tsl2583.c
@@ -68,7 +68,7 @@ enum {
TSL258X_CHIP_UNKNOWN = 0,
TSL258X_CHIP_WORKING = 1,
TSL258X_CHIP_SUSPENDED = 2
-} TSL258X_CHIP_WORKING_STATUS;
+};
/* Per-device data */
struct taos_als_info {
@@ -114,7 +114,7 @@ struct taos_lux {
/* This structure is intentionally large to accommodate updates via sysfs. */
/* Sized to 11 = max 10 segments + 1 termination segment */
/* Assumption is is one and only one type of glass used */
-struct taos_lux taos_device_lux[11] = {
+static struct taos_lux taos_device_lux[11] = {
{ 9830, 8520, 15729 },
{ 12452, 10807, 23344 },
{ 14746, 6383, 11705 },
diff --git a/drivers/staging/iio/meter/ade7854.c b/drivers/staging/iio/meter/ade7854.c
index b82659f..9b240ed 100644
--- a/drivers/staging/iio/meter/ade7854.c
+++ b/drivers/staging/iio/meter/ade7854.c
@@ -582,7 +582,7 @@ error_unreg_dev:
iio_device_unregister(indio_dev);
error_free_dev:
iio_free_device(indio_dev);
-error_ret:
+
return ret;
}
EXPORT_SYMBOL(ade7854_probe);
--
1.7.3.4
^ permalink raw reply related [flat|nested] 21+ messages in thread
* [PATCH 02/19] staging:iio:imu:adis16400: use strtobool for reset sysfs and don't assign unused tx members.
2011-08-12 16:08 [PATCH 00/19] staging:iio:cleanups - post fixes Jonathan Cameron
2011-08-12 16:08 ` [PATCH 01/19] staging:iio:trivial sparse related cleanups Jonathan Cameron
@ 2011-08-12 16:08 ` Jonathan Cameron
2011-08-12 16:08 ` [PATCH 03/19] staging:iio:imu:adis16400 remove now unused headers Jonathan Cameron
` (17 subsequent siblings)
19 siblings, 0 replies; 21+ messages in thread
From: Jonathan Cameron @ 2011-08-12 16:08 UTC (permalink / raw)
To: greg; +Cc: linux-iio, Jonathan Cameron
Signed-off-by: Jonathan Cameron <jic23@cam.ac.uk>
Acked-by: Michael Hennerich <michael.hennerich@analog.com>
---
drivers/staging/iio/imu/adis16400_core.c | 23 +++++++++++------------
1 files changed, 11 insertions(+), 12 deletions(-)
diff --git a/drivers/staging/iio/imu/adis16400_core.c b/drivers/staging/iio/imu/adis16400_core.c
index a2c3b67..4feee26 100644
--- a/drivers/staging/iio/imu/adis16400_core.c
+++ b/drivers/staging/iio/imu/adis16400_core.c
@@ -150,8 +150,6 @@ static int adis16400_spi_read_reg_16(struct iio_dev *indio_dev,
mutex_lock(&st->buf_lock);
st->tx[0] = ADIS16400_READ_REG(lower_reg_address);
st->tx[1] = 0;
- st->tx[2] = 0;
- st->tx[3] = 0;
spi_message_init(&msg);
spi_message_add_tail(&xfers[0], &msg);
@@ -240,17 +238,18 @@ static ssize_t adis16400_write_reset(struct device *dev,
struct device_attribute *attr,
const char *buf, size_t len)
{
- struct iio_dev *indio_dev = dev_get_drvdata(dev);
+ bool val;
+ int ret;
- if (len < 1)
- return -1;
- switch (buf[0]) {
- case '1':
- case 'y':
- case 'Y':
- return adis16400_reset(indio_dev);
- }
- return -1;
+ ret = strtobool(buf, &val);
+ if (ret < 0)
+ return ret;
+ if (val)
+ ret = adis16400_reset(dev_get_drvdata(dev));
+ if (ret < 0)
+ return ret;
+
+ return len;
}
int adis16400_set_irq(struct iio_dev *indio_dev, bool enable)
--
1.7.3.4
^ permalink raw reply related [flat|nested] 21+ messages in thread
* [PATCH 03/19] staging:iio:imu:adis16400 remove now unused headers.
2011-08-12 16:08 [PATCH 00/19] staging:iio:cleanups - post fixes Jonathan Cameron
2011-08-12 16:08 ` [PATCH 01/19] staging:iio:trivial sparse related cleanups Jonathan Cameron
2011-08-12 16:08 ` [PATCH 02/19] staging:iio:imu:adis16400: use strtobool for reset sysfs and don't assign unused tx members Jonathan Cameron
@ 2011-08-12 16:08 ` Jonathan Cameron
2011-08-12 16:08 ` [PATCH 04/19] staging:iio:triggers introduce iio_trigger_ops to take const bits out of iio_trig_structure Jonathan Cameron
` (16 subsequent siblings)
19 siblings, 0 replies; 21+ messages in thread
From: Jonathan Cameron @ 2011-08-12 16:08 UTC (permalink / raw)
To: greg; +Cc: linux-iio, Jonathan Cameron
These should really have gone away with the code that needed them.
Signed-off-by: Jonathan Cameron <jic23@cam.ac.uk>
Acked-by: Michael Hennerich <michael.hennerich@analog.com>
---
drivers/staging/iio/imu/adis16400_ring.c | 7 -------
drivers/staging/iio/imu/adis16400_trigger.c | 6 ------
2 files changed, 0 insertions(+), 13 deletions(-)
diff --git a/drivers/staging/iio/imu/adis16400_ring.c b/drivers/staging/iio/imu/adis16400_ring.c
index 3612373..556d928 100644
--- a/drivers/staging/iio/imu/adis16400_ring.c
+++ b/drivers/staging/iio/imu/adis16400_ring.c
@@ -1,18 +1,11 @@
#include <linux/interrupt.h>
-#include <linux/irq.h>
-#include <linux/gpio.h>
-#include <linux/workqueue.h>
#include <linux/mutex.h>
-#include <linux/device.h>
#include <linux/kernel.h>
#include <linux/spi/spi.h>
#include <linux/slab.h>
-#include <linux/sysfs.h>
-#include <linux/list.h>
#include <linux/bitops.h>
#include "../iio.h"
-#include "../sysfs.h"
#include "../ring_sw.h"
#include "../accel/accel.h"
#include "../trigger.h"
diff --git a/drivers/staging/iio/imu/adis16400_trigger.c b/drivers/staging/iio/imu/adis16400_trigger.c
index c6ec41a..ce98173 100644
--- a/drivers/staging/iio/imu/adis16400_trigger.c
+++ b/drivers/staging/iio/imu/adis16400_trigger.c
@@ -1,14 +1,8 @@
#include <linux/interrupt.h>
-#include <linux/irq.h>
-#include <linux/mutex.h>
-#include <linux/device.h>
#include <linux/kernel.h>
-#include <linux/sysfs.h>
-#include <linux/list.h>
#include <linux/spi/spi.h>
#include "../iio.h"
-#include "../sysfs.h"
#include "../trigger.h"
#include "adis16400.h"
--
1.7.3.4
^ permalink raw reply related [flat|nested] 21+ messages in thread
* [PATCH 04/19] staging:iio:triggers introduce iio_trigger_ops to take const bits out of iio_trig_structure.
2011-08-12 16:08 [PATCH 00/19] staging:iio:cleanups - post fixes Jonathan Cameron
` (2 preceding siblings ...)
2011-08-12 16:08 ` [PATCH 03/19] staging:iio:imu:adis16400 remove now unused headers Jonathan Cameron
@ 2011-08-12 16:08 ` Jonathan Cameron
2011-08-12 16:08 ` [PATCH 05/19] staging:iio:gyro:adis16260 remove some unused headers Jonathan Cameron
` (15 subsequent siblings)
19 siblings, 0 replies; 21+ messages in thread
From: Jonathan Cameron @ 2011-08-12 16:08 UTC (permalink / raw)
To: greg; +Cc: linux-iio, Jonathan Cameron
Right now this results in increased code, but I still think it is worth doing to avoid
replication across instances of drivers etc and move as much stuff as possible to constant.
Ops structure is optional for the occasional driver that uses none of it (currently
only the ad7793).
Signed-off-by: Jonathan Cameron <jic23@cam.ac.uk>
---
drivers/staging/iio/accel/adis16201_trigger.c | 8 +++-
drivers/staging/iio/accel/adis16203_trigger.c | 8 +++-
drivers/staging/iio/accel/adis16204_trigger.c | 8 +++-
drivers/staging/iio/accel/adis16209_trigger.c | 8 +++-
drivers/staging/iio/accel/adis16240_trigger.c | 8 +++-
drivers/staging/iio/accel/lis3l02dq_ring.c | 10 ++++--
drivers/staging/iio/gyro/adis16260_trigger.c | 8 +++-
drivers/staging/iio/imu/adis16400_trigger.c | 8 +++-
drivers/staging/iio/industrialio-trigger.c | 16 ++++----
drivers/staging/iio/meter/ade7758_trigger.c | 10 ++++--
drivers/staging/iio/trigger.h | 36 +++++++++++++------
drivers/staging/iio/trigger/iio-trig-bfin-timer.c | 6 +++-
drivers/staging/iio/trigger/iio-trig-gpio.c | 6 +++-
.../staging/iio/trigger/iio-trig-periodic-rtc.c | 7 +++-
drivers/staging/iio/trigger/iio-trig-sysfs.c | 6 +++-
15 files changed, 109 insertions(+), 44 deletions(-)
diff --git a/drivers/staging/iio/accel/adis16201_trigger.c b/drivers/staging/iio/accel/adis16201_trigger.c
index 3a95c08..7c853a6 100644
--- a/drivers/staging/iio/accel/adis16201_trigger.c
+++ b/drivers/staging/iio/accel/adis16201_trigger.c
@@ -23,6 +23,11 @@ static int adis16201_data_rdy_trigger_set_state(struct iio_trigger *trig,
return adis16201_set_irq(indio_dev, state);
}
+static const struct iio_trigger_ops adis16201_trigger_ops = {
+ .owner = THIS_MODULE,
+ .set_trigger_state = &adis16201_data_rdy_trigger_set_state,
+};
+
int adis16201_probe_trigger(struct iio_dev *indio_dev)
{
int ret;
@@ -41,9 +46,8 @@ int adis16201_probe_trigger(struct iio_dev *indio_dev)
if (ret)
goto error_free_trig;
st->trig->dev.parent = &st->us->dev;
- st->trig->owner = THIS_MODULE;
+ st->trig->ops = &adis16201_trigger_ops;
st->trig->private_data = indio_dev;
- st->trig->set_trigger_state = &adis16201_data_rdy_trigger_set_state;
ret = iio_trigger_register(st->trig);
/* select default trigger */
diff --git a/drivers/staging/iio/accel/adis16203_trigger.c b/drivers/staging/iio/accel/adis16203_trigger.c
index 3caf3e8..9ea1c1e 100644
--- a/drivers/staging/iio/accel/adis16203_trigger.c
+++ b/drivers/staging/iio/accel/adis16203_trigger.c
@@ -24,6 +24,11 @@ static int adis16203_data_rdy_trigger_set_state(struct iio_trigger *trig,
return adis16203_set_irq(indio_dev, state);
}
+static const struct iio_trigger_ops adis16203_trigger_ops = {
+ .owner = THIS_MODULE,
+ .set_trigger_state = &adis16203_data_rdy_trigger_set_state,
+};
+
int adis16203_probe_trigger(struct iio_dev *indio_dev)
{
int ret;
@@ -44,9 +49,8 @@ int adis16203_probe_trigger(struct iio_dev *indio_dev)
goto error_free_trig;
st->trig->dev.parent = &st->us->dev;
- st->trig->owner = THIS_MODULE;
+ st->trig->ops = &adis16203_trigger_ops;
st->trig->private_data = indio_dev;
- st->trig->set_trigger_state = &adis16203_data_rdy_trigger_set_state;
ret = iio_trigger_register(st->trig);
/* select default trigger */
diff --git a/drivers/staging/iio/accel/adis16204_trigger.c b/drivers/staging/iio/accel/adis16204_trigger.c
index 01f73b9..bd6d293 100644
--- a/drivers/staging/iio/accel/adis16204_trigger.c
+++ b/drivers/staging/iio/accel/adis16204_trigger.c
@@ -24,6 +24,11 @@ static int adis16204_data_rdy_trigger_set_state(struct iio_trigger *trig,
return adis16204_set_irq(indio_dev, state);
}
+static const struct iio_trigger_ops adis16204_trigger_ops = {
+ .owner = THIS_MODULE,
+ .set_trigger_state = &adis16204_data_rdy_trigger_set_state,
+};
+
int adis16204_probe_trigger(struct iio_dev *indio_dev)
{
int ret;
@@ -44,9 +49,8 @@ int adis16204_probe_trigger(struct iio_dev *indio_dev)
goto error_free_trig;
st->trig->dev.parent = &st->us->dev;
- st->trig->owner = THIS_MODULE;
+ st->trig->ops = &adis16204_trigger_ops;
st->trig->private_data = indio_dev;
- st->trig->set_trigger_state = &adis16204_data_rdy_trigger_set_state;
ret = iio_trigger_register(st->trig);
/* select default trigger */
diff --git a/drivers/staging/iio/accel/adis16209_trigger.c b/drivers/staging/iio/accel/adis16209_trigger.c
index 6df7b47..4c6df9e 100644
--- a/drivers/staging/iio/accel/adis16209_trigger.c
+++ b/drivers/staging/iio/accel/adis16209_trigger.c
@@ -33,6 +33,11 @@ static int adis16209_data_rdy_trigger_set_state(struct iio_trigger *trig,
return adis16209_set_irq(indio_dev, state);
}
+static const struct iio_trigger_ops adis16209_trigger_ops = {
+ .owner = THIS_MODULE,
+ .set_trigger_state = &adis16209_data_rdy_trigger_set_state,
+};
+
int adis16209_probe_trigger(struct iio_dev *indio_dev)
{
int ret;
@@ -52,9 +57,8 @@ int adis16209_probe_trigger(struct iio_dev *indio_dev)
if (ret)
goto error_free_trig;
st->trig->dev.parent = &st->us->dev;
- st->trig->owner = THIS_MODULE;
+ st->trig->ops = &adis16209_trigger_ops;
st->trig->private_data = indio_dev;
- st->trig->set_trigger_state = &adis16209_data_rdy_trigger_set_state;
ret = iio_trigger_register(st->trig);
/* select default trigger */
diff --git a/drivers/staging/iio/accel/adis16240_trigger.c b/drivers/staging/iio/accel/adis16240_trigger.c
index 17135fc3..0c75338 100644
--- a/drivers/staging/iio/accel/adis16240_trigger.c
+++ b/drivers/staging/iio/accel/adis16240_trigger.c
@@ -33,6 +33,11 @@ static int adis16240_data_rdy_trigger_set_state(struct iio_trigger *trig,
return adis16240_set_irq(indio_dev, state);
}
+static const struct iio_trigger_ops adis16240_trigger_ops = {
+ .owner = THIS_MODULE,
+ .set_trigger_state = &adis16240_data_rdy_trigger_set_state,
+};
+
int adis16240_probe_trigger(struct iio_dev *indio_dev)
{
int ret;
@@ -53,9 +58,8 @@ int adis16240_probe_trigger(struct iio_dev *indio_dev)
goto error_free_trig;
st->trig->dev.parent = &st->us->dev;
- st->trig->owner = THIS_MODULE;
+ st->trig->ops = &adis16240_trigger_ops;
st->trig->private_data = indio_dev;
- st->trig->set_trigger_state = &adis16240_data_rdy_trigger_set_state;
ret = iio_trigger_register(st->trig);
/* select default trigger */
diff --git a/drivers/staging/iio/accel/lis3l02dq_ring.c b/drivers/staging/iio/accel/lis3l02dq_ring.c
index 8d5c8ac..5795f82 100644
--- a/drivers/staging/iio/accel/lis3l02dq_ring.c
+++ b/drivers/staging/iio/accel/lis3l02dq_ring.c
@@ -306,6 +306,12 @@ static int lis3l02dq_trig_try_reen(struct iio_trigger *trig)
return 0;
}
+static const struct iio_trigger_ops lis3l02dq_trigger_ops = {
+ .owner = THIS_MODULE,
+ .set_trigger_state = &lis3l02dq_data_rdy_trigger_set_state,
+ .try_reenable = &lis3l02dq_trig_try_reen,
+};
+
int lis3l02dq_probe_trigger(struct iio_dev *indio_dev)
{
int ret;
@@ -318,10 +324,8 @@ int lis3l02dq_probe_trigger(struct iio_dev *indio_dev)
}
st->trig->dev.parent = &st->us->dev;
- st->trig->owner = THIS_MODULE;
+ st->trig->ops = &lis3l02dq_trigger_ops;
st->trig->private_data = indio_dev;
- st->trig->set_trigger_state = &lis3l02dq_data_rdy_trigger_set_state;
- st->trig->try_reenable = &lis3l02dq_trig_try_reen;
ret = iio_trigger_register(st->trig);
if (ret)
goto error_free_trig;
diff --git a/drivers/staging/iio/gyro/adis16260_trigger.c b/drivers/staging/iio/gyro/adis16260_trigger.c
index 01094d0..f240961 100644
--- a/drivers/staging/iio/gyro/adis16260_trigger.c
+++ b/drivers/staging/iio/gyro/adis16260_trigger.c
@@ -24,6 +24,11 @@ static int adis16260_data_rdy_trigger_set_state(struct iio_trigger *trig,
return adis16260_set_irq(indio_dev, state);
}
+static const struct iio_trigger_ops adis16260_trigger_ops = {
+ .owner = THIS_MODULE,
+ .set_trigger_state = &adis16260_data_rdy_trigger_set_state,
+};
+
int adis16260_probe_trigger(struct iio_dev *indio_dev)
{
int ret;
@@ -46,9 +51,8 @@ int adis16260_probe_trigger(struct iio_dev *indio_dev)
goto error_free_trig;
st->trig->dev.parent = &st->us->dev;
- st->trig->owner = THIS_MODULE;
+ st->trig->ops = &adis16260_trigger_ops;
st->trig->private_data = indio_dev;
- st->trig->set_trigger_state = &adis16260_data_rdy_trigger_set_state;
ret = iio_trigger_register(st->trig);
/* select default trigger */
diff --git a/drivers/staging/iio/imu/adis16400_trigger.c b/drivers/staging/iio/imu/adis16400_trigger.c
index ce98173..3860d92 100644
--- a/drivers/staging/iio/imu/adis16400_trigger.c
+++ b/drivers/staging/iio/imu/adis16400_trigger.c
@@ -18,6 +18,11 @@ static int adis16400_data_rdy_trigger_set_state(struct iio_trigger *trig,
return adis16400_set_irq(indio_dev, state);
}
+static const struct iio_trigger_ops adis16400_trigger_ops = {
+ .owner = THIS_MODULE,
+ .set_trigger_state = &adis16400_data_rdy_trigger_set_state,
+};
+
int adis16400_probe_trigger(struct iio_dev *indio_dev)
{
int ret;
@@ -39,9 +44,8 @@ int adis16400_probe_trigger(struct iio_dev *indio_dev)
if (ret)
goto error_free_trig;
st->trig->dev.parent = &st->us->dev;
- st->trig->owner = THIS_MODULE;
st->trig->private_data = indio_dev;
- st->trig->set_trigger_state = &adis16400_data_rdy_trigger_set_state;
+ st->trig->ops = &adis16400_trigger_ops;
ret = iio_trigger_register(st->trig);
/* select default trigger */
diff --git a/drivers/staging/iio/industrialio-trigger.c b/drivers/staging/iio/industrialio-trigger.c
index 90ca2df..513a7a0 100644
--- a/drivers/staging/iio/industrialio-trigger.c
+++ b/drivers/staging/iio/industrialio-trigger.c
@@ -206,8 +206,8 @@ EXPORT_SYMBOL(iio_trigger_poll_chained);
void iio_trigger_notify_done(struct iio_trigger *trig)
{
trig->use_count--;
- if (trig->use_count == 0 && trig->try_reenable)
- if (trig->try_reenable(trig)) {
+ if (trig->use_count == 0 && trig->ops && trig->ops->try_reenable)
+ if (trig->ops->try_reenable(trig)) {
/* Missed and interrupt so launch new poll now */
iio_trigger_poll(trig, 0);
}
@@ -234,8 +234,8 @@ int iio_trigger_attach_poll_func(struct iio_trigger *trig,
ret = request_threaded_irq(pf->irq, pf->h, pf->thread,
pf->type, pf->name,
pf);
- if (trig->set_trigger_state && notinuse)
- ret = trig->set_trigger_state(trig, true);
+ if (trig->ops && trig->ops->set_trigger_state && notinuse)
+ ret = trig->ops->set_trigger_state(trig, true);
return ret;
}
@@ -249,8 +249,8 @@ int iio_trigger_dettach_poll_func(struct iio_trigger *trig,
= (bitmap_weight(trig->pool,
CONFIG_IIO_CONSUMERS_PER_TRIGGER)
== 1);
- if (trig->set_trigger_state && no_other_users) {
- ret = trig->set_trigger_state(trig, false);
+ if (trig->ops && trig->ops->set_trigger_state && no_other_users) {
+ ret = trig->ops->set_trigger_state(trig, false);
if (ret)
goto error_ret;
}
@@ -358,8 +358,8 @@ static ssize_t iio_trigger_write_current(struct device *dev,
return ret;
}
- if (trig && trig->validate_device) {
- ret = trig->validate_device(trig, dev_info);
+ if (trig && trig->ops && trig->ops->validate_device) {
+ ret = trig->ops->validate_device(trig, dev_info);
if (ret)
return ret;
}
diff --git a/drivers/staging/iio/meter/ade7758_trigger.c b/drivers/staging/iio/meter/ade7758_trigger.c
index a5c3248..4c451c2 100644
--- a/drivers/staging/iio/meter/ade7758_trigger.c
+++ b/drivers/staging/iio/meter/ade7758_trigger.c
@@ -57,6 +57,12 @@ static int ade7758_trig_try_reen(struct iio_trigger *trig)
return 0;
}
+static const struct iio_trigger_ops ade7758_trigger_ops = {
+ .owner = THIS_MODULE,
+ .set_trigger_state = &ade7758_data_rdy_trigger_set_state,
+ .try_reenable = &ade7758_trig_try_reen,
+};
+
int ade7758_probe_trigger(struct iio_dev *indio_dev)
{
struct ade7758_state *st = iio_priv(indio_dev);
@@ -79,10 +85,8 @@ int ade7758_probe_trigger(struct iio_dev *indio_dev)
goto error_free_trig;
st->trig->dev.parent = &st->us->dev;
- st->trig->owner = THIS_MODULE;
+ st->trig->ops = &ade7758_trigger_ops;
st->trig->private_data = indio_dev;
- st->trig->set_trigger_state = &ade7758_data_rdy_trigger_set_state;
- st->trig->try_reenable = &ade7758_trig_try_reen;
ret = iio_trigger_register(st->trig);
/* select default trigger */
diff --git a/drivers/staging/iio/trigger.h b/drivers/staging/iio/trigger.h
index e0b58ed..325e086 100644
--- a/drivers/staging/iio/trigger.h
+++ b/drivers/staging/iio/trigger.h
@@ -16,6 +16,27 @@ struct iio_subirq {
};
/**
+ * struct iio_trigger_ops - operations structure for an iio_trigger.
+ * @owner: used to monitor usage count of the trigger.
+ * @set_trigger_state: switch on/off the trigger on demand
+ * @try_reenable: function to reenable the trigger when the
+ * use count is zero (may be NULL)
+ * @validate_device: function to validate the device when the
+ * current trigger gets changed.
+ *
+ * This is typically static const within a driver and shared by
+ * instances of a given device.
+ **/
+struct iio_trigger_ops {
+ struct module *owner;
+ int (*set_trigger_state)(struct iio_trigger *trig, bool state);
+ int (*try_reenable)(struct iio_trigger *trig);
+ int (*validate_device)(struct iio_trigger *trig,
+ struct iio_dev *indio_dev);
+};
+
+
+/**
* struct iio_trigger - industrial I/O trigger device
*
* @id: [INTERN] unique id number
@@ -26,11 +47,6 @@ struct iio_subirq {
* @alloc_list: [DRIVER] used for driver specific trigger list
* @owner: [DRIVER] used to monitor usage count of the trigger.
* @use_count: use count for the trigger
- * @set_trigger_state: [DRIVER] switch on/off the trigger on demand
- * @try_reenable: function to reenable the trigger when the
- * use count is zero (may be NULL)
- * @validate_device: function to validate the device when the
- * current trigger gets changed.
* @subirq_chip: [INTERN] associate 'virtual' irq chip.
* @subirq_base: [INTERN] base number for irqs provided by trigger.
* @subirqs: [INTERN] information about the 'child' irqs.
@@ -38,6 +54,7 @@ struct iio_subirq {
* @pool_lock: [INTERN] protection of the irq pool.
**/
struct iio_trigger {
+ const struct iio_trigger_ops *ops;
int id;
const char *name;
struct device dev;
@@ -48,11 +65,6 @@ struct iio_trigger {
struct module *owner;
int use_count;
- int (*set_trigger_state)(struct iio_trigger *trig, bool state);
- int (*try_reenable)(struct iio_trigger *trig);
- int (*validate_device)(struct iio_trigger *trig,
- struct iio_dev *indio_dev);
-
struct irq_chip subirq_chip;
int subirq_base;
@@ -93,12 +105,12 @@ static inline struct iio_trigger *to_iio_trigger(struct device *d)
static inline void iio_put_trigger(struct iio_trigger *trig)
{
put_device(&trig->dev);
- module_put(trig->owner);
+ module_put(trig->ops->owner);
};
static inline void iio_get_trigger(struct iio_trigger *trig)
{
- __module_get(trig->owner);
+ __module_get(trig->ops->owner);
get_device(&trig->dev);
};
diff --git a/drivers/staging/iio/trigger/iio-trig-bfin-timer.c b/drivers/staging/iio/trigger/iio-trig-bfin-timer.c
index 4f17295..243f38f 100644
--- a/drivers/staging/iio/trigger/iio-trig-bfin-timer.c
+++ b/drivers/staging/iio/trigger/iio-trig-bfin-timer.c
@@ -143,6 +143,10 @@ static int iio_bfin_tmr_get_number(int irq)
return -ENODEV;
}
+static const struct iio_trigger_ops iio_bfin_tmr_trigger_ops = {
+ owner = THIS_MODULE,
+};
+
static int __devinit iio_bfin_tmr_trigger_probe(struct platform_device *pdev)
{
struct bfin_tmr_state *st;
@@ -175,7 +179,7 @@ static int __devinit iio_bfin_tmr_trigger_probe(struct platform_device *pdev)
}
st->trig->private_data = st;
- st->trig->owner = THIS_MODULE;
+ st->trig->ops = &iio_bfin_tmr_trigger_ops;
st->trig->dev.groups = iio_bfin_tmr_trigger_attr_groups;
ret = iio_trigger_register(st->trig);
if (ret)
diff --git a/drivers/staging/iio/trigger/iio-trig-gpio.c b/drivers/staging/iio/trigger/iio-trig-gpio.c
index f1fb795..f2a6559 100644
--- a/drivers/staging/iio/trigger/iio-trig-gpio.c
+++ b/drivers/staging/iio/trigger/iio-trig-gpio.c
@@ -47,6 +47,10 @@ static irqreturn_t iio_gpio_trigger_poll(int irq, void *private)
return IRQ_HANDLED;
}
+static const struct iio_trigger_ops iio_gpio_trigger_ops = {
+ .owner = THIS_MODULE,
+};
+
static int iio_gpio_trigger_probe(struct platform_device *pdev)
{
struct iio_gpio_trigger_info *trig_info;
@@ -81,7 +85,7 @@ static int iio_gpio_trigger_probe(struct platform_device *pdev)
}
trig->private_data = trig_info;
trig_info->irq = irq;
- trig->owner = THIS_MODULE;
+ trig->ops = &iio_gpio_trigger_ops;
ret = request_irq(irq, iio_gpio_trigger_poll,
irqflags, trig->name, trig);
if (ret) {
diff --git a/drivers/staging/iio/trigger/iio-trig-periodic-rtc.c b/drivers/staging/iio/trigger/iio-trig-periodic-rtc.c
index 01cf7e2..d35d085 100644
--- a/drivers/staging/iio/trigger/iio-trig-periodic-rtc.c
+++ b/drivers/staging/iio/trigger/iio-trig-periodic-rtc.c
@@ -96,6 +96,11 @@ static void iio_prtc_trigger_poll(void *private_data)
iio_trigger_poll(private_data, 0);
}
+static const struct iio_trigger_ops iio_prtc_trigger_ops = {
+ .owner = THIS_MODULE,
+ .set_trigger_state = &iio_trig_periodic_rtc_set_state,
+};
+
static int iio_trig_periodic_rtc_probe(struct platform_device *dev)
{
char **pdata = dev->dev.platform_data;
@@ -121,7 +126,7 @@ static int iio_trig_periodic_rtc_probe(struct platform_device *dev)
}
trig->private_data = trig_info;
trig->owner = THIS_MODULE;
- trig->set_trigger_state = &iio_trig_periodic_rtc_set_state;
+ trig->ops = &iio_prtc_trigger_ops;
/* RTC access */
trig_info->rtc
= rtc_class_open(pdata[i]);
diff --git a/drivers/staging/iio/trigger/iio-trig-sysfs.c b/drivers/staging/iio/trigger/iio-trig-sysfs.c
index 47248cd..346b30c 100644
--- a/drivers/staging/iio/trigger/iio-trig-sysfs.c
+++ b/drivers/staging/iio/trigger/iio-trig-sysfs.c
@@ -107,6 +107,10 @@ static const struct attribute_group *iio_sysfs_trigger_attr_groups[] = {
NULL
};
+static const struct iio_trigger_ops iio_sysfs_trigger_ops = {
+ .owner = THIS_MODULE,
+};
+
static int iio_sysfs_trigger_probe(int id)
{
struct iio_sysfs_trig *t;
@@ -135,7 +139,7 @@ static int iio_sysfs_trigger_probe(int id)
}
t->trig->dev.groups = iio_sysfs_trigger_attr_groups;
- t->trig->owner = THIS_MODULE;
+ t->trig->ops = &iio_sysfs_trigger_ops;
t->trig->dev.parent = &iio_sysfs_trig_dev;
ret = iio_trigger_register(t->trig);
--
1.7.3.4
^ permalink raw reply related [flat|nested] 21+ messages in thread
* [PATCH 05/19] staging:iio:gyro:adis16260 remove some unused headers
2011-08-12 16:08 [PATCH 00/19] staging:iio:cleanups - post fixes Jonathan Cameron
` (3 preceding siblings ...)
2011-08-12 16:08 ` [PATCH 04/19] staging:iio:triggers introduce iio_trigger_ops to take const bits out of iio_trig_structure Jonathan Cameron
@ 2011-08-12 16:08 ` Jonathan Cameron
2011-08-12 16:08 ` [PATCH 06/19] staging:iio:imu:adis16400 remove " Jonathan Cameron
` (14 subsequent siblings)
19 siblings, 0 replies; 21+ messages in thread
From: Jonathan Cameron @ 2011-08-12 16:08 UTC (permalink / raw)
To: greg; +Cc: linux-iio, Jonathan Cameron
These should have gone with the iio_chan_spec conversion patch.
Signed-off-by: Jonathan Cameron <jic23@cam.ac.uk>
Acked-by: Michael Hennerich <michael.hennerich@analog.com>
---
drivers/staging/iio/gyro/adis16260_core.c | 2 --
1 files changed, 0 insertions(+), 2 deletions(-)
diff --git a/drivers/staging/iio/gyro/adis16260_core.c b/drivers/staging/iio/gyro/adis16260_core.c
index f2d43cf..bc45228 100644
--- a/drivers/staging/iio/gyro/adis16260_core.c
+++ b/drivers/staging/iio/gyro/adis16260_core.c
@@ -21,8 +21,6 @@
#include "../iio.h"
#include "../sysfs.h"
#include "../ring_generic.h"
-#include "../adc/adc.h"
-#include "gyro.h"
#include "adis16260.h"
--
1.7.3.4
^ permalink raw reply related [flat|nested] 21+ messages in thread
* [PATCH 06/19] staging:iio:imu:adis16400 remove unused headers.
2011-08-12 16:08 [PATCH 00/19] staging:iio:cleanups - post fixes Jonathan Cameron
` (4 preceding siblings ...)
2011-08-12 16:08 ` [PATCH 05/19] staging:iio:gyro:adis16260 remove some unused headers Jonathan Cameron
@ 2011-08-12 16:08 ` Jonathan Cameron
2011-08-12 16:08 ` [PATCH 07/19] staging:iio:gyro:adis16130 drop control of adc resolution Jonathan Cameron
` (13 subsequent siblings)
19 siblings, 0 replies; 21+ messages in thread
From: Jonathan Cameron @ 2011-08-12 16:08 UTC (permalink / raw)
To: greg; +Cc: linux-iio, Jonathan Cameron
These should have gone with the iio_chan_spec conversion.
Signed-off-by: Jonathan Cameron <jic23@cam.ac.uk>
Acked-by: Michael Hennerich <michael.hennerich@analog.com>
---
drivers/staging/iio/imu/adis16400_core.c | 5 -----
1 files changed, 0 insertions(+), 5 deletions(-)
diff --git a/drivers/staging/iio/imu/adis16400_core.c b/drivers/staging/iio/imu/adis16400_core.c
index 4feee26..8b8e8a3 100644
--- a/drivers/staging/iio/imu/adis16400_core.c
+++ b/drivers/staging/iio/imu/adis16400_core.c
@@ -29,11 +29,6 @@
#include "../iio.h"
#include "../sysfs.h"
#include "../ring_generic.h"
-#include "../accel/accel.h"
-#include "../adc/adc.h"
-#include "../gyro/gyro.h"
-#include "../magnetometer/magnet.h"
-
#include "adis16400.h"
#define DRIVER_NAME "adis16400"
--
1.7.3.4
^ permalink raw reply related [flat|nested] 21+ messages in thread
* [PATCH 07/19] staging:iio:gyro:adis16130 drop control of adc resolution.
2011-08-12 16:08 [PATCH 00/19] staging:iio:cleanups - post fixes Jonathan Cameron
` (5 preceding siblings ...)
2011-08-12 16:08 ` [PATCH 06/19] staging:iio:imu:adis16400 remove " Jonathan Cameron
@ 2011-08-12 16:08 ` Jonathan Cameron
2011-08-12 16:08 ` [PATCH 08/19] staging:iio:accel: usused header removals Jonathan Cameron
` (12 subsequent siblings)
19 siblings, 0 replies; 21+ messages in thread
From: Jonathan Cameron @ 2011-08-12 16:08 UTC (permalink / raw)
To: greg; +Cc: linux-iio, Jonathan Cameron
There is no clear use case for this functionality in a driver
that only supports slow reading via sysfs. The interface
use was non compliant with the abi motiving it being dropped.
It can go back in if anyone ever implements buffered reading
support for this device. Then it will be controlled as
part of the buffering abi where this should indeed be correctly
supported.
Signed-off-by: Jonathan Cameron <jic23@cam.ac.uk>
Acked-by: Michael Hennerich <michael.hennerich@analog.com>
---
drivers/staging/iio/gyro/adis16130_core.c | 76 ++---------------------------
1 files changed, 4 insertions(+), 72 deletions(-)
diff --git a/drivers/staging/iio/gyro/adis16130_core.c b/drivers/staging/iio/gyro/adis16130_core.c
index caf067c..6d3cd6c 100644
--- a/drivers/staging/iio/gyro/adis16130_core.c
+++ b/drivers/staging/iio/gyro/adis16130_core.c
@@ -41,34 +41,15 @@
/**
* struct adis16130_state - device instance specific data
* @us: actual spi_device to write data
- * @mode: 24 bits (1) or 16 bits (0)
* @buf_lock: mutex to protect tx and rx
* @buf: unified tx/rx buffer
**/
struct adis16130_state {
struct spi_device *us;
- u32 mode;
struct mutex buf_lock;
u8 buf[4] ____cacheline_aligned;
};
-static int adis16130_spi_write(struct device *dev, u8 reg_addr,
- u8 val)
-{
- int ret;
- struct iio_dev *indio_dev = dev_get_drvdata(dev);
- struct adis16130_state *st = iio_priv(indio_dev);
-
- mutex_lock(&st->buf_lock);
- st->buf[0] = reg_addr;
- st->buf[1] = val;
-
- ret = spi_write(st->us, st->buf, 2);
- mutex_unlock(&st->buf_lock);
-
- return ret;
-}
-
static int adis16130_spi_read(struct device *dev, u8 reg_addr,
u32 *val)
{
@@ -79,6 +60,7 @@ static int adis16130_spi_read(struct device *dev, u8 reg_addr,
struct spi_transfer xfer = {
.tx_buf = st->buf,
.rx_buf = st->buf,
+ .len = 4,
};
mutex_lock(&st->buf_lock);
@@ -86,22 +68,13 @@ static int adis16130_spi_read(struct device *dev, u8 reg_addr,
st->buf[0] = ADIS16130_CON_RD | reg_addr;
st->buf[1] = st->buf[2] = st->buf[3] = 0;
- if (st->mode)
- xfer.len = 4;
- else
- xfer.len = 3;
spi_message_init(&msg);
spi_message_add_tail(&xfer, &msg);
ret = spi_sync(st->us, &msg);
- if (ret == 0) {
- if (st->mode)
- *val = (st->buf[1] << 16) |
- (st->buf[2] << 8) |
- st->buf[3];
- else
- *val = (st->buf[1] << 8) | st->buf[2];
- }
+ ret = spi_read(st->us, st->buf, 4);
+ if (ret == 0)
+ *val = (st->buf[1] << 16) | (st->buf[2] << 8) | st->buf[3];
mutex_unlock(&st->buf_lock);
return ret;
@@ -127,54 +100,14 @@ static ssize_t adis16130_val_read(struct device *dev,
return ret;
}
-static ssize_t adis16130_bitsmode_read(struct device *dev,
- struct device_attribute *attr,
- char *buf)
-{
- struct iio_dev *indio_dev = dev_get_drvdata(dev);
- struct adis16130_state *st = iio_priv(indio_dev);
-
- if (st->mode == 1)
- return sprintf(buf, "s24\n");
- else
- return sprintf(buf, "s16\n");
-}
-
-static ssize_t adis16130_bitsmode_write(struct device *dev,
- struct device_attribute *attr,
- const char *buf,
- size_t len)
-{
- int ret;
- u8 val;
-
- if (sysfs_streq(buf, "s16"))
- val = 0;
- else if (sysfs_streq(buf, "s24"))
- val = 1;
- else
- return -EINVAL;
-
- ret = adis16130_spi_write(dev, ADIS16130_MODE, val);
-
- return ret ? ret : len;
-}
static IIO_DEVICE_ATTR(temp_raw, S_IRUGO, adis16130_val_read, NULL,
ADIS16130_TEMPDATA);
static IIO_DEV_ATTR_GYRO_Z(adis16130_val_read, ADIS16130_RATEDATA);
-static IIO_DEVICE_ATTR(gyro_z_type, S_IWUSR | S_IRUGO, adis16130_bitsmode_read,
- adis16130_bitsmode_write,
- ADIS16130_MODE);
-
-static IIO_CONST_ATTR(gyro_z_type_available, "s16 s24");
-
static struct attribute *adis16130_attributes[] = {
&iio_dev_attr_temp_raw.dev_attr.attr,
&iio_dev_attr_gyro_z_raw.dev_attr.attr,
- &iio_dev_attr_gyro_z_type.dev_attr.attr,
- &iio_const_attr_gyro_z_type_available.dev_attr.attr,
NULL
};
@@ -208,7 +141,6 @@ static int __devinit adis16130_probe(struct spi_device *spi)
indio_dev->dev.parent = &spi->dev;
indio_dev->info = &adis16130_info;
indio_dev->modes = INDIO_DIRECT_MODE;
- st->mode = 1;
ret = iio_device_register(indio_dev);
if (ret)
--
1.7.3.4
^ permalink raw reply related [flat|nested] 21+ messages in thread
* [PATCH 08/19] staging:iio:accel: usused header removals.
2011-08-12 16:08 [PATCH 00/19] staging:iio:cleanups - post fixes Jonathan Cameron
` (6 preceding siblings ...)
2011-08-12 16:08 ` [PATCH 07/19] staging:iio:gyro:adis16130 drop control of adc resolution Jonathan Cameron
@ 2011-08-12 16:08 ` Jonathan Cameron
2011-08-12 16:08 ` [PATCH 09/19] staging:iio:adc: unused " Jonathan Cameron
` (11 subsequent siblings)
19 siblings, 0 replies; 21+ messages in thread
From: Jonathan Cameron @ 2011-08-12 16:08 UTC (permalink / raw)
To: greg; +Cc: linux-iio, Jonathan Cameron
Missing from the iio_chan_spec conversion patches.
Signed-off-by: Jonathan Cameron <jic23@cam.ac.uk>
---
drivers/staging/iio/accel/adis16201_core.c | 4 ----
drivers/staging/iio/accel/adis16201_ring.c | 1 -
drivers/staging/iio/accel/adis16203_core.c | 3 ---
drivers/staging/iio/accel/adis16203_ring.c | 1 -
drivers/staging/iio/accel/adis16204_ring.c | 1 -
drivers/staging/iio/accel/adis16209_core.c | 3 ---
drivers/staging/iio/accel/adis16209_ring.c | 1 -
drivers/staging/iio/accel/adis16240_core.c | 2 --
drivers/staging/iio/accel/adis16240_ring.c | 1 -
drivers/staging/iio/accel/lis3l02dq_core.c | 2 --
drivers/staging/iio/accel/lis3l02dq_ring.c | 1 -
drivers/staging/iio/accel/sca3000_core.c | 1 -
drivers/staging/iio/accel/sca3000_ring.c | 1 -
13 files changed, 0 insertions(+), 22 deletions(-)
diff --git a/drivers/staging/iio/accel/adis16201_core.c b/drivers/staging/iio/accel/adis16201_core.c
index 2fd01ae..16b388b 100644
--- a/drivers/staging/iio/accel/adis16201_core.c
+++ b/drivers/staging/iio/accel/adis16201_core.c
@@ -18,10 +18,6 @@
#include "../sysfs.h"
#include "../ring_generic.h"
-#include "accel.h"
-#include "inclinometer.h"
-#include "../adc/adc.h"
-
#include "adis16201.h"
enum adis16201_chan {
diff --git a/drivers/staging/iio/accel/adis16201_ring.c b/drivers/staging/iio/accel/adis16201_ring.c
index a745d5de..30bac86 100644
--- a/drivers/staging/iio/accel/adis16201_ring.c
+++ b/drivers/staging/iio/accel/adis16201_ring.c
@@ -10,7 +10,6 @@
#include "../iio.h"
#include "../sysfs.h"
#include "../ring_sw.h"
-#include "accel.h"
#include "../trigger.h"
#include "adis16201.h"
diff --git a/drivers/staging/iio/accel/adis16203_core.c b/drivers/staging/iio/accel/adis16203_core.c
index cf5d15d..a7c06b9 100644
--- a/drivers/staging/iio/accel/adis16203_core.c
+++ b/drivers/staging/iio/accel/adis16203_core.c
@@ -16,10 +16,7 @@
#include "../iio.h"
#include "../sysfs.h"
-#include "accel.h"
-#include "inclinometer.h"
#include "../ring_generic.h"
-#include "../adc/adc.h"
#include "adis16203.h"
diff --git a/drivers/staging/iio/accel/adis16203_ring.c b/drivers/staging/iio/accel/adis16203_ring.c
index d2c07c5..7ca9c25 100644
--- a/drivers/staging/iio/accel/adis16203_ring.c
+++ b/drivers/staging/iio/accel/adis16203_ring.c
@@ -13,7 +13,6 @@
#include "../iio.h"
#include "../sysfs.h"
#include "../ring_sw.h"
-#include "accel.h"
#include "../trigger.h"
#include "adis16203.h"
diff --git a/drivers/staging/iio/accel/adis16204_ring.c b/drivers/staging/iio/accel/adis16204_ring.c
index 852df06..537d463 100644
--- a/drivers/staging/iio/accel/adis16204_ring.c
+++ b/drivers/staging/iio/accel/adis16204_ring.c
@@ -13,7 +13,6 @@
#include "../iio.h"
#include "../sysfs.h"
#include "../ring_sw.h"
-#include "accel.h"
#include "../trigger.h"
#include "adis16204.h"
diff --git a/drivers/staging/iio/accel/adis16209_core.c b/drivers/staging/iio/accel/adis16209_core.c
index bec1fa8..bd3d557 100644
--- a/drivers/staging/iio/accel/adis16209_core.c
+++ b/drivers/staging/iio/accel/adis16209_core.c
@@ -18,9 +18,6 @@
#include "../iio.h"
#include "../sysfs.h"
#include "../ring_generic.h"
-#include "accel.h"
-#include "inclinometer.h"
-#include "../adc/adc.h"
#include "adis16209.h"
diff --git a/drivers/staging/iio/accel/adis16209_ring.c b/drivers/staging/iio/accel/adis16209_ring.c
index 45017d3..77b70e3 100644
--- a/drivers/staging/iio/accel/adis16209_ring.c
+++ b/drivers/staging/iio/accel/adis16209_ring.c
@@ -13,7 +13,6 @@
#include "../iio.h"
#include "../sysfs.h"
#include "../ring_sw.h"
-#include "accel.h"
#include "../trigger.h"
#include "adis16209.h"
diff --git a/drivers/staging/iio/accel/adis16240_core.c b/drivers/staging/iio/accel/adis16240_core.c
index aee8b69..237da46 100644
--- a/drivers/staging/iio/accel/adis16240_core.c
+++ b/drivers/staging/iio/accel/adis16240_core.c
@@ -21,8 +21,6 @@
#include "../iio.h"
#include "../sysfs.h"
#include "../ring_generic.h"
-#include "accel.h"
-#include "../adc/adc.h"
#include "adis16240.h"
diff --git a/drivers/staging/iio/accel/adis16240_ring.c b/drivers/staging/iio/accel/adis16240_ring.c
index c812a34..3f1e159 100644
--- a/drivers/staging/iio/accel/adis16240_ring.c
+++ b/drivers/staging/iio/accel/adis16240_ring.c
@@ -13,7 +13,6 @@
#include "../iio.h"
#include "../sysfs.h"
#include "../ring_sw.h"
-#include "accel.h"
#include "../trigger.h"
#include "adis16240.h"
diff --git a/drivers/staging/iio/accel/lis3l02dq_core.c b/drivers/staging/iio/accel/lis3l02dq_core.c
index a29dfd2..83ec286 100644
--- a/drivers/staging/iio/accel/lis3l02dq_core.c
+++ b/drivers/staging/iio/accel/lis3l02dq_core.c
@@ -26,8 +26,6 @@
#include "../sysfs.h"
#include "../ring_generic.h"
-#include "accel.h"
-
#include "lis3l02dq.h"
/* At the moment the spi framework doesn't allow global setting of cs_change.
diff --git a/drivers/staging/iio/accel/lis3l02dq_ring.c b/drivers/staging/iio/accel/lis3l02dq_ring.c
index 5795f82..7305c78 100644
--- a/drivers/staging/iio/accel/lis3l02dq_ring.c
+++ b/drivers/staging/iio/accel/lis3l02dq_ring.c
@@ -12,7 +12,6 @@
#include "../sysfs.h"
#include "../ring_sw.h"
#include "../kfifo_buf.h"
-#include "accel.h"
#include "../trigger.h"
#include "lis3l02dq.h"
diff --git a/drivers/staging/iio/accel/sca3000_core.c b/drivers/staging/iio/accel/sca3000_core.c
index 603f5bc..3c637b9 100644
--- a/drivers/staging/iio/accel/sca3000_core.c
+++ b/drivers/staging/iio/accel/sca3000_core.c
@@ -22,7 +22,6 @@
#include "../sysfs.h"
#include "../ring_generic.h"
-#include "accel.h"
#include "sca3000.h"
enum sca3000_variant {
diff --git a/drivers/staging/iio/accel/sca3000_ring.c b/drivers/staging/iio/accel/sca3000_ring.c
index 3e60861..6ce8bf5 100644
--- a/drivers/staging/iio/accel/sca3000_ring.c
+++ b/drivers/staging/iio/accel/sca3000_ring.c
@@ -24,7 +24,6 @@
#include "../sysfs.h"
#include "../ring_generic.h"
#include "../ring_hw.h"
-#include "accel.h"
#include "sca3000.h"
/* RFC / future work
--
1.7.3.4
^ permalink raw reply related [flat|nested] 21+ messages in thread
* [PATCH 09/19] staging:iio:adc: unused header removals.
2011-08-12 16:08 [PATCH 00/19] staging:iio:cleanups - post fixes Jonathan Cameron
` (7 preceding siblings ...)
2011-08-12 16:08 ` [PATCH 08/19] staging:iio:accel: usused header removals Jonathan Cameron
@ 2011-08-12 16:08 ` Jonathan Cameron
2011-08-12 16:08 ` [PATCH 10/19] staging:iio:inclinometer.h remove as now unused Jonathan Cameron
` (10 subsequent siblings)
19 siblings, 0 replies; 21+ messages in thread
From: Jonathan Cameron @ 2011-08-12 16:08 UTC (permalink / raw)
To: greg; +Cc: linux-iio, Jonathan Cameron
More headers now not needed after iio_chan_spec conversions.
A couple of drivers were using helpers from adc.h.
Given these were trivial, they are pushed down into the drivers.
Signed-off-by: Jonathan Cameron <jic23@cam.ac.uk>
---
drivers/staging/iio/adc/ad7298_core.c | 1 -
drivers/staging/iio/adc/ad7476_core.c | 1 -
drivers/staging/iio/adc/ad7606_core.c | 1 -
drivers/staging/iio/adc/ad7780.c | 1 -
drivers/staging/iio/adc/ad7793.c | 1 -
drivers/staging/iio/adc/ad7887_core.c | 2 +-
drivers/staging/iio/adc/ad799x_core.c | 13 +++++++++----
drivers/staging/iio/adc/max1363_core.c | 23 +++++++++++++++++------
8 files changed, 27 insertions(+), 16 deletions(-)
diff --git a/drivers/staging/iio/adc/ad7298_core.c b/drivers/staging/iio/adc/ad7298_core.c
index b8e4ae2..21d1931 100644
--- a/drivers/staging/iio/adc/ad7298_core.c
+++ b/drivers/staging/iio/adc/ad7298_core.c
@@ -18,7 +18,6 @@
#include "../iio.h"
#include "../sysfs.h"
#include "../ring_generic.h"
-#include "adc.h"
#include "ad7298.h"
diff --git a/drivers/staging/iio/adc/ad7476_core.c b/drivers/staging/iio/adc/ad7476_core.c
index c210898..f2fdd48 100644
--- a/drivers/staging/iio/adc/ad7476_core.c
+++ b/drivers/staging/iio/adc/ad7476_core.c
@@ -17,7 +17,6 @@
#include "../iio.h"
#include "../sysfs.h"
#include "../ring_generic.h"
-#include "adc.h"
#include "ad7476.h"
diff --git a/drivers/staging/iio/adc/ad7606_core.c b/drivers/staging/iio/adc/ad7606_core.c
index 459371a..dcdb180 100644
--- a/drivers/staging/iio/adc/ad7606_core.c
+++ b/drivers/staging/iio/adc/ad7606_core.c
@@ -20,7 +20,6 @@
#include "../iio.h"
#include "../sysfs.h"
#include "../ring_generic.h"
-#include "adc.h"
#include "ad7606.h"
diff --git a/drivers/staging/iio/adc/ad7780.c b/drivers/staging/iio/adc/ad7780.c
index e0c7b6c..f90cdea 100644
--- a/drivers/staging/iio/adc/ad7780.c
+++ b/drivers/staging/iio/adc/ad7780.c
@@ -20,7 +20,6 @@
#include "../iio.h"
#include "../sysfs.h"
#include "../ring_generic.h"
-#include "adc.h"
#include "ad7780.h"
diff --git a/drivers/staging/iio/adc/ad7793.c b/drivers/staging/iio/adc/ad7793.c
index 90f6c03..ab6f109 100644
--- a/drivers/staging/iio/adc/ad7793.c
+++ b/drivers/staging/iio/adc/ad7793.c
@@ -22,7 +22,6 @@
#include "../ring_generic.h"
#include "../ring_sw.h"
#include "../trigger.h"
-#include "adc.h"
#include "ad7793.h"
diff --git a/drivers/staging/iio/adc/ad7887_core.c b/drivers/staging/iio/adc/ad7887_core.c
index 3d9121e..a7da9e6 100644
--- a/drivers/staging/iio/adc/ad7887_core.c
+++ b/drivers/staging/iio/adc/ad7887_core.c
@@ -17,7 +17,7 @@
#include "../iio.h"
#include "../sysfs.h"
#include "../ring_generic.h"
-#include "adc.h"
+
#include "ad7887.h"
diff --git a/drivers/staging/iio/adc/ad799x_core.c b/drivers/staging/iio/adc/ad799x_core.c
index 92cfe2e..d42d61d 100644
--- a/drivers/staging/iio/adc/ad799x_core.c
+++ b/drivers/staging/iio/adc/ad799x_core.c
@@ -34,9 +34,8 @@
#include "../iio.h"
#include "../sysfs.h"
-
#include "../ring_generic.h"
-#include "adc.h"
+
#include "ad799x.h"
/*
@@ -336,8 +335,14 @@ static irqreturn_t ad799x_event_handler(int irq, void *private)
if (status & (1 << i))
iio_push_event(indio_dev, 0,
i & 0x1 ?
- IIO_EVENT_CODE_IN_HIGH_THRESH(i >> 1) :
- IIO_EVENT_CODE_IN_LOW_THRESH(i >> 1),
+ IIO_UNMOD_EVENT_CODE(IIO_EV_CLASS_IN,
+ (i >> 1),
+ IIO_EV_TYPE_THRESH,
+ IIO_EV_DIR_RISING) :
+ IIO_UNMOD_EVENT_CODE(IIO_EV_CLASS_IN,
+ (i >> 1),
+ IIO_EV_TYPE_THRESH,
+ IIO_EV_DIR_FALLING),
iio_get_time_ns());
}
diff --git a/drivers/staging/iio/adc/max1363_core.c b/drivers/staging/iio/adc/max1363_core.c
index d93b7a9..9525aec 100644
--- a/drivers/staging/iio/adc/max1363_core.c
+++ b/drivers/staging/iio/adc/max1363_core.c
@@ -33,9 +33,8 @@
#include "../iio.h"
#include "../sysfs.h"
-
#include "../ring_generic.h"
-#include "adc.h"
+
#include "max1363.h"
#define MAX1363_MODE_SINGLE(_num, _mask) { \
@@ -592,10 +591,22 @@ static int max1363_write_thresh(struct iio_dev *indio_dev,
}
static const int max1363_event_codes[] = {
- IIO_EVENT_CODE_IN_LOW_THRESH(3), IIO_EVENT_CODE_IN_HIGH_THRESH(3),
- IIO_EVENT_CODE_IN_LOW_THRESH(2), IIO_EVENT_CODE_IN_HIGH_THRESH(2),
- IIO_EVENT_CODE_IN_LOW_THRESH(1), IIO_EVENT_CODE_IN_HIGH_THRESH(1),
- IIO_EVENT_CODE_IN_LOW_THRESH(0), IIO_EVENT_CODE_IN_HIGH_THRESH(0)
+ IIO_UNMOD_EVENT_CODE(IIO_EV_CLASS_IN, 0,
+ IIO_EV_TYPE_THRESH, IIO_EV_DIR_FALLING),
+ IIO_UNMOD_EVENT_CODE(IIO_EV_CLASS_IN, 1,
+ IIO_EV_TYPE_THRESH, IIO_EV_DIR_FALLING),
+ IIO_UNMOD_EVENT_CODE(IIO_EV_CLASS_IN, 2,
+ IIO_EV_TYPE_THRESH, IIO_EV_DIR_FALLING),
+ IIO_UNMOD_EVENT_CODE(IIO_EV_CLASS_IN, 3,
+ IIO_EV_TYPE_THRESH, IIO_EV_DIR_FALLING),
+ IIO_UNMOD_EVENT_CODE(IIO_EV_CLASS_IN, 0,
+ IIO_EV_TYPE_THRESH, IIO_EV_DIR_RISING),
+ IIO_UNMOD_EVENT_CODE(IIO_EV_CLASS_IN, 1,
+ IIO_EV_TYPE_THRESH, IIO_EV_DIR_RISING),
+ IIO_UNMOD_EVENT_CODE(IIO_EV_CLASS_IN, 2,
+ IIO_EV_TYPE_THRESH, IIO_EV_DIR_RISING),
+ IIO_UNMOD_EVENT_CODE(IIO_EV_CLASS_IN, 3,
+ IIO_EV_TYPE_THRESH, IIO_EV_DIR_RISING),
};
static irqreturn_t max1363_event_handler(int irq, void *private)
--
1.7.3.4
^ permalink raw reply related [flat|nested] 21+ messages in thread
* [PATCH 10/19] staging:iio:inclinometer.h remove as now unused.
2011-08-12 16:08 [PATCH 00/19] staging:iio:cleanups - post fixes Jonathan Cameron
` (8 preceding siblings ...)
2011-08-12 16:08 ` [PATCH 09/19] staging:iio:adc: unused " Jonathan Cameron
@ 2011-08-12 16:08 ` Jonathan Cameron
2011-08-12 16:08 ` [PATCH 11/19] staging:iio:various header includes that should never have been Jonathan Cameron
` (9 subsequent siblings)
19 siblings, 0 replies; 21+ messages in thread
From: Jonathan Cameron @ 2011-08-12 16:08 UTC (permalink / raw)
To: greg; +Cc: linux-iio, Jonathan Cameron
Signed-off-by: Jonathan Cameron <jic23@cam.ac.uk>
---
drivers/staging/iio/accel/inclinometer.h | 25 -------------------------
1 files changed, 0 insertions(+), 25 deletions(-)
diff --git a/drivers/staging/iio/accel/inclinometer.h b/drivers/staging/iio/accel/inclinometer.h
deleted file mode 100644
index faf73d7..0000000
--- a/drivers/staging/iio/accel/inclinometer.h
+++ /dev/null
@@ -1,25 +0,0 @@
-/*
- * Inclinometer related attributes
- */
-#include "../sysfs.h"
-
-#define IIO_DEV_ATTR_INCLI_X(_show, _addr) \
- IIO_DEVICE_ATTR(incli_x_raw, S_IRUGO, _show, NULL, _addr)
-
-#define IIO_DEV_ATTR_INCLI_Y(_show, _addr) \
- IIO_DEVICE_ATTR(incli_y_raw, S_IRUGO, _show, NULL, _addr)
-
-#define IIO_DEV_ATTR_INCLI_Z(_show, _addr) \
- IIO_DEVICE_ATTR(incli_z_raw, S_IRUGO, _show, NULL, _addr)
-
-#define IIO_DEV_ATTR_INCLI_X_OFFSET(_mode, _show, _store, _addr) \
- IIO_DEVICE_ATTR(incli_x_offset, _mode, _show, _store, _addr)
-
-#define IIO_DEV_ATTR_INCLI_Y_OFFSET(_mode, _show, _store, _addr) \
- IIO_DEVICE_ATTR(incli_y_offset, _mode, _show, _store, _addr)
-
-#define IIO_DEV_ATTR_INCLI_Z_OFFSET(_mode, _show, _store, _addr) \
- IIO_DEVICE_ATTR(incli_z_offset, _mode, _show, _store, _addr)
-
-#define IIO_CONST_ATTR_INCLI_SCALE(_string) \
- IIO_CONST_ATTR(incli_scale, _string)
--
1.7.3.4
^ permalink raw reply related [flat|nested] 21+ messages in thread
* [PATCH 11/19] staging:iio:various header includes that should never have been.
2011-08-12 16:08 [PATCH 00/19] staging:iio:cleanups - post fixes Jonathan Cameron
` (9 preceding siblings ...)
2011-08-12 16:08 ` [PATCH 10/19] staging:iio:inclinometer.h remove as now unused Jonathan Cameron
@ 2011-08-12 16:08 ` Jonathan Cameron
2011-08-12 16:08 ` [PATCH 12/19] staging:iio:adc: header cleanup - remove unused Jonathan Cameron
` (8 subsequent siblings)
19 siblings, 0 replies; 21+ messages in thread
From: Jonathan Cameron @ 2011-08-12 16:08 UTC (permalink / raw)
To: greg; +Cc: linux-iio, Jonathan Cameron
I will assume these were cut and pastes messup.
Signed-off-by: Jonathan Cameron <jic23@cam.ac.uk>
---
drivers/staging/iio/gyro/adis16260_ring.c | 1 -
drivers/staging/iio/imu/adis16400_ring.c | 1 -
drivers/staging/iio/meter/ade7758_ring.c | 1 -
3 files changed, 0 insertions(+), 3 deletions(-)
diff --git a/drivers/staging/iio/gyro/adis16260_ring.c b/drivers/staging/iio/gyro/adis16260_ring.c
index a4df8b3..e9cff3b 100644
--- a/drivers/staging/iio/gyro/adis16260_ring.c
+++ b/drivers/staging/iio/gyro/adis16260_ring.c
@@ -13,7 +13,6 @@
#include "../iio.h"
#include "../sysfs.h"
#include "../ring_sw.h"
-#include "../accel/accel.h"
#include "../trigger.h"
#include "adis16260.h"
diff --git a/drivers/staging/iio/imu/adis16400_ring.c b/drivers/staging/iio/imu/adis16400_ring.c
index 556d928..ef38477 100644
--- a/drivers/staging/iio/imu/adis16400_ring.c
+++ b/drivers/staging/iio/imu/adis16400_ring.c
@@ -7,7 +7,6 @@
#include "../iio.h"
#include "../ring_sw.h"
-#include "../accel/accel.h"
#include "../trigger.h"
#include "adis16400.h"
diff --git a/drivers/staging/iio/meter/ade7758_ring.c b/drivers/staging/iio/meter/ade7758_ring.c
index b89b7f8..e7a04b4 100644
--- a/drivers/staging/iio/meter/ade7758_ring.c
+++ b/drivers/staging/iio/meter/ade7758_ring.c
@@ -21,7 +21,6 @@
#include "../iio.h"
#include "../sysfs.h"
#include "../ring_sw.h"
-#include "../accel/accel.h"
#include "../trigger.h"
#include "ade7758.h"
--
1.7.3.4
^ permalink raw reply related [flat|nested] 21+ messages in thread
* [PATCH 12/19] staging:iio:adc: header cleanup - remove unused.
2011-08-12 16:08 [PATCH 00/19] staging:iio:cleanups - post fixes Jonathan Cameron
` (10 preceding siblings ...)
2011-08-12 16:08 ` [PATCH 11/19] staging:iio:various header includes that should never have been Jonathan Cameron
@ 2011-08-12 16:08 ` Jonathan Cameron
2011-08-12 16:08 ` [PATCH 13/19] staging:iio:accel header housekeeping - remove unecessary includes Jonathan Cameron
` (7 subsequent siblings)
19 siblings, 0 replies; 21+ messages in thread
From: Jonathan Cameron @ 2011-08-12 16:08 UTC (permalink / raw)
To: greg; +Cc: linux-iio, Jonathan Cameron
Clear out all the excessive includes in the *_ring.c files.
Mixture of cut and paste bloat and things needed for code that
has gone away.
Signed-off-by: Jonathan Cameron <jic23@cam.ac.uk>
---
drivers/staging/iio/adc/ad7298_ring.c | 3 ---
drivers/staging/iio/adc/ad7476_ring.c | 2 --
drivers/staging/iio/adc/ad7606_ring.c | 2 --
drivers/staging/iio/adc/ad7887_ring.c | 3 ---
drivers/staging/iio/adc/ad799x_ring.c | 3 ---
drivers/staging/iio/adc/max1363_ring.c | 4 ----
6 files changed, 0 insertions(+), 17 deletions(-)
diff --git a/drivers/staging/iio/adc/ad7298_ring.c b/drivers/staging/iio/adc/ad7298_ring.c
index a04c033..7423d4a 100644
--- a/drivers/staging/iio/adc/ad7298_ring.c
+++ b/drivers/staging/iio/adc/ad7298_ring.c
@@ -7,17 +7,14 @@
*/
#include <linux/interrupt.h>
-#include <linux/device.h>
#include <linux/kernel.h>
#include <linux/slab.h>
-#include <linux/sysfs.h>
#include <linux/spi/spi.h>
#include "../iio.h"
#include "../ring_generic.h"
#include "../ring_sw.h"
#include "../trigger.h"
-#include "../sysfs.h"
#include "ad7298.h"
diff --git a/drivers/staging/iio/adc/ad7476_ring.c b/drivers/staging/iio/adc/ad7476_ring.c
index a92fc5a..86bbba8 100644
--- a/drivers/staging/iio/adc/ad7476_ring.c
+++ b/drivers/staging/iio/adc/ad7476_ring.c
@@ -11,14 +11,12 @@
#include <linux/device.h>
#include <linux/kernel.h>
#include <linux/slab.h>
-#include <linux/sysfs.h>
#include <linux/spi/spi.h>
#include "../iio.h"
#include "../ring_generic.h"
#include "../ring_sw.h"
#include "../trigger.h"
-#include "../sysfs.h"
#include "ad7476.h"
diff --git a/drivers/staging/iio/adc/ad7606_ring.c b/drivers/staging/iio/adc/ad7606_ring.c
index a199bf4..f8f574a 100644
--- a/drivers/staging/iio/adc/ad7606_ring.c
+++ b/drivers/staging/iio/adc/ad7606_ring.c
@@ -10,13 +10,11 @@
#include <linux/device.h>
#include <linux/kernel.h>
#include <linux/slab.h>
-#include <linux/sysfs.h>
#include "../iio.h"
#include "../ring_generic.h"
#include "../ring_sw.h"
#include "../trigger.h"
-#include "../sysfs.h"
#include "ad7606.h"
diff --git a/drivers/staging/iio/adc/ad7887_ring.c b/drivers/staging/iio/adc/ad7887_ring.c
index 0ac7c0b..b77b120 100644
--- a/drivers/staging/iio/adc/ad7887_ring.c
+++ b/drivers/staging/iio/adc/ad7887_ring.c
@@ -8,17 +8,14 @@
*/
#include <linux/interrupt.h>
-#include <linux/device.h>
#include <linux/kernel.h>
#include <linux/slab.h>
-#include <linux/sysfs.h>
#include <linux/spi/spi.h>
#include "../iio.h"
#include "../ring_generic.h"
#include "../ring_sw.h"
#include "../trigger.h"
-#include "../sysfs.h"
#include "ad7887.h"
diff --git a/drivers/staging/iio/adc/ad799x_ring.c b/drivers/staging/iio/adc/ad799x_ring.c
index 0376a82..d84efd6 100644
--- a/drivers/staging/iio/adc/ad799x_ring.c
+++ b/drivers/staging/iio/adc/ad799x_ring.c
@@ -10,10 +10,8 @@
*/
#include <linux/interrupt.h>
-#include <linux/device.h>
#include <linux/slab.h>
#include <linux/kernel.h>
-#include <linux/sysfs.h>
#include <linux/list.h>
#include <linux/i2c.h>
#include <linux/bitops.h>
@@ -22,7 +20,6 @@
#include "../ring_generic.h"
#include "../ring_sw.h"
#include "../trigger.h"
-#include "../sysfs.h"
#include "ad799x.h"
diff --git a/drivers/staging/iio/adc/max1363_ring.c b/drivers/staging/iio/adc/max1363_ring.c
index f43befd..696676f 100644
--- a/drivers/staging/iio/adc/max1363_ring.c
+++ b/drivers/staging/iio/adc/max1363_ring.c
@@ -9,11 +9,8 @@
*/
#include <linux/interrupt.h>
-#include <linux/device.h>
#include <linux/slab.h>
#include <linux/kernel.h>
-#include <linux/sysfs.h>
-#include <linux/list.h>
#include <linux/i2c.h>
#include <linux/bitops.h>
@@ -21,7 +18,6 @@
#include "../ring_generic.h"
#include "../ring_sw.h"
#include "../trigger.h"
-#include "../sysfs.h"
#include "max1363.h"
--
1.7.3.4
^ permalink raw reply related [flat|nested] 21+ messages in thread
* [PATCH 13/19] staging:iio:accel header housekeeping - remove unecessary includes.
2011-08-12 16:08 [PATCH 00/19] staging:iio:cleanups - post fixes Jonathan Cameron
` (11 preceding siblings ...)
2011-08-12 16:08 ` [PATCH 12/19] staging:iio:adc: header cleanup - remove unused Jonathan Cameron
@ 2011-08-12 16:08 ` Jonathan Cameron
2011-08-12 16:08 ` [PATCH 14/19] staging:iio:gyro and meter: header housecleaning Jonathan Cameron
` (6 subsequent siblings)
19 siblings, 0 replies; 21+ messages in thread
From: Jonathan Cameron @ 2011-08-12 16:08 UTC (permalink / raw)
To: greg; +Cc: linux-iio, Jonathan Cameron
Signed-off-by: Jonathan Cameron <jic23@cam.ac.uk>
---
drivers/staging/iio/accel/adis16201_ring.c | 4 ----
drivers/staging/iio/accel/adis16201_trigger.c | 5 -----
drivers/staging/iio/accel/adis16203_ring.c | 7 -------
drivers/staging/iio/accel/adis16203_trigger.c | 6 ------
drivers/staging/iio/accel/adis16204_ring.c | 7 -------
drivers/staging/iio/accel/adis16204_trigger.c | 6 ------
drivers/staging/iio/accel/adis16209_ring.c | 7 -------
drivers/staging/iio/accel/adis16209_trigger.c | 6 ------
drivers/staging/iio/accel/adis16240_ring.c | 7 -------
drivers/staging/iio/accel/adis16240_trigger.c | 6 ------
drivers/staging/iio/accel/lis3l02dq_ring.c | 4 ----
drivers/staging/iio/accel/sca3000_ring.c | 2 --
12 files changed, 0 insertions(+), 67 deletions(-)
diff --git a/drivers/staging/iio/accel/adis16201_ring.c b/drivers/staging/iio/accel/adis16201_ring.c
index 30bac86..9925785 100644
--- a/drivers/staging/iio/accel/adis16201_ring.c
+++ b/drivers/staging/iio/accel/adis16201_ring.c
@@ -1,14 +1,10 @@
#include <linux/interrupt.h>
-#include <linux/irq.h>
#include <linux/mutex.h>
-#include <linux/device.h>
#include <linux/kernel.h>
#include <linux/spi/spi.h>
#include <linux/slab.h>
-#include <linux/sysfs.h>
#include "../iio.h"
-#include "../sysfs.h"
#include "../ring_sw.h"
#include "../trigger.h"
#include "adis16201.h"
diff --git a/drivers/staging/iio/accel/adis16201_trigger.c b/drivers/staging/iio/accel/adis16201_trigger.c
index 7c853a6..f448258 100644
--- a/drivers/staging/iio/accel/adis16201_trigger.c
+++ b/drivers/staging/iio/accel/adis16201_trigger.c
@@ -1,13 +1,8 @@
#include <linux/interrupt.h>
-#include <linux/irq.h>
-#include <linux/mutex.h>
-#include <linux/device.h>
#include <linux/kernel.h>
-#include <linux/sysfs.h>
#include <linux/spi/spi.h>
#include "../iio.h"
-#include "../sysfs.h"
#include "../trigger.h"
#include "adis16201.h"
diff --git a/drivers/staging/iio/accel/adis16203_ring.c b/drivers/staging/iio/accel/adis16203_ring.c
index 7ca9c25..049174d 100644
--- a/drivers/staging/iio/accel/adis16203_ring.c
+++ b/drivers/staging/iio/accel/adis16203_ring.c
@@ -1,17 +1,10 @@
#include <linux/interrupt.h>
-#include <linux/irq.h>
-#include <linux/gpio.h>
-#include <linux/workqueue.h>
#include <linux/mutex.h>
-#include <linux/device.h>
#include <linux/kernel.h>
#include <linux/spi/spi.h>
#include <linux/slab.h>
-#include <linux/sysfs.h>
-#include <linux/list.h>
#include "../iio.h"
-#include "../sysfs.h"
#include "../ring_sw.h"
#include "../trigger.h"
#include "adis16203.h"
diff --git a/drivers/staging/iio/accel/adis16203_trigger.c b/drivers/staging/iio/accel/adis16203_trigger.c
index 9ea1c1e..50165f9 100644
--- a/drivers/staging/iio/accel/adis16203_trigger.c
+++ b/drivers/staging/iio/accel/adis16203_trigger.c
@@ -1,14 +1,8 @@
#include <linux/interrupt.h>
-#include <linux/irq.h>
-#include <linux/mutex.h>
-#include <linux/device.h>
#include <linux/kernel.h>
-#include <linux/sysfs.h>
-#include <linux/list.h>
#include <linux/spi/spi.h>
#include "../iio.h"
-#include "../sysfs.h"
#include "../trigger.h"
#include "adis16203.h"
diff --git a/drivers/staging/iio/accel/adis16204_ring.c b/drivers/staging/iio/accel/adis16204_ring.c
index 537d463..b173856 100644
--- a/drivers/staging/iio/accel/adis16204_ring.c
+++ b/drivers/staging/iio/accel/adis16204_ring.c
@@ -1,17 +1,10 @@
#include <linux/interrupt.h>
-#include <linux/irq.h>
-#include <linux/gpio.h>
-#include <linux/workqueue.h>
#include <linux/mutex.h>
-#include <linux/device.h>
#include <linux/kernel.h>
#include <linux/spi/spi.h>
#include <linux/slab.h>
-#include <linux/sysfs.h>
-#include <linux/list.h>
#include "../iio.h"
-#include "../sysfs.h"
#include "../ring_sw.h"
#include "../trigger.h"
#include "adis16204.h"
diff --git a/drivers/staging/iio/accel/adis16204_trigger.c b/drivers/staging/iio/accel/adis16204_trigger.c
index bd6d293..55b661c 100644
--- a/drivers/staging/iio/accel/adis16204_trigger.c
+++ b/drivers/staging/iio/accel/adis16204_trigger.c
@@ -1,14 +1,8 @@
#include <linux/interrupt.h>
-#include <linux/irq.h>
-#include <linux/mutex.h>
-#include <linux/device.h>
#include <linux/kernel.h>
-#include <linux/sysfs.h>
-#include <linux/list.h>
#include <linux/spi/spi.h>
#include "../iio.h"
-#include "../sysfs.h"
#include "../trigger.h"
#include "adis16204.h"
diff --git a/drivers/staging/iio/accel/adis16209_ring.c b/drivers/staging/iio/accel/adis16209_ring.c
index 77b70e3..7547ddb 100644
--- a/drivers/staging/iio/accel/adis16209_ring.c
+++ b/drivers/staging/iio/accel/adis16209_ring.c
@@ -1,17 +1,10 @@
#include <linux/interrupt.h>
-#include <linux/irq.h>
-#include <linux/gpio.h>
-#include <linux/workqueue.h>
#include <linux/mutex.h>
-#include <linux/device.h>
#include <linux/kernel.h>
#include <linux/spi/spi.h>
#include <linux/slab.h>
-#include <linux/sysfs.h>
-#include <linux/list.h>
#include "../iio.h"
-#include "../sysfs.h"
#include "../ring_sw.h"
#include "../trigger.h"
#include "adis16209.h"
diff --git a/drivers/staging/iio/accel/adis16209_trigger.c b/drivers/staging/iio/accel/adis16209_trigger.c
index 4c6df9e..8df8a97 100644
--- a/drivers/staging/iio/accel/adis16209_trigger.c
+++ b/drivers/staging/iio/accel/adis16209_trigger.c
@@ -1,14 +1,8 @@
#include <linux/interrupt.h>
-#include <linux/irq.h>
-#include <linux/mutex.h>
-#include <linux/device.h>
#include <linux/kernel.h>
-#include <linux/sysfs.h>
-#include <linux/list.h>
#include <linux/spi/spi.h>
#include "../iio.h"
-#include "../sysfs.h"
#include "../trigger.h"
#include "adis16209.h"
diff --git a/drivers/staging/iio/accel/adis16240_ring.c b/drivers/staging/iio/accel/adis16240_ring.c
index 3f1e159..9bb4ff8 100644
--- a/drivers/staging/iio/accel/adis16240_ring.c
+++ b/drivers/staging/iio/accel/adis16240_ring.c
@@ -1,17 +1,10 @@
#include <linux/interrupt.h>
-#include <linux/irq.h>
-#include <linux/gpio.h>
-#include <linux/workqueue.h>
#include <linux/mutex.h>
-#include <linux/device.h>
#include <linux/kernel.h>
#include <linux/spi/spi.h>
#include <linux/slab.h>
-#include <linux/sysfs.h>
-#include <linux/list.h>
#include "../iio.h"
-#include "../sysfs.h"
#include "../ring_sw.h"
#include "../trigger.h"
#include "adis16240.h"
diff --git a/drivers/staging/iio/accel/adis16240_trigger.c b/drivers/staging/iio/accel/adis16240_trigger.c
index 0c75338..13f1d14 100644
--- a/drivers/staging/iio/accel/adis16240_trigger.c
+++ b/drivers/staging/iio/accel/adis16240_trigger.c
@@ -1,14 +1,8 @@
#include <linux/interrupt.h>
-#include <linux/irq.h>
-#include <linux/mutex.h>
-#include <linux/device.h>
#include <linux/kernel.h>
-#include <linux/sysfs.h>
-#include <linux/list.h>
#include <linux/spi/spi.h>
#include "../iio.h"
-#include "../sysfs.h"
#include "../trigger.h"
#include "adis16240.h"
diff --git a/drivers/staging/iio/accel/lis3l02dq_ring.c b/drivers/staging/iio/accel/lis3l02dq_ring.c
index 7305c78..c53985e 100644
--- a/drivers/staging/iio/accel/lis3l02dq_ring.c
+++ b/drivers/staging/iio/accel/lis3l02dq_ring.c
@@ -1,15 +1,11 @@
#include <linux/interrupt.h>
-#include <linux/irq.h>
#include <linux/gpio.h>
#include <linux/mutex.h>
-#include <linux/device.h>
#include <linux/kernel.h>
#include <linux/spi/spi.h>
-#include <linux/sysfs.h>
#include <linux/slab.h>
#include "../iio.h"
-#include "../sysfs.h"
#include "../ring_sw.h"
#include "../kfifo_buf.h"
#include "../trigger.h"
diff --git a/drivers/staging/iio/accel/sca3000_ring.c b/drivers/staging/iio/accel/sca3000_ring.c
index 6ce8bf5..0b736db 100644
--- a/drivers/staging/iio/accel/sca3000_ring.c
+++ b/drivers/staging/iio/accel/sca3000_ring.c
@@ -10,9 +10,7 @@
*/
#include <linux/interrupt.h>
-#include <linux/gpio.h>
#include <linux/fs.h>
-#include <linux/device.h>
#include <linux/slab.h>
#include <linux/kernel.h>
#include <linux/spi/spi.h>
--
1.7.3.4
^ permalink raw reply related [flat|nested] 21+ messages in thread
* [PATCH 14/19] staging:iio:gyro and meter: header housecleaning.
2011-08-12 16:08 [PATCH 00/19] staging:iio:cleanups - post fixes Jonathan Cameron
` (12 preceding siblings ...)
2011-08-12 16:08 ` [PATCH 13/19] staging:iio:accel header housekeeping - remove unecessary includes Jonathan Cameron
@ 2011-08-12 16:08 ` Jonathan Cameron
2011-08-12 16:08 ` [PATCH 15/19] staging:iio:core flatten convenience function that only has one user Jonathan Cameron
` (5 subsequent siblings)
19 siblings, 0 replies; 21+ messages in thread
From: Jonathan Cameron @ 2011-08-12 16:08 UTC (permalink / raw)
To: greg; +Cc: linux-iio, Jonathan Cameron
Signed-off-by: Jonathan Cameron <jic23@cam.ac.uk>
---
drivers/staging/iio/gyro/adis16260_ring.c | 7 -------
drivers/staging/iio/gyro/adis16260_trigger.c | 6 ------
drivers/staging/iio/meter/ade7758_ring.c | 8 --------
drivers/staging/iio/meter/ade7758_trigger.c | 6 ------
4 files changed, 0 insertions(+), 27 deletions(-)
diff --git a/drivers/staging/iio/gyro/adis16260_ring.c b/drivers/staging/iio/gyro/adis16260_ring.c
index e9cff3b..92d1fac 100644
--- a/drivers/staging/iio/gyro/adis16260_ring.c
+++ b/drivers/staging/iio/gyro/adis16260_ring.c
@@ -1,17 +1,10 @@
#include <linux/interrupt.h>
-#include <linux/irq.h>
-#include <linux/gpio.h>
-#include <linux/workqueue.h>
#include <linux/mutex.h>
-#include <linux/device.h>
#include <linux/kernel.h>
#include <linux/spi/spi.h>
#include <linux/slab.h>
-#include <linux/sysfs.h>
-#include <linux/list.h>
#include "../iio.h"
-#include "../sysfs.h"
#include "../ring_sw.h"
#include "../trigger.h"
#include "adis16260.h"
diff --git a/drivers/staging/iio/gyro/adis16260_trigger.c b/drivers/staging/iio/gyro/adis16260_trigger.c
index f240961..2f2b216 100644
--- a/drivers/staging/iio/gyro/adis16260_trigger.c
+++ b/drivers/staging/iio/gyro/adis16260_trigger.c
@@ -1,14 +1,8 @@
#include <linux/interrupt.h>
-#include <linux/irq.h>
-#include <linux/mutex.h>
-#include <linux/device.h>
#include <linux/kernel.h>
-#include <linux/sysfs.h>
-#include <linux/list.h>
#include <linux/spi/spi.h>
#include "../iio.h"
-#include "../sysfs.h"
#include "../trigger.h"
#include "adis16260.h"
diff --git a/drivers/staging/iio/meter/ade7758_ring.c b/drivers/staging/iio/meter/ade7758_ring.c
index e7a04b4..c9271d0 100644
--- a/drivers/staging/iio/meter/ade7758_ring.c
+++ b/drivers/staging/iio/meter/ade7758_ring.c
@@ -6,20 +6,12 @@
* Licensed under the GPL-2.
*/
#include <linux/interrupt.h>
-#include <linux/irq.h>
-#include <linux/gpio.h>
-#include <linux/workqueue.h>
-#include <linux/mutex.h>
-#include <linux/device.h>
#include <linux/kernel.h>
#include <linux/spi/spi.h>
#include <linux/slab.h>
-#include <linux/sysfs.h>
-#include <linux/list.h>
#include <asm/unaligned.h>
#include "../iio.h"
-#include "../sysfs.h"
#include "../ring_sw.h"
#include "../trigger.h"
#include "ade7758.h"
diff --git a/drivers/staging/iio/meter/ade7758_trigger.c b/drivers/staging/iio/meter/ade7758_trigger.c
index 4c451c2..392dfe3 100644
--- a/drivers/staging/iio/meter/ade7758_trigger.c
+++ b/drivers/staging/iio/meter/ade7758_trigger.c
@@ -7,16 +7,10 @@
*/
#include <linux/interrupt.h>
-#include <linux/irq.h>
-#include <linux/mutex.h>
-#include <linux/device.h>
#include <linux/kernel.h>
-#include <linux/sysfs.h>
-#include <linux/list.h>
#include <linux/spi/spi.h>
#include "../iio.h"
-#include "../sysfs.h"
#include "../trigger.h"
#include "ade7758.h"
--
1.7.3.4
^ permalink raw reply related [flat|nested] 21+ messages in thread
* [PATCH 15/19] staging:iio:core flatten convenience function that only has one user.
2011-08-12 16:08 [PATCH 00/19] staging:iio:cleanups - post fixes Jonathan Cameron
` (13 preceding siblings ...)
2011-08-12 16:08 ` [PATCH 14/19] staging:iio:gyro and meter: header housecleaning Jonathan Cameron
@ 2011-08-12 16:08 ` Jonathan Cameron
2011-08-12 16:08 ` [PATCH 16/19] staging:iio:core squash trivial wrappers and use ida allocation func Jonathan Cameron
` (4 subsequent siblings)
19 siblings, 0 replies; 21+ messages in thread
From: Jonathan Cameron @ 2011-08-12 16:08 UTC (permalink / raw)
To: greg; +Cc: linux-iio, Jonathan Cameron
Fix trivial wrong index (no effect on any current drivers).
Signed-off-by: Jonathan Cameron <jic23@cam.ac.uk>
---
drivers/staging/iio/industrialio-core.c | 22 +++++++---------------
1 files changed, 7 insertions(+), 15 deletions(-)
diff --git a/drivers/staging/iio/industrialio-core.c b/drivers/staging/iio/industrialio-core.c
index e8ad648..97f4d63 100644
--- a/drivers/staging/iio/industrialio-core.c
+++ b/drivers/staging/iio/industrialio-core.c
@@ -1004,18 +1004,17 @@ error_ret:
return ret;
}
-static inline void __iio_remove_all_event_sysfs(struct iio_dev *dev_info,
- const char *groupname,
- int num)
+static inline void __iio_remove_event_config_attrs(struct iio_dev *dev_info,
+ int i)
{
struct iio_dev_attr *p, *n;
list_for_each_entry_safe(p, n,
- &dev_info->event_interfaces[num].
+ &dev_info->event_interfaces[i].
dev_attr_list, l) {
sysfs_remove_file_from_group(&dev_info
- ->event_interfaces[num].dev.kobj,
+ ->event_interfaces[i].dev.kobj,
&p->dev_attr.attr,
- groupname);
+ NULL);
kfree(p->dev_attr.attr.name);
kfree(p);
}
@@ -1025,7 +1024,7 @@ static inline int __iio_add_event_config_attrs(struct iio_dev *dev_info, int i)
{
int j;
int ret;
- INIT_LIST_HEAD(&dev_info->event_interfaces[0].dev_attr_list);
+ INIT_LIST_HEAD(&dev_info->event_interfaces[i].dev_attr_list);
/* Dynically created from the channels array */
if (dev_info->channels) {
for (j = 0; j < dev_info->num_channels; j++) {
@@ -1039,18 +1038,11 @@ static inline int __iio_add_event_config_attrs(struct iio_dev *dev_info, int i)
return 0;
error_clear_attrs:
- __iio_remove_all_event_sysfs(dev_info, NULL, i);
+ __iio_remove_event_config_attrs(dev_info, i);
return ret;
}
-static inline int __iio_remove_event_config_attrs(struct iio_dev *dev_info,
- int i)
-{
- __iio_remove_all_event_sysfs(dev_info, NULL, i);
- return 0;
-}
-
static int iio_device_register_eventset(struct iio_dev *dev_info)
{
int ret = 0, i, j;
--
1.7.3.4
^ permalink raw reply related [flat|nested] 21+ messages in thread
* [PATCH 16/19] staging:iio:core squash trivial wrappers and use ida allocation func.
2011-08-12 16:08 [PATCH 00/19] staging:iio:cleanups - post fixes Jonathan Cameron
` (14 preceding siblings ...)
2011-08-12 16:08 ` [PATCH 15/19] staging:iio:core flatten convenience function that only has one user Jonathan Cameron
@ 2011-08-12 16:08 ` Jonathan Cameron
2011-08-12 16:08 ` [PATCH 17/19] staging:iio:sysfs cleanout header for unused definitions Jonathan Cameron
` (3 subsequent siblings)
19 siblings, 0 replies; 21+ messages in thread
From: Jonathan Cameron @ 2011-08-12 16:08 UTC (permalink / raw)
To: greg; +Cc: linux-iio, Jonathan Cameron
Reorder to remove need for definitions currently in header.
Remove ida related utility function defs from header.
Signed-off-by: Jonathan Cameron <jic23@cam.ac.uk>
---
drivers/staging/iio/iio.h | 4 -
drivers/staging/iio/industrialio-core.c | 108 ++++++++++++-------------------
2 files changed, 42 insertions(+), 70 deletions(-)
diff --git a/drivers/staging/iio/iio.h b/drivers/staging/iio/iio.h
index 7a6ce4d..42254b4 100644
--- a/drivers/staging/iio/iio.h
+++ b/drivers/staging/iio/iio.h
@@ -432,8 +432,4 @@ static inline bool iio_ring_enabled(struct iio_dev *dev_info)
| INDIO_RING_HARDWARE_BUFFER);
};
-struct ida;
-
-int iio_get_new_ida_val(struct ida *this_ida);
-void iio_free_ida_val(struct ida *this_ida, int id);
#endif /* _INDUSTRIAL_IO_H_ */
diff --git a/drivers/staging/iio/industrialio-core.c b/drivers/staging/iio/industrialio-core.c
index 97f4d63..b424649 100644
--- a/drivers/staging/iio/industrialio-core.c
+++ b/drivers/staging/iio/industrialio-core.c
@@ -87,6 +87,36 @@ static const char * const iio_chan_info_postfix[] = {
[IIO_CHAN_INFO_PEAK_SCALE_SHARED/2] = "peak_scale",
};
+/* Return a negative errno on failure */
+int iio_get_new_ida_val(struct ida *this_ida)
+{
+ int ret;
+ int val;
+
+ida_again:
+ if (unlikely(ida_pre_get(this_ida, GFP_KERNEL) == 0))
+ return -ENOMEM;
+
+ spin_lock(&iio_ida_lock);
+ ret = ida_get_new(this_ida, &val);
+ spin_unlock(&iio_ida_lock);
+ if (unlikely(ret == -EAGAIN))
+ goto ida_again;
+ else if (unlikely(ret))
+ return ret;
+
+ return val;
+}
+EXPORT_SYMBOL(iio_get_new_ida_val);
+
+void iio_free_ida_val(struct ida *this_ida, int id)
+{
+ spin_lock(&iio_ida_lock);
+ ida_remove(this_ida, id);
+ spin_unlock(&iio_ida_lock);
+}
+EXPORT_SYMBOL(iio_free_ida_val);
+
int iio_push_event(struct iio_dev *dev_info,
int ev_line,
int ev_code,
@@ -246,28 +276,18 @@ static struct device_type iio_event_type = {
int iio_device_get_chrdev_minor(void)
{
- int ret, val;
+ int ret;
-ida_again:
- if (unlikely(ida_pre_get(&iio_chrdev_ida, GFP_KERNEL) == 0))
- return -ENOMEM;
- spin_lock(&iio_ida_lock);
- ret = ida_get_new(&iio_chrdev_ida, &val);
- spin_unlock(&iio_ida_lock);
- if (unlikely(ret == -EAGAIN))
- goto ida_again;
- else if (unlikely(ret))
+ ret = iio_get_new_ida_val(&iio_chrdev_ida);
+ if (ret < IIO_DEV_MAX) /* both errors and valid */
return ret;
- if (val > IIO_DEV_MAX)
+ else
return -ENOMEM;
- return val;
}
void iio_device_free_chrdev_minor(int val)
{
- spin_lock(&iio_ida_lock);
- ida_remove(&iio_chrdev_ida, val);
- spin_unlock(&iio_ida_lock);
+ iio_free_ida_val(&iio_chrdev_ida, val);
}
static int iio_setup_ev_int(struct iio_event_interface *ev_int,
@@ -329,24 +349,6 @@ static void iio_free_ev_int(struct iio_event_interface *ev_int)
put_device(&ev_int->dev);
}
-static int __init iio_dev_init(void)
-{
- int err;
-
- err = alloc_chrdev_region(&iio_devt, 0, IIO_DEV_MAX, "iio");
- if (err < 0)
- printk(KERN_ERR "%s: failed to allocate char dev region\n",
- __FILE__);
-
- return err;
-}
-
-static void __exit iio_dev_exit(void)
-{
- if (iio_devt)
- unregister_chrdev_region(iio_devt, IIO_DEV_MAX);
-}
-
static int __init iio_init(void)
{
int ret;
@@ -360,9 +362,12 @@ static int __init iio_init(void)
goto error_nothing;
}
- ret = iio_dev_init();
- if (ret < 0)
+ ret = alloc_chrdev_region(&iio_devt, 0, IIO_DEV_MAX, "iio");
+ if (ret < 0) {
+ printk(KERN_ERR "%s: failed to allocate char dev region\n",
+ __FILE__);
goto error_unregister_bus_type;
+ }
return 0;
@@ -374,7 +379,8 @@ error_nothing:
static void __exit iio_exit(void)
{
- iio_dev_exit();
+ if (iio_devt)
+ unregister_chrdev_region(iio_devt, IIO_DEV_MAX);
bus_unregister(&iio_bus_type);
}
@@ -806,36 +812,6 @@ static void iio_device_unregister_sysfs(struct iio_dev *dev_info)
sysfs_remove_group(&dev_info->dev.kobj, &iio_base_dummy_group);
}
-/* Return a negative errno on failure */
-int iio_get_new_ida_val(struct ida *this_ida)
-{
- int ret;
- int val;
-
-ida_again:
- if (unlikely(ida_pre_get(this_ida, GFP_KERNEL) == 0))
- return -ENOMEM;
-
- spin_lock(&iio_ida_lock);
- ret = ida_get_new(this_ida, &val);
- spin_unlock(&iio_ida_lock);
- if (unlikely(ret == -EAGAIN))
- goto ida_again;
- else if (unlikely(ret))
- return ret;
-
- return val;
-}
-EXPORT_SYMBOL(iio_get_new_ida_val);
-
-void iio_free_ida_val(struct ida *this_ida, int id)
-{
- spin_lock(&iio_ida_lock);
- ida_remove(this_ida, id);
- spin_unlock(&iio_ida_lock);
-}
-EXPORT_SYMBOL(iio_free_ida_val);
-
static const char * const iio_ev_type_text[] = {
[IIO_EV_TYPE_THRESH] = "thresh",
[IIO_EV_TYPE_MAG] = "mag",
--
1.7.3.4
^ permalink raw reply related [flat|nested] 21+ messages in thread
* [PATCH 17/19] staging:iio:sysfs cleanout header for unused definitions.
2011-08-12 16:08 [PATCH 00/19] staging:iio:cleanups - post fixes Jonathan Cameron
` (15 preceding siblings ...)
2011-08-12 16:08 ` [PATCH 16/19] staging:iio:core squash trivial wrappers and use ida allocation func Jonathan Cameron
@ 2011-08-12 16:08 ` Jonathan Cameron
2011-08-12 16:08 ` [PATCH 18/19] staging:iio:light:tsl2583 allocate chip state with iio_dev Jonathan Cameron
` (2 subsequent siblings)
19 siblings, 0 replies; 21+ messages in thread
From: Jonathan Cameron @ 2011-08-12 16:08 UTC (permalink / raw)
To: greg; +Cc: linux-iio, Jonathan Cameron
Also push one down into the only driver that actually uses it.
Signed-off-by: Jonathan Cameron <jic23@cam.ac.uk>
---
drivers/staging/iio/accel/sca3000_core.c | 2 +-
drivers/staging/iio/sysfs.h | 45 +----------------------------
2 files changed, 3 insertions(+), 44 deletions(-)
diff --git a/drivers/staging/iio/accel/sca3000_core.c b/drivers/staging/iio/accel/sca3000_core.c
index 3c637b9..22c38c3 100644
--- a/drivers/staging/iio/accel/sca3000_core.c
+++ b/drivers/staging/iio/accel/sca3000_core.c
@@ -421,7 +421,7 @@ static IIO_DEVICE_ATTR(measurement_mode, S_IRUGO | S_IWUSR,
/* More standard attributes */
-static IIO_DEV_ATTR_REV(sca3000_show_rev);
+static IIO_DEVICE_ATTR(revision, S_IRUGO, sca3000_show_rev, NULL, 0);
#define SCA3000_INFO_MASK \
(1 << IIO_CHAN_INFO_SCALE_SHARED)
diff --git a/drivers/staging/iio/sysfs.h b/drivers/staging/iio/sysfs.h
index 203ee83..56f4efb 100644
--- a/drivers/staging/iio/sysfs.h
+++ b/drivers/staging/iio/sysfs.h
@@ -71,17 +71,8 @@ struct iio_const_attr {
struct iio_const_attr iio_const_attr_##_vname \
= { .string = _string, \
.dev_attr = __ATTR(_name, S_IRUGO, iio_read_const_attr, NULL)}
-/* Generic attributes of onetype or another */
-
-/**
- * IIO_DEV_ATTR_REV - revision number for the device
- * @_show: output method for the attribute
- *
- * Very much device dependent.
- **/
-#define IIO_DEV_ATTR_REV(_show) \
- IIO_DEVICE_ATTR(revision, S_IRUGO, _show, NULL, 0)
+/* Generic attributes of onetype or another */
/**
* IIO_DEV_ATTR_RESET: resets the device
**/
@@ -89,13 +80,6 @@ struct iio_const_attr {
IIO_DEVICE_ATTR(reset, S_IWUSR, NULL, _store, 0)
/**
- * IIO_CONST_ATTR_NAME - constant identifier
- * @_string: the name
- **/
-#define IIO_CONST_ATTR_NAME(_string) \
- IIO_CONST_ATTR(name, _string)
-
-/**
* IIO_DEV_ATTR_SAMP_FREQ - sets any internal clock frequency
* @_mode: sysfs file mode/permissions
* @_show: output method for the attribute
@@ -105,15 +89,11 @@ struct iio_const_attr {
IIO_DEVICE_ATTR(sampling_frequency, _mode, _show, _store, 0)
/**
- * IIO_DEV_ATTR_AVAIL_SAMP_FREQ - list available sampling frequencies
+ * IIO_DEV_ATTR_SAMP_FREQ_AVAIL - list available sampling frequencies
* @_show: output method for the attribute
*
* May be mode dependent on some devices
**/
-/* Deprecated */
-#define IIO_DEV_ATTR_AVAIL_SAMP_FREQ(_show) \
- IIO_DEVICE_ATTR(available_sampling_frequency, S_IRUGO, _show, NULL, 0)
-
#define IIO_DEV_ATTR_SAMP_FREQ_AVAIL(_show) \
IIO_DEVICE_ATTR(sampling_frequency_available, S_IRUGO, _show, NULL, 0)
/**
@@ -125,27 +105,6 @@ struct iio_const_attr {
#define IIO_CONST_ATTR_SAMP_FREQ_AVAIL(_string) \
IIO_CONST_ATTR(sampling_frequency_available, _string)
-/**
- * IIO_DEV_ATTR_SW_RING_ENABLE - enable software ring buffer
- * @_show: output method for the attribute
- * @_store: input method for the attribute
- *
- * Success may be dependent on attachment of trigger previously.
- **/
-#define IIO_DEV_ATTR_SW_RING_ENABLE(_show, _store) \
- IIO_DEVICE_ATTR(sw_ring_enable, S_IRUGO | S_IWUSR, _show, _store, 0)
-
-/**
- * IIO_DEV_ATTR_HW_RING_ENABLE - enable hardware ring buffer
- * @_show: output method for the attribute
- * @_store: input method for the attribute
- *
- * This is a different attribute from the software one as one can envision
- * schemes where a combination of the two may be used.
- **/
-#define IIO_DEV_ATTR_HW_RING_ENABLE(_show, _store) \
- IIO_DEVICE_ATTR(hw_ring_enable, S_IRUGO | S_IWUSR, _show, _store, 0)
-
#define IIO_DEV_ATTR_TEMP_RAW(_show) \
IIO_DEVICE_ATTR(temp_raw, S_IRUGO, _show, NULL, 0)
--
1.7.3.4
^ permalink raw reply related [flat|nested] 21+ messages in thread
* [PATCH 18/19] staging:iio:light:tsl2583 allocate chip state with iio_dev
2011-08-12 16:08 [PATCH 00/19] staging:iio:cleanups - post fixes Jonathan Cameron
` (16 preceding siblings ...)
2011-08-12 16:08 ` [PATCH 17/19] staging:iio:sysfs cleanout header for unused definitions Jonathan Cameron
@ 2011-08-12 16:08 ` Jonathan Cameron
2011-08-12 16:08 ` [PATCH 19/19] staging:iio: Remove deprecated dev_data from iio_dev Jonathan Cameron
2011-08-23 20:32 ` [PATCH 00/19] staging:iio:cleanups - post fixes Greg KH
19 siblings, 0 replies; 21+ messages in thread
From: Jonathan Cameron @ 2011-08-12 16:08 UTC (permalink / raw)
To: greg; +Cc: linux-iio, Jonathan Cameron
There are some unusual corners in the probe function of this
driver, so may need another look.
V2: Now with the check for allocation success not inverted.
V3: Now with the i2c devdata calls actually being correctly cast.
Signed-off-by: Jonathan Cameron <jic23@cam.ac.uk>
Tested-by: Jon Brenner <jbrenner@TAOSinc.com>
---
drivers/staging/iio/light/tsl2583.c | 216 ++++++++++++++++-------------------
1 files changed, 101 insertions(+), 115 deletions(-)
diff --git a/drivers/staging/iio/light/tsl2583.c b/drivers/staging/iio/light/tsl2583.c
index 296d0ff..f75fe85 100644
--- a/drivers/staging/iio/light/tsl2583.c
+++ b/drivers/staging/iio/light/tsl2583.c
@@ -87,7 +87,6 @@ struct taos_settings {
struct tsl2583_chip {
struct mutex als_mutex;
struct i2c_client *client;
- struct iio_dev *iio_dev;
struct taos_als_info als_cur_info;
struct taos_settings taos_settings;
int als_time_scale;
@@ -159,8 +158,7 @@ static void taos_defaults(struct tsl2583_chip *chip)
static int
taos_i2c_read(struct i2c_client *client, u8 reg, u8 *val, unsigned int len)
{
- int ret;
- int i;
+ int i, ret;
for (i = 0; i < len; i++) {
/* select register to write */
@@ -191,47 +189,47 @@ taos_i2c_read(struct i2c_client *client, u8 reg, u8 *val, unsigned int len)
* the array are then used along with the time scale factor array values, to
* calculate the lux.
*/
-static int taos_get_lux(struct i2c_client *client)
+static int taos_get_lux(struct iio_dev *indio_dev)
{
u16 ch0, ch1; /* separated ch0/ch1 data from device */
u32 lux; /* raw lux calculated from device data */
u32 ratio;
u8 buf[5];
struct taos_lux *p;
- struct tsl2583_chip *chip = i2c_get_clientdata(client);
+ struct tsl2583_chip *chip = iio_priv(indio_dev);
int i, ret;
u32 ch0lux = 0;
u32 ch1lux = 0;
if (mutex_trylock(&chip->als_mutex) == 0) {
- dev_info(&client->dev, "taos_get_lux device is busy\n");
+ dev_info(&chip->client->dev, "taos_get_lux device is busy\n");
return chip->als_cur_info.lux; /* busy, so return LAST VALUE */
}
if (chip->taos_chip_status != TSL258X_CHIP_WORKING) {
/* device is not enabled */
- dev_err(&client->dev, "taos_get_lux device is not enabled\n");
+ dev_err(&chip->client->dev, "taos_get_lux device is not enabled\n");
ret = -EBUSY ;
goto out_unlock;
}
- ret = taos_i2c_read(client, (TSL258X_CMD_REG), &buf[0], 1);
+ ret = taos_i2c_read(chip->client, (TSL258X_CMD_REG), &buf[0], 1);
if (ret < 0) {
- dev_err(&client->dev, "taos_get_lux failed to read CMD_REG\n");
+ dev_err(&chip->client->dev, "taos_get_lux failed to read CMD_REG\n");
goto out_unlock;
}
/* is data new & valid */
if (!(buf[0] & TSL258X_STA_ADC_INTR)) {
- dev_err(&client->dev, "taos_get_lux data not valid\n");
+ dev_err(&chip->client->dev, "taos_get_lux data not valid\n");
ret = chip->als_cur_info.lux; /* return LAST VALUE */
goto out_unlock;
}
for (i = 0; i < 4; i++) {
int reg = TSL258X_CMD_REG | (TSL258X_ALS_CHAN0LO + i);
- ret = taos_i2c_read(client, reg, &buf[i], 1);
+ ret = taos_i2c_read(chip->client, reg, &buf[i], 1);
if (ret < 0) {
- dev_err(&client->dev, "taos_get_lux failed to read"
+ dev_err(&chip->client->dev, "taos_get_lux failed to read"
" register %x\n", reg);
goto out_unlock;
}
@@ -239,11 +237,12 @@ static int taos_get_lux(struct i2c_client *client)
/* clear status, really interrupt status (interrupts are off), but
* we use the bit anyway - don't forget 0x80 - this is a command*/
- ret = i2c_smbus_write_byte(client,
- (TSL258X_CMD_REG | TSL258X_CMD_SPL_FN | TSL258X_CMD_ALS_INT_CLR));
+ ret = i2c_smbus_write_byte(chip->client,
+ (TSL258X_CMD_REG | TSL258X_CMD_SPL_FN |
+ TSL258X_CMD_ALS_INT_CLR));
if (ret < 0) {
- dev_err(&client->dev,
+ dev_err(&chip->client->dev,
"taos_i2c_write_command failed in taos_get_lux, err = %d\n",
ret);
goto out_unlock; /* have no data, so return failure */
@@ -285,7 +284,7 @@ static int taos_get_lux(struct i2c_client *client)
/* note: lux is 31 bit max at this point */
if (ch1lux > ch0lux) {
- dev_dbg(&client->dev, "No Data - Return last value\n");
+ dev_dbg(&chip->client->dev, "No Data - Return last value\n");
ret = chip->als_cur_info.lux = 0;
goto out_unlock;
}
@@ -319,54 +318,56 @@ out_unlock:
* to derive actual lux).
* Return updated gain_trim value.
*/
-int taos_als_calibrate(struct i2c_client *client)
+static int taos_als_calibrate(struct iio_dev *indio_dev)
{
- struct tsl2583_chip *chip = i2c_get_clientdata(client);
+ struct tsl2583_chip *chip = iio_priv(indio_dev);
u8 reg_val;
unsigned int gain_trim_val;
int ret;
int lux_val;
- ret = i2c_smbus_write_byte(client, (TSL258X_CMD_REG | TSL258X_CNTRL));
+ ret = i2c_smbus_write_byte(chip->client,
+ (TSL258X_CMD_REG | TSL258X_CNTRL));
if (ret < 0) {
- dev_err(&client->dev,
+ dev_err(&chip->client->dev,
"taos_als_calibrate failed to reach the CNTRL register, ret=%d\n",
ret);
return ret;
}
- reg_val = i2c_smbus_read_byte(client);
+ reg_val = i2c_smbus_read_byte(chip->client);
if ((reg_val & (TSL258X_CNTL_ADC_ENBL | TSL258X_CNTL_PWR_ON))
!= (TSL258X_CNTL_ADC_ENBL | TSL258X_CNTL_PWR_ON)) {
- dev_err(&client->dev,
+ dev_err(&chip->client->dev,
"taos_als_calibrate failed: device not powered on with ADC enabled\n");
return -1;
}
- ret = i2c_smbus_write_byte(client, (TSL258X_CMD_REG | TSL258X_CNTRL));
+ ret = i2c_smbus_write_byte(chip->client,
+ (TSL258X_CMD_REG | TSL258X_CNTRL));
if (ret < 0) {
- dev_err(&client->dev,
+ dev_err(&chip->client->dev,
"taos_als_calibrate failed to reach the STATUS register, ret=%d\n",
ret);
return ret;
}
- reg_val = i2c_smbus_read_byte(client);
+ reg_val = i2c_smbus_read_byte(chip->client);
if ((reg_val & TSL258X_STA_ADC_VALID) != TSL258X_STA_ADC_VALID) {
- dev_err(&client->dev,
+ dev_err(&chip->client->dev,
"taos_als_calibrate failed: STATUS - ADC not valid.\n");
return -ENODATA;
}
- lux_val = taos_get_lux(client);
+ lux_val = taos_get_lux(indio_dev);
if (lux_val < 0) {
- dev_err(&client->dev, "taos_als_calibrate failed to get lux\n");
+ dev_err(&chip->client->dev, "taos_als_calibrate failed to get lux\n");
return lux_val;
}
gain_trim_val = (unsigned int) (((chip->taos_settings.als_cal_target)
* chip->taos_settings.als_gain_trim) / lux_val);
if ((gain_trim_val < 250) || (gain_trim_val > 4000)) {
- dev_err(&client->dev,
+ dev_err(&chip->client->dev,
"taos_als_calibrate failed: trim_val of %d is out of range\n",
gain_trim_val);
return -ENODATA;
@@ -380,21 +381,21 @@ int taos_als_calibrate(struct i2c_client *client)
* Turn the device on.
* Configuration must be set before calling this function.
*/
-static int taos_chip_on(struct i2c_client *client)
+static int taos_chip_on(struct iio_dev *indio_dev)
{
int i;
- int ret = 0;
+ int ret;
u8 *uP;
u8 utmp;
int als_count;
int als_time;
- struct tsl2583_chip *chip = i2c_get_clientdata(client);
+ struct tsl2583_chip *chip = iio_priv(indio_dev);
/* and make sure we're not already on */
if (chip->taos_chip_status == TSL258X_CHIP_WORKING) {
/* if forcing a register update - turn off, then on */
- dev_info(&client->dev, "device is already enabled\n");
- return -EINVAL;
+ dev_info(&chip->client->dev, "device is already enabled\n");
+ return -EINVAL;
}
/* determine als integration regster */
@@ -416,20 +417,21 @@ static int taos_chip_on(struct i2c_client *client)
/* TSL258x Specific power-on / adc enable sequence
* Power on the device 1st. */
utmp = TSL258X_CNTL_PWR_ON;
- ret = i2c_smbus_write_byte_data(client,
- TSL258X_CMD_REG | TSL258X_CNTRL, utmp);
+ ret = i2c_smbus_write_byte_data(chip->client,
+ TSL258X_CMD_REG | TSL258X_CNTRL, utmp);
if (ret < 0) {
- dev_err(&client->dev, "taos_chip_on failed on CNTRL reg.\n");
+ dev_err(&chip->client->dev, "taos_chip_on failed on CNTRL reg.\n");
return -1;
}
/* Use the following shadow copy for our delay before enabling ADC.
* Write all the registers. */
for (i = 0, uP = chip->taos_config; i < TSL258X_REG_MAX; i++) {
- ret = i2c_smbus_write_byte_data(client, TSL258X_CMD_REG + i,
+ ret = i2c_smbus_write_byte_data(chip->client,
+ TSL258X_CMD_REG + i,
*uP++);
if (ret < 0) {
- dev_err(&client->dev,
+ dev_err(&chip->client->dev,
"taos_chip_on failed on reg %d.\n", i);
return -1;
}
@@ -439,10 +441,11 @@ static int taos_chip_on(struct i2c_client *client)
/* NOW enable the ADC
* initialize the desired mode of operation */
utmp = TSL258X_CNTL_PWR_ON | TSL258X_CNTL_ADC_ENBL;
- ret = i2c_smbus_write_byte_data(client, TSL258X_CMD_REG | TSL258X_CNTRL,
+ ret = i2c_smbus_write_byte_data(chip->client,
+ TSL258X_CMD_REG | TSL258X_CNTRL,
utmp);
if (ret < 0) {
- dev_err(&client->dev, "taos_chip_on failed on 2nd CTRL reg.\n");
+ dev_err(&chip->client->dev, "taos_chip_on failed on 2nd CTRL reg.\n");
return -1;
}
chip->taos_chip_status = TSL258X_CHIP_WORKING;
@@ -450,33 +453,26 @@ static int taos_chip_on(struct i2c_client *client)
return ret;
}
-static int taos_chip_off(struct i2c_client *client)
+static int taos_chip_off(struct iio_dev *indio_dev)
{
- struct tsl2583_chip *chip = i2c_get_clientdata(client);
+ struct tsl2583_chip *chip = iio_priv(indio_dev);
int ret;
/* turn device off */
chip->taos_chip_status = TSL258X_CHIP_SUSPENDED;
- ret = i2c_smbus_write_byte_data(client, TSL258X_CMD_REG | TSL258X_CNTRL,
+ ret = i2c_smbus_write_byte_data(chip->client,
+ TSL258X_CMD_REG | TSL258X_CNTRL,
0x00);
return ret;
}
/* Sysfs Interface Functions */
-static ssize_t taos_device_id(struct device *dev,
-struct device_attribute *attr, char *buf)
-{
- struct iio_dev *indio_dev = dev_get_drvdata(dev);
- struct tsl2583_chip *chip = indio_dev->dev_data;
-
- return sprintf(buf, "%s\n", chip->client->name);
-}
static ssize_t taos_power_state_show(struct device *dev,
struct device_attribute *attr, char *buf)
{
struct iio_dev *indio_dev = dev_get_drvdata(dev);
- struct tsl2583_chip *chip = indio_dev->dev_data;
+ struct tsl2583_chip *chip = iio_priv(indio_dev);
return sprintf(buf, "%d\n", chip->taos_chip_status);
}
@@ -485,16 +481,15 @@ static ssize_t taos_power_state_store(struct device *dev,
struct device_attribute *attr, const char *buf, size_t len)
{
struct iio_dev *indio_dev = dev_get_drvdata(dev);
- struct tsl2583_chip *chip = indio_dev->dev_data;
unsigned long value;
if (strict_strtoul(buf, 0, &value))
return -EINVAL;
if (value == 0)
- taos_chip_off(chip->client);
+ taos_chip_off(indio_dev);
else
- taos_chip_on(chip->client);
+ taos_chip_on(indio_dev);
return len;
}
@@ -503,7 +498,7 @@ static ssize_t taos_gain_show(struct device *dev,
struct device_attribute *attr, char *buf)
{
struct iio_dev *indio_dev = dev_get_drvdata(dev);
- struct tsl2583_chip *chip = indio_dev->dev_data;
+ struct tsl2583_chip *chip = iio_priv(indio_dev);
char gain[4] = {0};
switch (chip->taos_settings.als_gain) {
@@ -528,7 +523,7 @@ static ssize_t taos_gain_store(struct device *dev,
struct device_attribute *attr, const char *buf, size_t len)
{
struct iio_dev *indio_dev = dev_get_drvdata(dev);
- struct tsl2583_chip *chip = indio_dev->dev_data;
+ struct tsl2583_chip *chip = iio_priv(indio_dev);
unsigned long value;
if (strict_strtoul(buf, 0, &value))
@@ -565,7 +560,7 @@ static ssize_t taos_als_time_show(struct device *dev,
struct device_attribute *attr, char *buf)
{
struct iio_dev *indio_dev = dev_get_drvdata(dev);
- struct tsl2583_chip *chip = indio_dev->dev_data;
+ struct tsl2583_chip *chip = iio_priv(indio_dev);
return sprintf(buf, "%d\n", chip->taos_settings.als_time);
}
@@ -574,7 +569,7 @@ static ssize_t taos_als_time_store(struct device *dev,
struct device_attribute *attr, const char *buf, size_t len)
{
struct iio_dev *indio_dev = dev_get_drvdata(dev);
- struct tsl2583_chip *chip = indio_dev->dev_data;
+ struct tsl2583_chip *chip = iio_priv(indio_dev);
unsigned long value;
if (strict_strtoul(buf, 0, &value))
@@ -586,7 +581,7 @@ static ssize_t taos_als_time_store(struct device *dev,
if (value % 50)
return -EINVAL;
- chip->taos_settings.als_time = value;
+ chip->taos_settings.als_time = value;
return len;
}
@@ -602,7 +597,7 @@ static ssize_t taos_als_trim_show(struct device *dev,
struct device_attribute *attr, char *buf)
{
struct iio_dev *indio_dev = dev_get_drvdata(dev);
- struct tsl2583_chip *chip = indio_dev->dev_data;
+ struct tsl2583_chip *chip = iio_priv(indio_dev);
return sprintf(buf, "%d\n", chip->taos_settings.als_gain_trim);
}
@@ -611,7 +606,7 @@ static ssize_t taos_als_trim_store(struct device *dev,
struct device_attribute *attr, const char *buf, size_t len)
{
struct iio_dev *indio_dev = dev_get_drvdata(dev);
- struct tsl2583_chip *chip = indio_dev->dev_data;
+ struct tsl2583_chip *chip = iio_priv(indio_dev);
unsigned long value;
if (strict_strtoul(buf, 0, &value))
@@ -627,7 +622,7 @@ static ssize_t taos_als_cal_target_show(struct device *dev,
struct device_attribute *attr, char *buf)
{
struct iio_dev *indio_dev = dev_get_drvdata(dev);
- struct tsl2583_chip *chip = indio_dev->dev_data;
+ struct tsl2583_chip *chip = iio_priv(indio_dev);
return sprintf(buf, "%d\n", chip->taos_settings.als_cal_target);
}
@@ -636,7 +631,7 @@ static ssize_t taos_als_cal_target_store(struct device *dev,
struct device_attribute *attr, const char *buf, size_t len)
{
struct iio_dev *indio_dev = dev_get_drvdata(dev);
- struct tsl2583_chip *chip = indio_dev->dev_data;
+ struct tsl2583_chip *chip = iio_priv(indio_dev);
unsigned long value;
if (strict_strtoul(buf, 0, &value))
@@ -651,27 +646,26 @@ static ssize_t taos_als_cal_target_store(struct device *dev,
static ssize_t taos_lux_show(struct device *dev, struct device_attribute *attr,
char *buf)
{
- struct iio_dev *indio_dev = dev_get_drvdata(dev);
- struct tsl2583_chip *chip = indio_dev->dev_data;
- int lux;
+ int ret;
- lux = taos_get_lux(chip->client);
+ ret = taos_get_lux(dev_get_drvdata(dev));
+ if (ret < 0)
+ return ret;
- return sprintf(buf, "%d\n", lux);
+ return sprintf(buf, "%d\n", ret);
}
static ssize_t taos_do_calibrate(struct device *dev,
struct device_attribute *attr, const char *buf, size_t len)
{
struct iio_dev *indio_dev = dev_get_drvdata(dev);
- struct tsl2583_chip *chip = indio_dev->dev_data;
unsigned long value;
if (strict_strtoul(buf, 0, &value))
return -EINVAL;
if (value == 1)
- taos_als_calibrate(chip->client);
+ taos_als_calibrate(indio_dev);
return len;
}
@@ -703,8 +697,8 @@ static ssize_t taos_luxtable_store(struct device *dev,
struct device_attribute *attr, const char *buf, size_t len)
{
struct iio_dev *indio_dev = dev_get_drvdata(dev);
- struct tsl2583_chip *chip = indio_dev->dev_data;
- int value[ARRAY_SIZE(taos_device_lux)];
+ struct tsl2583_chip *chip = iio_priv(indio_dev);
+ int value[ARRAY_SIZE(taos_device_lux)*3 + 1];
int n;
get_options(buf, ARRAY_SIZE(value), value);
@@ -725,18 +719,17 @@ static ssize_t taos_luxtable_store(struct device *dev,
}
if (chip->taos_chip_status == TSL258X_CHIP_WORKING)
- taos_chip_off(chip->client);
+ taos_chip_off(indio_dev);
/* Zero out the table */
memset(taos_device_lux, 0, sizeof(taos_device_lux));
memcpy(taos_device_lux, &value[1], (value[0] * 4));
- taos_chip_on(chip->client);
+ taos_chip_on(indio_dev);
return len;
}
-static DEVICE_ATTR(name, S_IRUGO, taos_device_id, NULL);
static DEVICE_ATTR(power_state, S_IRUGO | S_IWUSR,
taos_power_state_show, taos_power_state_store);
@@ -762,7 +755,6 @@ static DEVICE_ATTR(illuminance0_lux_table, S_IRUGO | S_IWUSR,
taos_luxtable_show, taos_luxtable_store);
static struct attribute *sysfs_attrs_ctrl[] = {
- &dev_attr_name.attr,
&dev_attr_power_state.attr,
&dev_attr_illuminance0_calibscale.attr, /* Gain */
&dev_attr_illuminance0_calibscale_available.attr,
@@ -798,9 +790,10 @@ static const struct iio_info tsl2583_info = {
static int __devinit taos_probe(struct i2c_client *clientp,
const struct i2c_device_id *idp)
{
- int i, ret = 0;
+ int i, ret;
unsigned char buf[TSL258X_MAX_DEVICE_REGS];
- static struct tsl2583_chip *chip;
+ struct tsl2583_chip *chip;
+ struct iio_dev *indio_dev;
if (!i2c_check_functionality(clientp->adapter,
I2C_FUNC_SMBUS_BYTE_DATA)) {
@@ -810,12 +803,15 @@ static int __devinit taos_probe(struct i2c_client *clientp,
return -EOPNOTSUPP;
}
- chip = kzalloc(sizeof(struct tsl2583_chip), GFP_KERNEL);
- if (!chip)
- return -ENOMEM;
-
+ indio_dev = iio_allocate_device(sizeof(*chip));
+ if (indio_dev == NULL) {
+ ret = -ENOMEM;
+ dev_err(&clientp->dev, "iio allocation failed\n");
+ goto fail1;
+ }
+ chip = iio_priv(indio_dev);
chip->client = clientp;
- i2c_set_clientdata(clientp, chip);
+ i2c_set_clientdata(clientp, indio_dev);
mutex_init(&chip->als_mutex);
chip->taos_chip_status = TSL258X_CHIP_UNKNOWN;
@@ -827,14 +823,14 @@ static int __devinit taos_probe(struct i2c_client *clientp,
if (ret < 0) {
dev_err(&clientp->dev, "i2c_smbus_write_bytes() to cmd "
"reg failed in taos_probe(), err = %d\n", ret);
- goto fail1;
+ goto fail2;
}
ret = i2c_smbus_read_byte(clientp);
if (ret < 0) {
dev_err(&clientp->dev, "i2c_smbus_read_byte from "
"reg failed in taos_probe(), err = %d\n", ret);
- goto fail1;
+ goto fail2;
}
buf[i] = ret;
}
@@ -842,58 +838,50 @@ static int __devinit taos_probe(struct i2c_client *clientp,
if (!taos_tsl258x_device(buf)) {
dev_info(&clientp->dev, "i2c device found but does not match "
"expected id in taos_probe()\n");
- goto fail1;
+ goto fail2;
}
ret = i2c_smbus_write_byte(clientp, (TSL258X_CMD_REG | TSL258X_CNTRL));
if (ret < 0) {
dev_err(&clientp->dev, "i2c_smbus_write_byte() to cmd reg "
"failed in taos_probe(), err = %d\n", ret);
- goto fail1;
+ goto fail2;
}
- chip->iio_dev = iio_allocate_device(0);
- if (!chip->iio_dev) {
- ret = -ENOMEM;
- dev_err(&clientp->dev, "iio allocation failed\n");
- goto fail1;
- }
-
- chip->iio_dev->info = &tsl2583_info;
- chip->iio_dev->dev.parent = &clientp->dev;
- chip->iio_dev->dev_data = (void *)(chip);
- chip->iio_dev->modes = INDIO_DIRECT_MODE;
- ret = iio_device_register(chip->iio_dev);
+ indio_dev->info = &tsl2583_info;
+ indio_dev->dev.parent = &clientp->dev;
+ indio_dev->modes = INDIO_DIRECT_MODE;
+ indio_dev->name = chip->client->name;
+ ret = iio_device_register(indio_dev);
if (ret) {
dev_err(&clientp->dev, "iio registration failed\n");
- goto fail1;
+ goto fail2;
}
/* Load up the V2 defaults (these are hard coded defaults for now) */
taos_defaults(chip);
/* Make sure the chip is on */
- taos_chip_on(clientp);
+ taos_chip_on(indio_dev);
dev_info(&clientp->dev, "Light sensor found.\n");
-
return 0;
-
fail1:
- kfree(chip);
-
+ iio_free_device(indio_dev);
+fail2:
return ret;
}
static int taos_suspend(struct i2c_client *client, pm_message_t state)
{
- struct tsl2583_chip *chip = i2c_get_clientdata(client);
+ struct iio_dev *indio_dev = i2c_get_clientdata(client);
+ struct tsl2583_chip *chip = iio_priv(indio_dev);
int ret = 0;
mutex_lock(&chip->als_mutex);
if (chip->taos_chip_status == TSL258X_CHIP_WORKING) {
- ret = taos_chip_off(client);
+ ret = taos_chip_off(indio_dev);
chip->taos_chip_status = TSL258X_CHIP_SUSPENDED;
}
@@ -903,13 +891,14 @@ static int taos_suspend(struct i2c_client *client, pm_message_t state)
static int taos_resume(struct i2c_client *client)
{
- struct tsl2583_chip *chip = i2c_get_clientdata(client);
+ struct iio_dev *indio_dev = i2c_get_clientdata(client);
+ struct tsl2583_chip *chip = iio_priv(indio_dev);
int ret = 0;
mutex_lock(&chip->als_mutex);
if (chip->taos_chip_status == TSL258X_CHIP_SUSPENDED)
- ret = taos_chip_on(client);
+ ret = taos_chip_on(indio_dev);
mutex_unlock(&chip->als_mutex);
return ret;
@@ -918,11 +907,8 @@ static int taos_resume(struct i2c_client *client)
static int __devexit taos_remove(struct i2c_client *client)
{
- struct tsl2583_chip *chip = i2c_get_clientdata(client);
-
- iio_device_unregister(chip->iio_dev);
+ iio_device_unregister(i2c_get_clientdata(client));
- kfree(chip);
return 0;
}
--
1.7.3.4
^ permalink raw reply related [flat|nested] 21+ messages in thread
* [PATCH 19/19] staging:iio: Remove deprecated dev_data from iio_dev.
2011-08-12 16:08 [PATCH 00/19] staging:iio:cleanups - post fixes Jonathan Cameron
` (17 preceding siblings ...)
2011-08-12 16:08 ` [PATCH 18/19] staging:iio:light:tsl2583 allocate chip state with iio_dev Jonathan Cameron
@ 2011-08-12 16:08 ` Jonathan Cameron
2011-08-23 20:32 ` [PATCH 00/19] staging:iio:cleanups - post fixes Greg KH
19 siblings, 0 replies; 21+ messages in thread
From: Jonathan Cameron @ 2011-08-12 16:08 UTC (permalink / raw)
To: greg; +Cc: linux-iio, Jonathan Cameron
The equivalent should always be done using iio_alllocate_device
with to create a private area for the driver and then iio_priv
to access it. There may be other uses for a private data pointer
but right now it just leads driver writers astray.
Signed-off-by: Jonathan Cameron <jic23@cam.ac.uk>
---
drivers/staging/iio/iio.h | 13 +------------
1 files changed, 1 insertions(+), 12 deletions(-)
diff --git a/drivers/staging/iio/iio.h b/drivers/staging/iio/iio.h
index 42254b4..d86a610 100644
--- a/drivers/staging/iio/iio.h
+++ b/drivers/staging/iio/iio.h
@@ -276,7 +276,6 @@ struct iio_info {
/**
* struct iio_dev - industrial I/O device
* @id: [INTERN] used to identify device internally
- * @dev_data: [DRIVER] device specific data
* @modes: [DRIVER] operating modes supported by device
* @currentmode: [DRIVER] current operating mode
* @dev: [DRIVER] device structure, should be assigned a parent
@@ -296,7 +295,7 @@ struct iio_info {
**/
struct iio_dev {
int id;
- void *dev_data;
+
int modes;
int currentmode;
struct device dev;
@@ -370,16 +369,6 @@ static inline struct iio_dev *to_iio_dev(struct device *d)
return container_of(d, struct iio_dev, dev);
};
-/**
- * iio_dev_get_devdata() - helper function gets device specific data
- * @d: the iio_dev associated with the device
- **/
-static inline void *iio_dev_get_devdata(struct iio_dev *d)
-{
- return d->dev_data;
-}
-
-
/* Can we make this smaller? */
#define IIO_ALIGN L1_CACHE_BYTES
/**
--
1.7.3.4
^ permalink raw reply related [flat|nested] 21+ messages in thread
* Re: [PATCH 00/19] staging:iio:cleanups - post fixes
2011-08-12 16:08 [PATCH 00/19] staging:iio:cleanups - post fixes Jonathan Cameron
` (18 preceding siblings ...)
2011-08-12 16:08 ` [PATCH 19/19] staging:iio: Remove deprecated dev_data from iio_dev Jonathan Cameron
@ 2011-08-23 20:32 ` Greg KH
19 siblings, 0 replies; 21+ messages in thread
From: Greg KH @ 2011-08-23 20:32 UTC (permalink / raw)
To: Jonathan Cameron; +Cc: linux-iio
On Fri, Aug 12, 2011 at 05:08:34PM +0100, Jonathan Cameron wrote:
> Hi Greg,
>
> Apply post the previous fixes set please.
>
> This is also hopefully a fairly uncontroversial set.
All applied.
greg k-h
^ permalink raw reply [flat|nested] 21+ messages in thread
end of thread, other threads:[~2011-08-23 20:32 UTC | newest]
Thread overview: 21+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2011-08-12 16:08 [PATCH 00/19] staging:iio:cleanups - post fixes Jonathan Cameron
2011-08-12 16:08 ` [PATCH 01/19] staging:iio:trivial sparse related cleanups Jonathan Cameron
2011-08-12 16:08 ` [PATCH 02/19] staging:iio:imu:adis16400: use strtobool for reset sysfs and don't assign unused tx members Jonathan Cameron
2011-08-12 16:08 ` [PATCH 03/19] staging:iio:imu:adis16400 remove now unused headers Jonathan Cameron
2011-08-12 16:08 ` [PATCH 04/19] staging:iio:triggers introduce iio_trigger_ops to take const bits out of iio_trig_structure Jonathan Cameron
2011-08-12 16:08 ` [PATCH 05/19] staging:iio:gyro:adis16260 remove some unused headers Jonathan Cameron
2011-08-12 16:08 ` [PATCH 06/19] staging:iio:imu:adis16400 remove " Jonathan Cameron
2011-08-12 16:08 ` [PATCH 07/19] staging:iio:gyro:adis16130 drop control of adc resolution Jonathan Cameron
2011-08-12 16:08 ` [PATCH 08/19] staging:iio:accel: usused header removals Jonathan Cameron
2011-08-12 16:08 ` [PATCH 09/19] staging:iio:adc: unused " Jonathan Cameron
2011-08-12 16:08 ` [PATCH 10/19] staging:iio:inclinometer.h remove as now unused Jonathan Cameron
2011-08-12 16:08 ` [PATCH 11/19] staging:iio:various header includes that should never have been Jonathan Cameron
2011-08-12 16:08 ` [PATCH 12/19] staging:iio:adc: header cleanup - remove unused Jonathan Cameron
2011-08-12 16:08 ` [PATCH 13/19] staging:iio:accel header housekeeping - remove unecessary includes Jonathan Cameron
2011-08-12 16:08 ` [PATCH 14/19] staging:iio:gyro and meter: header housecleaning Jonathan Cameron
2011-08-12 16:08 ` [PATCH 15/19] staging:iio:core flatten convenience function that only has one user Jonathan Cameron
2011-08-12 16:08 ` [PATCH 16/19] staging:iio:core squash trivial wrappers and use ida allocation func Jonathan Cameron
2011-08-12 16:08 ` [PATCH 17/19] staging:iio:sysfs cleanout header for unused definitions Jonathan Cameron
2011-08-12 16:08 ` [PATCH 18/19] staging:iio:light:tsl2583 allocate chip state with iio_dev Jonathan Cameron
2011-08-12 16:08 ` [PATCH 19/19] staging:iio: Remove deprecated dev_data from iio_dev Jonathan Cameron
2011-08-23 20:32 ` [PATCH 00/19] staging:iio:cleanups - post fixes Greg KH
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).