summaryrefslogtreecommitdiffstats
path: root/include/linux/iio/iio.h
diff options
context:
space:
mode:
authorJonathan Cameron <jic23@kernel.org>2013-09-08 14:57:00 +0100
committerJonathan Cameron <jic23@kernel.org>2013-09-15 17:43:20 +0100
commit3704432fb1fd8ab2df114bad6df752381246b609 (patch)
tree554c46e264866bc2be767434586a68bf5ed7c75c /include/linux/iio/iio.h
parent9761696f2be276b169b77bcf359bc50a251c9280 (diff)
downloadblackbird-op-linux-3704432fb1fd8ab2df114bad6df752381246b609.tar.gz
blackbird-op-linux-3704432fb1fd8ab2df114bad6df752381246b609.zip
iio: refactor info mask and ext_info attribute creation.
Introduce an enum to specify whether the attribute is separate or shared. Factor out the bitmap handling for loop into a separate function. Tidy up error handling and add a NULL assignment to squish a false positive warning from GCC. Change ext_info shared type from boolean to enum and update in all drivers. Signed-off-by: Jonathan Cameron <jic23@kernel.org> Reviewed-by: Lars-Peter Clausen <lars@metafoo.de>
Diffstat (limited to 'include/linux/iio/iio.h')
-rw-r--r--include/linux/iio/iio.h9
1 files changed, 7 insertions, 2 deletions
diff --git a/include/linux/iio/iio.h b/include/linux/iio/iio.h
index bc408e2def40..21de272f1eb6 100644
--- a/include/linux/iio/iio.h
+++ b/include/linux/iio/iio.h
@@ -39,6 +39,11 @@ enum iio_chan_info_enum {
IIO_CHAN_INFO_INT_TIME,
};
+enum iio_shared_by {
+ IIO_SEPARATE,
+ IIO_SHARED_BY_TYPE
+};
+
enum iio_endian {
IIO_CPU,
IIO_BE,
@@ -58,7 +63,7 @@ struct iio_dev;
*/
struct iio_chan_spec_ext_info {
const char *name;
- bool shared;
+ enum iio_shared_by shared;
ssize_t (*read)(struct iio_dev *, uintptr_t private,
struct iio_chan_spec const *, char *buf);
ssize_t (*write)(struct iio_dev *, uintptr_t private,
@@ -126,7 +131,7 @@ ssize_t iio_enum_write(struct iio_dev *indio_dev,
#define IIO_ENUM_AVAILABLE(_name, _e) \
{ \
.name = (_name "_available"), \
- .shared = true, \
+ .shared = IIO_SHARED_BY_TYPE, \
.read = iio_enum_available_read, \
.private = (uintptr_t)(_e), \
}
OpenPOWER on IntegriCloud