Re: [PATCH] staging:iio: header reorganization

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Oops - forgot to say what this sits on.
https://github.com/jic23/linux-iio master branch.

That means it may well clash with a lot of the patches that have
gone to Greg over last day or so.


> Issue brought up by Lars-Peter Clausen. This is a varient of what
> he suggested.
> 
> io/iio.h for driver stuff (has to include types.h)
> 	Sub files for the bits drivers may or may not use
> 	iio/sysfs.h
> 	iio/buffer.h (contents of current buffer_generic.h)
> 	(obviously anything offering events will need events.h as well)
> iio/types.h for the enums that matter to both
> 	iio_chan_type, iio_modifier
> iio/events.h for the event code stuff
> 	IIO_EVENT_CODE and friends.  + everything in chrdev.h  So this
> 	is the stuff that userspace cares about.
> 	Also include iio_event_type, iio_event_direction
> 
> Thus iio drivers include iio.h + as required
> events.h
> sysfs.h
> buffer.h
> 
> in kernel users (once that interface is merged) will need inkern.h
> which will pull in types.h
> 
> Userspace will need just events.h (which pulls in types.h) to get
> everything they need to know about.  Buffer userspace access doesn't
> currently need any core defines. All information about the data
> format is passed through sysfs.
> 
> Signed-off-by: Jonathan Cameron <jic23@xxxxxxxxx>
> ---
>  drivers/staging/iio/accel/adis16201_core.c      |    2 +-
>  drivers/staging/iio/accel/adis16203_core.c      |    2 +-
>  drivers/staging/iio/accel/adis16204_core.c      |    2 +-
>  drivers/staging/iio/accel/adis16209_core.c      |    2 +-
>  drivers/staging/iio/accel/adis16240_core.c      |    2 +-
>  drivers/staging/iio/accel/lis3l02dq_core.c      |    3 +-
>  drivers/staging/iio/accel/sca3000_core.c        |    3 +-
>  drivers/staging/iio/accel/sca3000_ring.c        |    2 +-
>  drivers/staging/iio/adc/ad7150.c                |    2 +-
>  drivers/staging/iio/adc/ad7192.c                |    2 +-
>  drivers/staging/iio/adc/ad7280a.c               |    1 +
>  drivers/staging/iio/adc/ad7291.c                |    1 +
>  drivers/staging/iio/adc/ad7298_core.c           |    2 +-
>  drivers/staging/iio/adc/ad7298_ring.c           |    2 +-
>  drivers/staging/iio/adc/ad7476_core.c           |    2 +-
>  drivers/staging/iio/adc/ad7476_ring.c           |    2 +-
>  drivers/staging/iio/adc/ad7606_core.c           |    2 +-
>  drivers/staging/iio/adc/ad7606_ring.c           |    2 +-
>  drivers/staging/iio/adc/ad7793.c                |    2 +-
>  drivers/staging/iio/adc/ad7816.c                |    1 +
>  drivers/staging/iio/adc/ad7887_core.c           |    2 +-
>  drivers/staging/iio/adc/ad7887_ring.c           |    2 +-
>  drivers/staging/iio/adc/ad799x_core.c           |    3 +-
>  drivers/staging/iio/adc/ad799x_ring.c           |    2 +-
>  drivers/staging/iio/adc/adt7310.c               |    2 +-
>  drivers/staging/iio/adc/adt7410.c               |    1 +
>  drivers/staging/iio/adc/adt75.c                 |    2 +-
>  drivers/staging/iio/adc/max1363_core.c          |    3 +-
>  drivers/staging/iio/adc/max1363_ring.c          |    2 +-
>  drivers/staging/iio/addac/adt7316.c             |    1 +
>  drivers/staging/iio/buffer.h                    |  242 ++++++++++++++++++++++
>  drivers/staging/iio/buffer_generic.h            |  243 -----------------------
>  drivers/staging/iio/chrdev.h                    |   25 ---
>  drivers/staging/iio/dac/ad5504.c                |    1 +
>  drivers/staging/iio/events.h                    |   71 +++++++
>  drivers/staging/iio/gyro/adis16260_core.c       |    2 +-
>  drivers/staging/iio/iio.h                       |   38 +----
>  drivers/staging/iio/iio_simple_dummy.c          |    3 +-
>  drivers/staging/iio/iio_simple_dummy_events.c   |    1 +
>  drivers/staging/iio/impedance-analyzer/ad5933.c |    2 +-
>  drivers/staging/iio/imu/adis16400_core.c        |    2 +-
>  drivers/staging/iio/industrialio-buffer.c       |    2 +-
>  drivers/staging/iio/industrialio-core.c         |    2 +-
>  drivers/staging/iio/kfifo_buf.h                 |    2 +-
>  drivers/staging/iio/light/tsl2563.c             |    1 +
>  drivers/staging/iio/meter/ade7758_core.c        |    2 +-
>  drivers/staging/iio/ring_sw.h                   |    2 +-
>  drivers/staging/iio/sysfs.h                     |   43 ----
>  drivers/staging/iio/types.h                     |   49 +++++
>  49 files changed, 410 insertions(+), 382 deletions(-)
> 
> diff --git a/drivers/staging/iio/accel/adis16201_core.c b/drivers/staging/iio/accel/adis16201_core.c
> index 1c5dad5..1283519 100644
> --- a/drivers/staging/iio/accel/adis16201_core.c
> +++ b/drivers/staging/iio/accel/adis16201_core.c
> @@ -17,7 +17,7 @@
>  
>  #include "../iio.h"
>  #include "../sysfs.h"
> -#include "../buffer_generic.h"
> +#include "../buffer.h"
>  
>  #include "adis16201.h"
>  
> diff --git a/drivers/staging/iio/accel/adis16203_core.c b/drivers/staging/iio/accel/adis16203_core.c
> index 8a33374..5483b59 100644
> --- a/drivers/staging/iio/accel/adis16203_core.c
> +++ b/drivers/staging/iio/accel/adis16203_core.c
> @@ -17,7 +17,7 @@
>  
>  #include "../iio.h"
>  #include "../sysfs.h"
> -#include "../buffer_generic.h"
> +#include "../buffer.h"
>  
>  #include "adis16203.h"
>  
> diff --git a/drivers/staging/iio/accel/adis16204_core.c b/drivers/staging/iio/accel/adis16204_core.c
> index cc6eb26..0ae5706 100644
> --- a/drivers/staging/iio/accel/adis16204_core.c
> +++ b/drivers/staging/iio/accel/adis16204_core.c
> @@ -21,7 +21,7 @@
>  
>  #include "../iio.h"
>  #include "../sysfs.h"
> -#include "../buffer_generic.h"
> +#include "../buffer.h"
>  
>  #include "adis16204.h"
>  
> diff --git a/drivers/staging/iio/accel/adis16209_core.c b/drivers/staging/iio/accel/adis16209_core.c
> index 0a8571b..827499f 100644
> --- a/drivers/staging/iio/accel/adis16209_core.c
> +++ b/drivers/staging/iio/accel/adis16209_core.c
> @@ -18,7 +18,7 @@
>  
>  #include "../iio.h"
>  #include "../sysfs.h"
> -#include "../buffer_generic.h"
> +#include "../buffer.h"
>  
>  #include "adis16209.h"
>  
> diff --git a/drivers/staging/iio/accel/adis16240_core.c b/drivers/staging/iio/accel/adis16240_core.c
> index b8be292..8123fe3 100644
> --- a/drivers/staging/iio/accel/adis16240_core.c
> +++ b/drivers/staging/iio/accel/adis16240_core.c
> @@ -21,7 +21,7 @@
>  
>  #include "../iio.h"
>  #include "../sysfs.h"
> -#include "../buffer_generic.h"
> +#include "../buffer.h"
>  
>  #include "adis16240.h"
>  
> diff --git a/drivers/staging/iio/accel/lis3l02dq_core.c b/drivers/staging/iio/accel/lis3l02dq_core.c
> index 559545a..358a9f6 100644
> --- a/drivers/staging/iio/accel/lis3l02dq_core.c
> +++ b/drivers/staging/iio/accel/lis3l02dq_core.c
> @@ -25,7 +25,8 @@
>  
>  #include "../iio.h"
>  #include "../sysfs.h"
> -#include "../buffer_generic.h"
> +#include "../events.h"
> +#include "../buffer.h"
>  
>  #include "lis3l02dq.h"
>  
> diff --git a/drivers/staging/iio/accel/sca3000_core.c b/drivers/staging/iio/accel/sca3000_core.c
> index 62cdef4..5f7bed6 100644
> --- a/drivers/staging/iio/accel/sca3000_core.c
> +++ b/drivers/staging/iio/accel/sca3000_core.c
> @@ -21,7 +21,8 @@
>  #include <linux/module.h>
>  #include "../iio.h"
>  #include "../sysfs.h"
> -#include "../buffer_generic.h"
> +#include "../events.h"
> +#include "../buffer.h"
>  
>  #include "sca3000.h"
>  
> diff --git a/drivers/staging/iio/accel/sca3000_ring.c b/drivers/staging/iio/accel/sca3000_ring.c
> index 4a9a01d..685ded8 100644
> --- a/drivers/staging/iio/accel/sca3000_ring.c
> +++ b/drivers/staging/iio/accel/sca3000_ring.c
> @@ -20,7 +20,7 @@
>  
>  #include "../iio.h"
>  #include "../sysfs.h"
> -#include "../buffer_generic.h"
> +#include "../buffer.h"
>  #include "../ring_hw.h"
>  #include "sca3000.h"
>  
> diff --git a/drivers/staging/iio/adc/ad7150.c b/drivers/staging/iio/adc/ad7150.c
> index e185f0e..6de884b 100644
> --- a/drivers/staging/iio/adc/ad7150.c
> +++ b/drivers/staging/iio/adc/ad7150.c
> @@ -15,7 +15,7 @@
>  
>  #include "../iio.h"
>  #include "../sysfs.h"
> -
> +#include "../events.h"
>  /*
>   * AD7150 registers definition
>   */
> diff --git a/drivers/staging/iio/adc/ad7192.c b/drivers/staging/iio/adc/ad7192.c
> index 31c376b..b16130b 100644
> --- a/drivers/staging/iio/adc/ad7192.c
> +++ b/drivers/staging/iio/adc/ad7192.c
> @@ -19,7 +19,7 @@
>  
>  #include "../iio.h"
>  #include "../sysfs.h"
> -#include "../buffer_generic.h"
> +#include "../buffer.h"
>  #include "../ring_sw.h"
>  #include "../trigger.h"
>  #include "../trigger_consumer.h"
> diff --git a/drivers/staging/iio/adc/ad7280a.c b/drivers/staging/iio/adc/ad7280a.c
> index 372d059..5ccda4b 100644
> --- a/drivers/staging/iio/adc/ad7280a.c
> +++ b/drivers/staging/iio/adc/ad7280a.c
> @@ -18,6 +18,7 @@
>  
>  #include "../iio.h"
>  #include "../sysfs.h"
> +#include "../events.h"
>  
>  #include "ad7280a.h"
>  
> diff --git a/drivers/staging/iio/adc/ad7291.c b/drivers/staging/iio/adc/ad7291.c
> index 10e79e8..e5f352b 100644
> --- a/drivers/staging/iio/adc/ad7291.c
> +++ b/drivers/staging/iio/adc/ad7291.c
> @@ -19,6 +19,7 @@
>  
>  #include "../iio.h"
>  #include "../sysfs.h"
> +#include "../events.h"
>  
>  /*
>   * Simplified handling
> diff --git a/drivers/staging/iio/adc/ad7298_core.c b/drivers/staging/iio/adc/ad7298_core.c
> index c1de73a..445b071 100644
> --- a/drivers/staging/iio/adc/ad7298_core.c
> +++ b/drivers/staging/iio/adc/ad7298_core.c
> @@ -18,7 +18,7 @@
>  
>  #include "../iio.h"
>  #include "../sysfs.h"
> -#include "../buffer_generic.h"
> +#include "../buffer.h"
>  
>  #include "ad7298.h"
>  
> diff --git a/drivers/staging/iio/adc/ad7298_ring.c b/drivers/staging/iio/adc/ad7298_ring.c
> index 47630d5..192328e 100644
> --- a/drivers/staging/iio/adc/ad7298_ring.c
> +++ b/drivers/staging/iio/adc/ad7298_ring.c
> @@ -12,7 +12,7 @@
>  #include <linux/spi/spi.h>
>  
>  #include "../iio.h"
> -#include "../buffer_generic.h"
> +#include "../buffer.h"
>  #include "../ring_sw.h"
>  #include "../trigger_consumer.h"
>  
> diff --git a/drivers/staging/iio/adc/ad7476_core.c b/drivers/staging/iio/adc/ad7476_core.c
> index fd79fac..1347313 100644
> --- a/drivers/staging/iio/adc/ad7476_core.c
> +++ b/drivers/staging/iio/adc/ad7476_core.c
> @@ -17,7 +17,7 @@
>  
>  #include "../iio.h"
>  #include "../sysfs.h"
> -#include "../buffer_generic.h"
> +#include "../buffer.h"
>  
>  #include "ad7476.h"
>  
> diff --git a/drivers/staging/iio/adc/ad7476_ring.c b/drivers/staging/iio/adc/ad7476_ring.c
> index e82c1a4..0961887 100644
> --- a/drivers/staging/iio/adc/ad7476_ring.c
> +++ b/drivers/staging/iio/adc/ad7476_ring.c
> @@ -14,7 +14,7 @@
>  #include <linux/spi/spi.h>
>  
>  #include "../iio.h"
> -#include "../buffer_generic.h"
> +#include "../buffer.h"
>  #include "../ring_sw.h"
>  #include "../trigger_consumer.h"
>  
> diff --git a/drivers/staging/iio/adc/ad7606_core.c b/drivers/staging/iio/adc/ad7606_core.c
> index 54423ab..5317483 100644
> --- a/drivers/staging/iio/adc/ad7606_core.c
> +++ b/drivers/staging/iio/adc/ad7606_core.c
> @@ -20,7 +20,7 @@
>  
>  #include "../iio.h"
>  #include "../sysfs.h"
> -#include "../buffer_generic.h"
> +#include "../buffer.h"
>  
>  #include "ad7606.h"
>  
> diff --git a/drivers/staging/iio/adc/ad7606_ring.c b/drivers/staging/iio/adc/ad7606_ring.c
> index 20927fd..af6780a 100644
> --- a/drivers/staging/iio/adc/ad7606_ring.c
> +++ b/drivers/staging/iio/adc/ad7606_ring.c
> @@ -12,7 +12,7 @@
>  #include <linux/slab.h>
>  
>  #include "../iio.h"
> -#include "../buffer_generic.h"
> +#include "../buffer.h"
>  #include "../ring_sw.h"
>  #include "../trigger_consumer.h"
>  
> diff --git a/drivers/staging/iio/adc/ad7793.c b/drivers/staging/iio/adc/ad7793.c
> index a831b92..7d3a5af 100644
> --- a/drivers/staging/iio/adc/ad7793.c
> +++ b/drivers/staging/iio/adc/ad7793.c
> @@ -19,7 +19,7 @@
>  
>  #include "../iio.h"
>  #include "../sysfs.h"
> -#include "../buffer_generic.h"
> +#include "../buffer.h"
>  #include "../ring_sw.h"
>  #include "../trigger.h"
>  #include "../trigger_consumer.h"
> diff --git a/drivers/staging/iio/adc/ad7816.c b/drivers/staging/iio/adc/ad7816.c
> index bdb9049..7a344a2 100644
> --- a/drivers/staging/iio/adc/ad7816.c
> +++ b/drivers/staging/iio/adc/ad7816.c
> @@ -18,6 +18,7 @@
>  
>  #include "../iio.h"
>  #include "../sysfs.h"
> +#include "../events.h"
>  
>  /*
>   * AD7816 config masks
> diff --git a/drivers/staging/iio/adc/ad7887_core.c b/drivers/staging/iio/adc/ad7887_core.c
> index 609dcd5..a7baa9b 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 "../buffer_generic.h"
> +#include "../buffer.h"
>  
>  
>  #include "ad7887.h"
> diff --git a/drivers/staging/iio/adc/ad7887_ring.c b/drivers/staging/iio/adc/ad7887_ring.c
> index cb74cad..fbe21b5 100644
> --- a/drivers/staging/iio/adc/ad7887_ring.c
> +++ b/drivers/staging/iio/adc/ad7887_ring.c
> @@ -13,7 +13,7 @@
>  #include <linux/spi/spi.h>
>  
>  #include "../iio.h"
> -#include "../buffer_generic.h"
> +#include "../buffer.h"
>  #include "../ring_sw.h"
>  #include "../trigger_consumer.h"
>  
> diff --git a/drivers/staging/iio/adc/ad799x_core.c b/drivers/staging/iio/adc/ad799x_core.c
> index ee6cd79..64ac316 100644
> --- a/drivers/staging/iio/adc/ad799x_core.c
> +++ b/drivers/staging/iio/adc/ad799x_core.c
> @@ -35,7 +35,8 @@
>  
>  #include "../iio.h"
>  #include "../sysfs.h"
> -#include "../buffer_generic.h"
> +#include "../events.h"
> +#include "../buffer.h"
>  
>  #include "ad799x.h"
>  
> diff --git a/drivers/staging/iio/adc/ad799x_ring.c b/drivers/staging/iio/adc/ad799x_ring.c
> index e3f4698..b215a1f 100644
> --- a/drivers/staging/iio/adc/ad799x_ring.c
> +++ b/drivers/staging/iio/adc/ad799x_ring.c
> @@ -17,7 +17,7 @@
>  #include <linux/bitops.h>
>  
>  #include "../iio.h"
> -#include "../buffer_generic.h"
> +#include "../buffer.h"
>  #include "../ring_sw.h"
>  #include "../trigger_consumer.h"
>  
> diff --git a/drivers/staging/iio/adc/adt7310.c b/drivers/staging/iio/adc/adt7310.c
> index c9e0be3..c937ac1 100644
> --- a/drivers/staging/iio/adc/adt7310.c
> +++ b/drivers/staging/iio/adc/adt7310.c
> @@ -17,7 +17,7 @@
>  
>  #include "../iio.h"
>  #include "../sysfs.h"
> -
> +#include "../events.h"
>  /*
>   * ADT7310 registers definition
>   */
> diff --git a/drivers/staging/iio/adc/adt7410.c b/drivers/staging/iio/adc/adt7410.c
> index a289e42..16467a7 100644
> --- a/drivers/staging/iio/adc/adt7410.c
> +++ b/drivers/staging/iio/adc/adt7410.c
> @@ -17,6 +17,7 @@
>  
>  #include "../iio.h"
>  #include "../sysfs.h"
> +#include "../events.h"
>  
>  /*
>   * ADT7410 registers definition
> diff --git a/drivers/staging/iio/adc/adt75.c b/drivers/staging/iio/adc/adt75.c
> index a677cfc..8d4eb98 100644
> --- a/drivers/staging/iio/adc/adt75.c
> +++ b/drivers/staging/iio/adc/adt75.c
> @@ -16,7 +16,7 @@
>  
>  #include "../iio.h"
>  #include "../sysfs.h"
> -
> +#include "../events.h"
>  /*
>   * ADT75 registers definition
>   */
> diff --git a/drivers/staging/iio/adc/max1363_core.c b/drivers/staging/iio/adc/max1363_core.c
> index 8f19d2d..56783d6 100644
> --- a/drivers/staging/iio/adc/max1363_core.c
> +++ b/drivers/staging/iio/adc/max1363_core.c
> @@ -34,7 +34,8 @@
>  
>  #include "../iio.h"
>  #include "../sysfs.h"
> -#include "../buffer_generic.h"
> +#include "../events.h"
> +#include "../buffer.h"
>  
>  #include "max1363.h"
>  
> diff --git a/drivers/staging/iio/adc/max1363_ring.c b/drivers/staging/iio/adc/max1363_ring.c
> index 294dec9..317d8ac 100644
> --- a/drivers/staging/iio/adc/max1363_ring.c
> +++ b/drivers/staging/iio/adc/max1363_ring.c
> @@ -15,7 +15,7 @@
>  #include <linux/bitops.h>
>  
>  #include "../iio.h"
> -#include "../buffer_generic.h"
> +#include "../buffer.h"
>  #include "../ring_sw.h"
>  #include "../trigger_consumer.h"
>  
> diff --git a/drivers/staging/iio/addac/adt7316.c b/drivers/staging/iio/addac/adt7316.c
> index 8df2470..13c3929 100644
> --- a/drivers/staging/iio/addac/adt7316.c
> +++ b/drivers/staging/iio/addac/adt7316.c
> @@ -20,6 +20,7 @@
>  #include <linux/module.h>
>  
>  #include "../iio.h"
> +#include "../events.h"
>  #include "../sysfs.h"
>  #include "adt7316.h"
>  
> diff --git a/drivers/staging/iio/buffer.h b/drivers/staging/iio/buffer.h
> new file mode 100644
> index 0000000..8d5505eb
> --- /dev/null
> +++ b/drivers/staging/iio/buffer.h
> @@ -0,0 +1,242 @@
> +/* The industrial I/O core - generic buffer interfaces.
> + *
> + * Copyright (c) 2008 Jonathan Cameron
> + *
> + * This program is free software; you can redistribute it and/or modify it
> + * under the terms of the GNU General Public License version 2 as published by
> + * the Free Software Foundation.
> + */
> +
> +#ifndef _IIO_BUFFER_GENERIC_H_
> +#define _IIO_BUFFER_GENERIC_H_
> +#include <linux/sysfs.h>
> +#include "iio.h"
> +
> +#ifdef CONFIG_IIO_BUFFER
> +
> +struct iio_buffer;
> +
> +/**
> + * struct iio_buffer_access_funcs - access functions for buffers.
> + * @mark_in_use:	reference counting, typically to prevent module removal
> + * @unmark_in_use:	reduce reference count when no longer using buffer
> + * @store_to:		actually store stuff to the buffer
> + * @read_last:		get the last element stored
> + * @read_first_n:	try to get a specified number of elements (must exist)
> + * @mark_param_change:	notify buffer that some relevant parameter has changed
> + *			Often this means the underlying storage may need to
> + *			change.
> + * @request_update:	if a parameter change has been marked, update underlying
> + *			storage.
> + * @get_bytes_per_datum:get current bytes per datum
> + * @set_bytes_per_datum:set number of bytes per datum
> + * @get_length:		get number of datums in buffer
> + * @set_length:		set number of datums in buffer
> + * @is_enabled:		query if buffer is currently being used
> + * @enable:		enable the buffer
> + *
> + * The purpose of this structure is to make the buffer element
> + * modular as event for a given driver, different usecases may require
> + * different buffer designs (space efficiency vs speed for example).
> + *
> + * It is worth noting that a given buffer implementation may only support a
> + * small proportion of these functions.  The core code 'should' cope fine with
> + * any of them not existing.
> + **/
> +struct iio_buffer_access_funcs {
> +	void (*mark_in_use)(struct iio_buffer *buffer);
> +	void (*unmark_in_use)(struct iio_buffer *buffer);
> +
> +	int (*store_to)(struct iio_buffer *buffer, u8 *data, s64 timestamp);
> +	int (*read_last)(struct iio_buffer *buffer, u8 *data);
> +	int (*read_first_n)(struct iio_buffer *buffer,
> +			    size_t n,
> +			    char __user *buf);
> +
> +	int (*mark_param_change)(struct iio_buffer *buffer);
> +	int (*request_update)(struct iio_buffer *buffer);
> +
> +	int (*get_bytes_per_datum)(struct iio_buffer *buffer);
> +	int (*set_bytes_per_datum)(struct iio_buffer *buffer, size_t bpd);
> +	int (*get_length)(struct iio_buffer *buffer);
> +	int (*set_length)(struct iio_buffer *buffer, int length);
> +
> +	int (*is_enabled)(struct iio_buffer *buffer);
> +	int (*enable)(struct iio_buffer *buffer);
> +};
> +
> +/**
> + * struct iio_buffer_setup_ops - buffer setup related callbacks
> + * @preenable:		[DRIVER] function to run prior to marking buffer enabled
> + * @postenable:		[DRIVER] function to run after marking buffer enabled
> + * @predisable:		[DRIVER] function to run prior to marking buffer
> + *			disabled
> + * @postdisable:	[DRIVER] function to run after marking buffer disabled
> + */
> +struct iio_buffer_setup_ops {
> +	int				(*preenable)(struct iio_dev *);
> +	int				(*postenable)(struct iio_dev *);
> +	int				(*predisable)(struct iio_dev *);
> +	int				(*postdisable)(struct iio_dev *);
> +};
> +
> +/**
> + * struct iio_buffer - general buffer structure
> + * @indio_dev:		industrial I/O device structure
> + * @owner:		module that owns the buffer (for ref counting)
> + * @length:		[DEVICE] number of datums in buffer
> + * @bytes_per_datum:	[DEVICE] size of individual datum including timestamp
> + * @bpe:		[DEVICE] size of individual channel value
> + * @scan_el_attrs:	[DRIVER] control of scan elements if that scan mode
> + *			control method is used
> + * @scan_count:	[INTERN] the number of elements in the current scan mode
> + * @scan_mask:		[INTERN] bitmask used in masking scan mode elements
> + * @scan_timestamp:	[INTERN] does the scan mode include a timestamp
> + * @access:		[DRIVER] buffer access functions associated with the
> + *			implementation.
> + * @flags:		[INTERN] file ops related flags including busy flag.
> + * @demux_list:		[INTERN] list of operations required to demux the scan.
> + * @demux_bounce:	[INTERN] buffer for doing gather from incoming scan.
> + **/
> +struct iio_buffer {
> +	struct iio_dev				*indio_dev;
> +	struct module				*owner;
> +	int					length;
> +	int					bytes_per_datum;
> +	int					bpe;
> +	struct attribute_group			*scan_el_attrs;
> +	int					scan_count;
> +	long					*scan_mask;
> +	bool					scan_timestamp;
> +	const struct iio_buffer_access_funcs	*access;
> +	const struct iio_buffer_setup_ops		*setup_ops;
> +	struct list_head			scan_el_dev_attr_list;
> +	struct attribute_group			scan_el_group;
> +	wait_queue_head_t			pollq;
> +	bool					stufftoread;
> +	unsigned long				flags;
> +	const struct attribute_group *attrs;
> +	struct list_head			demux_list;
> +	unsigned char				*demux_bounce;
> +};
> +
> +/**
> + * iio_buffer_init() - Initialize the buffer structure
> + * @buffer: buffer to be initialized
> + * @indio_dev: the iio device the buffer is assocated with
> + **/
> +void iio_buffer_init(struct iio_buffer *buffer,
> +			  struct iio_dev *indio_dev);
> +
> +void iio_buffer_deinit(struct iio_buffer *buffer);
> +
> +/**
> + * __iio_update_buffer() - update common elements of buffers
> + * @buffer:		buffer that is the event source
> + * @bytes_per_datum:	size of individual datum including timestamp
> + * @length:		number of datums in buffer
> + **/
> +static inline void __iio_update_buffer(struct iio_buffer *buffer,
> +				       int bytes_per_datum, int length)
> +{
> +	buffer->bytes_per_datum = bytes_per_datum;
> +	buffer->length = length;
> +}
> +
> +int iio_scan_mask_query(struct iio_buffer *buffer, int bit);
> +
> +/**
> + * iio_scan_mask_set() - set particular bit in the scan mask
> + * @buffer: the buffer whose scan mask we are interested in
> + * @bit: the bit to be set.
> + **/
> +int iio_scan_mask_set(struct iio_buffer *buffer, int bit);
> +
> +#define to_iio_buffer(d)				\
> +	container_of(d, struct iio_buffer, dev)
> +
> +/**
> + * iio_push_to_buffer() - push to a registered buffer.
> + * @buffer:		IIO buffer structure for device
> + * @scan:		Full scan.
> + * @timestamp:
> + */
> +int iio_push_to_buffer(struct iio_buffer *buffer, unsigned char *data,
> +		       s64 timestamp);
> +
> +int iio_update_demux(struct iio_dev *indio_dev);
> +
> +/**
> + * iio_buffer_register() - register the buffer with IIO core
> + * @indio_dev: device with the buffer to be registered
> + **/
> +int iio_buffer_register(struct iio_dev *indio_dev,
> +			const struct iio_chan_spec *channels,
> +			int num_channels);
> +
> +/**
> + * iio_buffer_unregister() - unregister the buffer from IIO core
> + * @indio_dev: the device with the buffer to be unregistered
> + **/
> +void iio_buffer_unregister(struct iio_dev *indio_dev);
> +
> +/**
> + * iio_buffer_read_length() - attr func to get number of datums in the buffer
> + **/
> +ssize_t iio_buffer_read_length(struct device *dev,
> +			       struct device_attribute *attr,
> +			       char *buf);
> +/**
> + * iio_buffer_write_length() - attr func to set number of datums in the buffer
> + **/
> +ssize_t iio_buffer_write_length(struct device *dev,
> +			      struct device_attribute *attr,
> +			      const char *buf,
> +			      size_t len);
> +/**
> + * iio_buffer_read_bytes_per_datum() - attr for number of bytes in whole datum
> + **/
> +ssize_t iio_buffer_read_bytes_per_datum(struct device *dev,
> +					struct device_attribute *attr,
> +					char *buf);
> +/**
> + * iio_buffer_store_enable() - attr to turn the buffer on
> + **/
> +ssize_t iio_buffer_store_enable(struct device *dev,
> +				struct device_attribute *attr,
> +				const char *buf,
> +				size_t len);
> +/**
> + * iio_buffer_show_enable() - attr to see if the buffer is on
> + **/
> +ssize_t iio_buffer_show_enable(struct device *dev,
> +			       struct device_attribute *attr,
> +			       char *buf);
> +#define IIO_BUFFER_LENGTH_ATTR DEVICE_ATTR(length, S_IRUGO | S_IWUSR,	\
> +					   iio_buffer_read_length,	\
> +					   iio_buffer_write_length)
> +#define IIO_BUFFER_BYTES_PER_DATUM_ATTR					\
> +	DEVICE_ATTR(bytes_per_datum, S_IRUGO | S_IWUSR,			\
> +		    iio_buffer_read_bytes_per_datum, NULL)
> +
> +#define IIO_BUFFER_ENABLE_ATTR DEVICE_ATTR(enable, S_IRUGO | S_IWUSR,	\
> +					   iio_buffer_show_enable,	\
> +					   iio_buffer_store_enable)
> +
> +int iio_sw_buffer_preenable(struct iio_dev *indio_dev);
> +
> +#else /* CONFIG_IIO_BUFFER */
> +
> +static inline int iio_buffer_register(struct iio_dev *indio_dev,
> +					   struct iio_chan_spec *channels,
> +					   int num_channels)
> +{
> +	return 0;
> +}
> +
> +static inline void iio_buffer_unregister(struct iio_dev *indio_dev)
> +{};
> +
> +#endif /* CONFIG_IIO_BUFFER */
> +
> +#endif /* _IIO_BUFFER_GENERIC_H_ */
> diff --git a/drivers/staging/iio/buffer_generic.h b/drivers/staging/iio/buffer_generic.h
> deleted file mode 100644
> index 1b0e781..0000000
> --- a/drivers/staging/iio/buffer_generic.h
> +++ /dev/null
> @@ -1,243 +0,0 @@
> -/* The industrial I/O core - generic buffer interfaces.
> - *
> - * Copyright (c) 2008 Jonathan Cameron
> - *
> - * This program is free software; you can redistribute it and/or modify it
> - * under the terms of the GNU General Public License version 2 as published by
> - * the Free Software Foundation.
> - */
> -
> -#ifndef _IIO_BUFFER_GENERIC_H_
> -#define _IIO_BUFFER_GENERIC_H_
> -#include <linux/sysfs.h>
> -#include "iio.h"
> -#include "chrdev.h"
> -
> -#ifdef CONFIG_IIO_BUFFER
> -
> -struct iio_buffer;
> -
> -/**
> - * struct iio_buffer_access_funcs - access functions for buffers.
> - * @mark_in_use:	reference counting, typically to prevent module removal
> - * @unmark_in_use:	reduce reference count when no longer using buffer
> - * @store_to:		actually store stuff to the buffer
> - * @read_last:		get the last element stored
> - * @read_first_n:	try to get a specified number of elements (must exist)
> - * @mark_param_change:	notify buffer that some relevant parameter has changed
> - *			Often this means the underlying storage may need to
> - *			change.
> - * @request_update:	if a parameter change has been marked, update underlying
> - *			storage.
> - * @get_bytes_per_datum:get current bytes per datum
> - * @set_bytes_per_datum:set number of bytes per datum
> - * @get_length:		get number of datums in buffer
> - * @set_length:		set number of datums in buffer
> - * @is_enabled:		query if buffer is currently being used
> - * @enable:		enable the buffer
> - *
> - * The purpose of this structure is to make the buffer element
> - * modular as event for a given driver, different usecases may require
> - * different buffer designs (space efficiency vs speed for example).
> - *
> - * It is worth noting that a given buffer implementation may only support a
> - * small proportion of these functions.  The core code 'should' cope fine with
> - * any of them not existing.
> - **/
> -struct iio_buffer_access_funcs {
> -	void (*mark_in_use)(struct iio_buffer *buffer);
> -	void (*unmark_in_use)(struct iio_buffer *buffer);
> -
> -	int (*store_to)(struct iio_buffer *buffer, u8 *data, s64 timestamp);
> -	int (*read_last)(struct iio_buffer *buffer, u8 *data);
> -	int (*read_first_n)(struct iio_buffer *buffer,
> -			    size_t n,
> -			    char __user *buf);
> -
> -	int (*mark_param_change)(struct iio_buffer *buffer);
> -	int (*request_update)(struct iio_buffer *buffer);
> -
> -	int (*get_bytes_per_datum)(struct iio_buffer *buffer);
> -	int (*set_bytes_per_datum)(struct iio_buffer *buffer, size_t bpd);
> -	int (*get_length)(struct iio_buffer *buffer);
> -	int (*set_length)(struct iio_buffer *buffer, int length);
> -
> -	int (*is_enabled)(struct iio_buffer *buffer);
> -	int (*enable)(struct iio_buffer *buffer);
> -};
> -
> -/**
> - * struct iio_buffer_setup_ops - buffer setup related callbacks
> - * @preenable:		[DRIVER] function to run prior to marking buffer enabled
> - * @postenable:		[DRIVER] function to run after marking buffer enabled
> - * @predisable:		[DRIVER] function to run prior to marking buffer
> - *			disabled
> - * @postdisable:	[DRIVER] function to run after marking buffer disabled
> - */
> -struct iio_buffer_setup_ops {
> -	int				(*preenable)(struct iio_dev *);
> -	int				(*postenable)(struct iio_dev *);
> -	int				(*predisable)(struct iio_dev *);
> -	int				(*postdisable)(struct iio_dev *);
> -};
> -
> -/**
> - * struct iio_buffer - general buffer structure
> - * @indio_dev:		industrial I/O device structure
> - * @owner:		module that owns the buffer (for ref counting)
> - * @length:		[DEVICE] number of datums in buffer
> - * @bytes_per_datum:	[DEVICE] size of individual datum including timestamp
> - * @bpe:		[DEVICE] size of individual channel value
> - * @scan_el_attrs:	[DRIVER] control of scan elements if that scan mode
> - *			control method is used
> - * @scan_count:	[INTERN] the number of elements in the current scan mode
> - * @scan_mask:		[INTERN] bitmask used in masking scan mode elements
> - * @scan_timestamp:	[INTERN] does the scan mode include a timestamp
> - * @access:		[DRIVER] buffer access functions associated with the
> - *			implementation.
> - * @flags:		[INTERN] file ops related flags including busy flag.
> - * @demux_list:		[INTERN] list of operations required to demux the scan.
> - * @demux_bounce:	[INTERN] buffer for doing gather from incoming scan.
> - **/
> -struct iio_buffer {
> -	struct iio_dev				*indio_dev;
> -	struct module				*owner;
> -	int					length;
> -	int					bytes_per_datum;
> -	int					bpe;
> -	struct attribute_group			*scan_el_attrs;
> -	int					scan_count;
> -	long					*scan_mask;
> -	bool					scan_timestamp;
> -	const struct iio_buffer_access_funcs	*access;
> -	const struct iio_buffer_setup_ops		*setup_ops;
> -	struct list_head			scan_el_dev_attr_list;
> -	struct attribute_group			scan_el_group;
> -	wait_queue_head_t			pollq;
> -	bool					stufftoread;
> -	unsigned long				flags;
> -	const struct attribute_group *attrs;
> -	struct list_head			demux_list;
> -	unsigned char				*demux_bounce;
> -};
> -
> -/**
> - * iio_buffer_init() - Initialize the buffer structure
> - * @buffer: buffer to be initialized
> - * @indio_dev: the iio device the buffer is assocated with
> - **/
> -void iio_buffer_init(struct iio_buffer *buffer,
> -			  struct iio_dev *indio_dev);
> -
> -void iio_buffer_deinit(struct iio_buffer *buffer);
> -
> -/**
> - * __iio_update_buffer() - update common elements of buffers
> - * @buffer:		buffer that is the event source
> - * @bytes_per_datum:	size of individual datum including timestamp
> - * @length:		number of datums in buffer
> - **/
> -static inline void __iio_update_buffer(struct iio_buffer *buffer,
> -				       int bytes_per_datum, int length)
> -{
> -	buffer->bytes_per_datum = bytes_per_datum;
> -	buffer->length = length;
> -}
> -
> -int iio_scan_mask_query(struct iio_buffer *buffer, int bit);
> -
> -/**
> - * iio_scan_mask_set() - set particular bit in the scan mask
> - * @buffer: the buffer whose scan mask we are interested in
> - * @bit: the bit to be set.
> - **/
> -int iio_scan_mask_set(struct iio_buffer *buffer, int bit);
> -
> -#define to_iio_buffer(d)				\
> -	container_of(d, struct iio_buffer, dev)
> -
> -/**
> - * iio_push_to_buffer() - push to a registered buffer.
> - * @buffer:		IIO buffer structure for device
> - * @scan:		Full scan.
> - * @timestamp:
> - */
> -int iio_push_to_buffer(struct iio_buffer *buffer, unsigned char *data,
> -		       s64 timestamp);
> -
> -int iio_update_demux(struct iio_dev *indio_dev);
> -
> -/**
> - * iio_buffer_register() - register the buffer with IIO core
> - * @indio_dev: device with the buffer to be registered
> - **/
> -int iio_buffer_register(struct iio_dev *indio_dev,
> -			const struct iio_chan_spec *channels,
> -			int num_channels);
> -
> -/**
> - * iio_buffer_unregister() - unregister the buffer from IIO core
> - * @indio_dev: the device with the buffer to be unregistered
> - **/
> -void iio_buffer_unregister(struct iio_dev *indio_dev);
> -
> -/**
> - * iio_buffer_read_length() - attr func to get number of datums in the buffer
> - **/
> -ssize_t iio_buffer_read_length(struct device *dev,
> -			       struct device_attribute *attr,
> -			       char *buf);
> -/**
> - * iio_buffer_write_length() - attr func to set number of datums in the buffer
> - **/
> -ssize_t iio_buffer_write_length(struct device *dev,
> -			      struct device_attribute *attr,
> -			      const char *buf,
> -			      size_t len);
> -/**
> - * iio_buffer_read_bytes_per_datum() - attr for number of bytes in whole datum
> - **/
> -ssize_t iio_buffer_read_bytes_per_datum(struct device *dev,
> -					struct device_attribute *attr,
> -					char *buf);
> -/**
> - * iio_buffer_store_enable() - attr to turn the buffer on
> - **/
> -ssize_t iio_buffer_store_enable(struct device *dev,
> -				struct device_attribute *attr,
> -				const char *buf,
> -				size_t len);
> -/**
> - * iio_buffer_show_enable() - attr to see if the buffer is on
> - **/
> -ssize_t iio_buffer_show_enable(struct device *dev,
> -			       struct device_attribute *attr,
> -			       char *buf);
> -#define IIO_BUFFER_LENGTH_ATTR DEVICE_ATTR(length, S_IRUGO | S_IWUSR,	\
> -					   iio_buffer_read_length,	\
> -					   iio_buffer_write_length)
> -#define IIO_BUFFER_BYTES_PER_DATUM_ATTR					\
> -	DEVICE_ATTR(bytes_per_datum, S_IRUGO | S_IWUSR,			\
> -		    iio_buffer_read_bytes_per_datum, NULL)
> -
> -#define IIO_BUFFER_ENABLE_ATTR DEVICE_ATTR(enable, S_IRUGO | S_IWUSR,	\
> -					   iio_buffer_show_enable,	\
> -					   iio_buffer_store_enable)
> -
> -int iio_sw_buffer_preenable(struct iio_dev *indio_dev);
> -
> -#else /* CONFIG_IIO_BUFFER */
> -
> -static inline int iio_buffer_register(struct iio_dev *indio_dev,
> -					   struct iio_chan_spec *channels,
> -					   int num_channels)
> -{
> -	return 0;
> -}
> -
> -static inline void iio_buffer_unregister(struct iio_dev *indio_dev)
> -{};
> -
> -#endif /* CONFIG_IIO_BUFFER */
> -
> -#endif /* _IIO_BUFFER_GENERIC_H_ */
> diff --git a/drivers/staging/iio/chrdev.h b/drivers/staging/iio/chrdev.h
> deleted file mode 100644
> index d8e736f..0000000
> --- a/drivers/staging/iio/chrdev.h
> +++ /dev/null
> @@ -1,25 +0,0 @@
> -/* The industrial I/O core - character device related
> - *
> - * Copyright (c) 2008 Jonathan Cameron
> - *
> - * This program is free software; you can redistribute it and/or modify it
> - * under the terms of the GNU General Public License version 2 as published by
> - * the Free Software Foundation.
> - */
> -
> -#ifndef _IIO_CHRDEV_H_
> -#define _IIO_CHRDEV_H_
> -
> -/**
> - * struct iio_event_data - The actual event being pushed to userspace
> - * @id:		event identifier
> - * @timestamp:	best estimate of time of event occurrence (often from
> - *		the interrupt handler)
> - */
> -struct iio_event_data {
> -	u64	id;
> -	s64	timestamp;
> -};
> -
> -#define IIO_GET_EVENT_FD_IOCTL _IOR('i', 0x90, int)
> -#endif
> diff --git a/drivers/staging/iio/dac/ad5504.c b/drivers/staging/iio/dac/ad5504.c
> index a0be132..5b3a244 100644
> --- a/drivers/staging/iio/dac/ad5504.c
> +++ b/drivers/staging/iio/dac/ad5504.c
> @@ -19,6 +19,7 @@
>  
>  #include "../iio.h"
>  #include "../sysfs.h"
> +#include "../events.h"
>  #include "dac.h"
>  #include "ad5504.h"
>  
> diff --git a/drivers/staging/iio/events.h b/drivers/staging/iio/events.h
> new file mode 100644
> index 0000000..6867894
> --- /dev/null
> +++ b/drivers/staging/iio/events.h
> @@ -0,0 +1,71 @@
> +/* The industrial I/O - event passing to userspace
> + *
> + * Copyright (c) 2008-2011 Jonathan Cameron
> + *
> + * This program is free software; you can redistribute it and/or modify it
> + * under the terms of the GNU General Public License version 2 as published by
> + * the Free Software Foundation.
> + */
> +#include "types.h"
> +
> +#ifndef _IIO_EVENTS_H_
> +#define _IIO_EVENTS_H_
> +
> +/**
> + * struct iio_event_data - The actual event being pushed to userspace
> + * @id:		event identifier
> + * @timestamp:	best estimate of time of event occurrence (often from
> + *		the interrupt handler)
> + */
> +struct iio_event_data {
> +	u64	id;
> +	s64	timestamp;
> +};
> +
> +#define IIO_GET_EVENT_FD_IOCTL _IOR('i', 0x90, int)
> +
> +enum iio_event_type {
> +	IIO_EV_TYPE_THRESH,
> +	IIO_EV_TYPE_MAG,
> +	IIO_EV_TYPE_ROC,
> +	IIO_EV_TYPE_THRESH_ADAPTIVE,
> +	IIO_EV_TYPE_MAG_ADAPTIVE,
> +};
> +
> +enum iio_event_direction {
> +	IIO_EV_DIR_EITHER,
> +	IIO_EV_DIR_RISING,
> +	IIO_EV_DIR_FALLING,
> +};
> +
> +#define IIO_EVENT_CODE(chan_type, diff, modifier, direction,		\
> +		       type, chan, chan1, chan2)			\
> +	(((u64)type << 56) | ((u64)diff << 55) |			\
> +	 ((u64)direction << 48) | ((u64)modifier << 40) |		\
> +	 ((u64)chan_type << 32) | (chan2 << 16) | chan1 | chan)
> +
> +
> +#define IIO_EV_DIR_MAX 4
> +#define IIO_EV_BIT(type, direction)			\
> +	(1 << (type*IIO_EV_DIR_MAX + direction))
> +
> +#define IIO_MOD_EVENT_CODE(channelclass, number, modifier,		\
> +			   type, direction)				\
> +	IIO_EVENT_CODE(channelclass, 0, modifier, direction, type, number, 0, 0)
> +
> +#define IIO_UNMOD_EVENT_CODE(channelclass, number, type, direction)	\
> +	IIO_EVENT_CODE(channelclass, 0, 0, direction, type, number, 0, 0)
> +
> +#define IIO_EVENT_CODE_EXTRACT_TYPE(mask) ((mask >> 56) & 0xFF)
> +
> +#define IIO_EVENT_CODE_EXTRACT_DIR(mask) ((mask >> 48) & 0xCF)
> +
> +#define IIO_EVENT_CODE_EXTRACT_CHAN_TYPE(mask) ((mask >> 32) & 0xFF)
> +
> +/* Event code number extraction depends on which type of event we have.
> + * Perhaps review this function in the future*/
> +#define IIO_EVENT_CODE_EXTRACT_NUM(mask) (mask & 0xFFFF)
> +
> +#define IIO_EVENT_CODE_EXTRACT_MODIFIER(mask) ((mask >> 40) & 0xFF)
> +
> +#endif
> diff --git a/drivers/staging/iio/gyro/adis16260_core.c b/drivers/staging/iio/gyro/adis16260_core.c
> index d37fae7..8051bed 100644
> --- a/drivers/staging/iio/gyro/adis16260_core.c
> +++ b/drivers/staging/iio/gyro/adis16260_core.c
> @@ -21,7 +21,7 @@
>  
>  #include "../iio.h"
>  #include "../sysfs.h"
> -#include "../buffer_generic.h"
> +#include "../buffer.h"
>  
>  #include "adis16260.h"
>  
> diff --git a/drivers/staging/iio/iio.h b/drivers/staging/iio/iio.h
> index 429589f..339b609 100644
> --- a/drivers/staging/iio/iio.h
> +++ b/drivers/staging/iio/iio.h
> @@ -7,7 +7,7 @@
>   * under the terms of the GNU General Public License version 2 as published by
>   * the Free Software Foundation.
>   */
> -
> +#include "types.h"
>  #ifndef _INDUSTRIAL_IO_H_
>  #define _INDUSTRIAL_IO_H_
>  
> @@ -25,42 +25,6 @@ enum iio_data_type {
>  	IIO_PROCESSED,
>  };
>  
> -enum iio_chan_type {
> -	/* real channel types */
> -	IIO_VOLTAGE,
> -	IIO_CURRENT,
> -	IIO_POWER,
> -	IIO_ACCEL,
> -	IIO_ANGL_VEL,
> -	IIO_MAGN,
> -	IIO_LIGHT,
> -	IIO_INTENSITY,
> -	IIO_PROXIMITY,
> -	IIO_TEMP,
> -	IIO_INCLI,
> -	IIO_ROT,
> -	IIO_ANGL,
> -	IIO_TIMESTAMP,
> -	IIO_CAPACITANCE,
> -};
> -
> -enum iio_modifier {
> -	IIO_NO_MOD,
> -	IIO_MOD_X,
> -	IIO_MOD_Y,
> -	IIO_MOD_Z,
> -	IIO_MOD_X_AND_Y,
> -	IIO_MOD_X_ANX_Z,
> -	IIO_MOD_Y_AND_Z,
> -	IIO_MOD_X_AND_Y_AND_Z,
> -	IIO_MOD_X_OR_Y,
> -	IIO_MOD_X_OR_Z,
> -	IIO_MOD_Y_OR_Z,
> -	IIO_MOD_X_OR_Y_OR_Z,
> -	IIO_MOD_LIGHT_BOTH,
> -	IIO_MOD_LIGHT_IR,
> -};
> -
>  /* Could add the raw attributes as well - allowing buffer only devices */
>  enum iio_chan_info_enum {
>  	IIO_CHAN_INFO_SCALE_SHARED,
> diff --git a/drivers/staging/iio/iio_simple_dummy.c b/drivers/staging/iio/iio_simple_dummy.c
> index af0c992..06c022e 100644
> --- a/drivers/staging/iio/iio_simple_dummy.c
> +++ b/drivers/staging/iio/iio_simple_dummy.c
> @@ -21,7 +21,8 @@
>  
>  #include "iio.h"
>  #include "sysfs.h"
> -#include "buffer_generic.h"
> +#include "events.h"
> +#include "buffer.h"
>  #include "iio_simple_dummy.h"
>  
>  /*
> diff --git a/drivers/staging/iio/iio_simple_dummy_events.c b/drivers/staging/iio/iio_simple_dummy_events.c
> index 9f00cff..449c7a5 100644
> --- a/drivers/staging/iio/iio_simple_dummy_events.c
> +++ b/drivers/staging/iio/iio_simple_dummy_events.c
> @@ -14,6 +14,7 @@
>  
>  #include "iio.h"
>  #include "sysfs.h"
> +#include "events.h"
>  #include "iio_simple_dummy.h"
>  
>  /* Evgen 'fakes' interrupt events for this example */
> diff --git a/drivers/staging/iio/impedance-analyzer/ad5933.c b/drivers/staging/iio/impedance-analyzer/ad5933.c
> index 1086e0b..1f495da 100644
> --- a/drivers/staging/iio/impedance-analyzer/ad5933.c
> +++ b/drivers/staging/iio/impedance-analyzer/ad5933.c
> @@ -21,7 +21,7 @@
>  
>  #include "../iio.h"
>  #include "../sysfs.h"
> -#include "../buffer_generic.h"
> +#include "../buffer.h"
>  #include "../ring_sw.h"
>  
>  #include "ad5933.h"
> diff --git a/drivers/staging/iio/imu/adis16400_core.c b/drivers/staging/iio/imu/adis16400_core.c
> index d082a37..e6df4921 100644
> --- a/drivers/staging/iio/imu/adis16400_core.c
> +++ b/drivers/staging/iio/imu/adis16400_core.c
> @@ -28,7 +28,7 @@
>  
>  #include "../iio.h"
>  #include "../sysfs.h"
> -#include "../buffer_generic.h"
> +#include "../buffer.h"
>  #include "adis16400.h"
>  
>  enum adis16400_chip_variant {
> diff --git a/drivers/staging/iio/industrialio-buffer.c b/drivers/staging/iio/industrialio-buffer.c
> index bac672d..cb0fea0 100644
> --- a/drivers/staging/iio/industrialio-buffer.c
> +++ b/drivers/staging/iio/industrialio-buffer.c
> @@ -23,7 +23,7 @@
>  #include "iio.h"
>  #include "iio_core.h"
>  #include "sysfs.h"
> -#include "buffer_generic.h"
> +#include "buffer.h"
>  
>  static const char * const iio_endian_prefix[] = {
>  	[IIO_BE] = "be",
> diff --git a/drivers/staging/iio/industrialio-core.c b/drivers/staging/iio/industrialio-core.c
> index 00ef005..3b03a97 100644
> --- a/drivers/staging/iio/industrialio-core.c
> +++ b/drivers/staging/iio/industrialio-core.c
> @@ -25,8 +25,8 @@
>  #include "iio.h"
>  #include "iio_core.h"
>  #include "iio_core_trigger.h"
> -#include "chrdev.h"
>  #include "sysfs.h"
> +#include "events.h"
>  
>  /* IDA to assign each registered device a unique id*/
>  static DEFINE_IDA(iio_ida);
> diff --git a/drivers/staging/iio/kfifo_buf.h b/drivers/staging/iio/kfifo_buf.h
> index a15598b..cc2bd9a 100644
> --- a/drivers/staging/iio/kfifo_buf.h
> +++ b/drivers/staging/iio/kfifo_buf.h
> @@ -1,7 +1,7 @@
>  
>  #include <linux/kfifo.h>
>  #include "iio.h"
> -#include "buffer_generic.h"
> +#include "buffer.h"
>  
>  extern const struct iio_buffer_access_funcs kfifo_access_funcs;
>  
> diff --git a/drivers/staging/iio/light/tsl2563.c b/drivers/staging/iio/light/tsl2563.c
> index 7e984bc..e69387a 100644
> --- a/drivers/staging/iio/light/tsl2563.c
> +++ b/drivers/staging/iio/light/tsl2563.c
> @@ -37,6 +37,7 @@
>  
>  #include "../iio.h"
>  #include "../sysfs.h"
> +#include "../events.h"
>  #include "tsl2563.h"
>  
>  /* Use this many bits for fraction part. */
> diff --git a/drivers/staging/iio/meter/ade7758_core.c b/drivers/staging/iio/meter/ade7758_core.c
> index 7d66343..a601b64 100644
> --- a/drivers/staging/iio/meter/ade7758_core.c
> +++ b/drivers/staging/iio/meter/ade7758_core.c
> @@ -21,7 +21,7 @@
>  
>  #include "../iio.h"
>  #include "../sysfs.h"
> -#include "../buffer_generic.h"
> +#include "../buffer.h"
>  #include "meter.h"
>  #include "ade7758.h"
>  
> diff --git a/drivers/staging/iio/ring_sw.h b/drivers/staging/iio/ring_sw.h
> index a3e1578..e6a6e2c 100644
> --- a/drivers/staging/iio/ring_sw.h
> +++ b/drivers/staging/iio/ring_sw.h
> @@ -23,7 +23,7 @@
>  
>  #ifndef _IIO_RING_SW_H_
>  #define _IIO_RING_SW_H_
> -#include "buffer_generic.h"
> +#include "buffer.h"
>  
>  /**
>   * ring_sw_access_funcs - access functions for a software ring buffer
> diff --git a/drivers/staging/iio/sysfs.h b/drivers/staging/iio/sysfs.h
> index 868952b..bfedb73 100644
> --- a/drivers/staging/iio/sysfs.h
> +++ b/drivers/staging/iio/sysfs.h
> @@ -114,47 +114,4 @@ struct iio_const_attr {
>  #define IIO_CONST_ATTR_TEMP_SCALE(_string)		\
>  	IIO_CONST_ATTR(in_temp_scale, _string)
>  
> -enum iio_event_type {
> -	IIO_EV_TYPE_THRESH,
> -	IIO_EV_TYPE_MAG,
> -	IIO_EV_TYPE_ROC,
> -	IIO_EV_TYPE_THRESH_ADAPTIVE,
> -	IIO_EV_TYPE_MAG_ADAPTIVE,
> -};
> -
> -enum iio_event_direction {
> -	IIO_EV_DIR_EITHER,
> -	IIO_EV_DIR_RISING,
> -	IIO_EV_DIR_FALLING,
> -};
> -
> -#define IIO_EVENT_CODE(chan_type, diff, modifier, direction,		\
> -		       type, chan, chan1, chan2)			\
> -	(((u64)type << 56) | ((u64)diff << 55) |			\
> -	 ((u64)direction << 48) | ((u64)modifier << 40) |		\
> -	 ((u64)chan_type << 32) | (chan2 << 16) | chan1 | chan)
> -
> -#define IIO_EV_DIR_MAX 4
> -#define IIO_EV_BIT(type, direction)			\
> -	(1 << (type*IIO_EV_DIR_MAX + direction))
> -
> -#define IIO_MOD_EVENT_CODE(channelclass, number, modifier,		\
> -			   type, direction)				\
> -	IIO_EVENT_CODE(channelclass, 0, modifier, direction, type, number, 0, 0)
> -
> -#define IIO_UNMOD_EVENT_CODE(channelclass, number, type, direction)	\
> -	IIO_EVENT_CODE(channelclass, 0, 0, direction, type, number, 0, 0)
> -
> -#define IIO_EVENT_CODE_EXTRACT_TYPE(mask) ((mask >> 56) & 0xFF)
> -
> -#define IIO_EVENT_CODE_EXTRACT_DIR(mask) ((mask >> 48) & 0xCF)
> -
> -#define IIO_EVENT_CODE_EXTRACT_CHAN_TYPE(mask) ((mask >> 32) & 0xFF)
> -
> -/* Event code number extraction depends on which type of event we have.
> - * Perhaps review this function in the future*/
> -#define IIO_EVENT_CODE_EXTRACT_NUM(mask) (mask & 0xFFFF)
> -
> -#define IIO_EVENT_CODE_EXTRACT_MODIFIER(mask) ((mask >> 40) & 0xFF)
> -
>  #endif /* _INDUSTRIAL_IO_SYSFS_H_ */
> diff --git a/drivers/staging/iio/types.h b/drivers/staging/iio/types.h
> new file mode 100644
> index 0000000..f1f5ca2
> --- /dev/null
> +++ b/drivers/staging/iio/types.h
> @@ -0,0 +1,49 @@
> +/* industrial I/O data types needed both in and out of kernel
> + *
> + * Copyright (c) 2008 Jonathan Cameron
> + *
> + * This program is free software; you can redistribute it and/or modify it
> + * under the terms of the GNU General Public License version 2 as published by
> + * the Free Software Foundation.
> + */
> +
> +#ifndef _IIO_TYPES_H_
> +#define _IIO_TYPES_H_
> +
> +enum iio_chan_type {
> +	/* real channel types */
> +	IIO_VOLTAGE,
> +	IIO_CURRENT,
> +	IIO_POWER,
> +	IIO_ACCEL,
> +	IIO_ANGL_VEL,
> +	IIO_MAGN,
> +	IIO_LIGHT,
> +	IIO_INTENSITY,
> +	IIO_PROXIMITY,
> +	IIO_TEMP,
> +	IIO_INCLI,
> +	IIO_ROT,
> +	IIO_ANGL,
> +	IIO_TIMESTAMP,
> +	IIO_CAPACITANCE,
> +};
> +
> +enum iio_modifier {
> +	IIO_NO_MOD,
> +	IIO_MOD_X,
> +	IIO_MOD_Y,
> +	IIO_MOD_Z,
> +	IIO_MOD_X_AND_Y,
> +	IIO_MOD_X_ANX_Z,
> +	IIO_MOD_Y_AND_Z,
> +	IIO_MOD_X_AND_Y_AND_Z,
> +	IIO_MOD_X_OR_Y,
> +	IIO_MOD_X_OR_Z,
> +	IIO_MOD_Y_OR_Z,
> +	IIO_MOD_X_OR_Y_OR_Z,
> +	IIO_MOD_LIGHT_BOTH,
> +	IIO_MOD_LIGHT_IR,
> +};
> +
> +#endif /* _IIO_TYPES_H_ */

--
To unsubscribe from this list: send the line "unsubscribe linux-iio" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[Index of Archives]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Input]     [Linux Kernel]     [Linux SCSI]     [X.org]

  Powered by Linux