* [PATCH v2] iio: Export userspace IIO headers
@ 2015-02-10 16:33 Daniel Baluta
[not found] ` <1423586031-25199-1-git-send-email-daniel.baluta-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org>
0 siblings, 1 reply; 2+ messages in thread
From: Daniel Baluta @ 2015-02-10 16:33 UTC (permalink / raw)
To: jic23-DgEjT+Ai2ygdnm+yROfE0A, knaack.h-Mmb7MZpHnFY,
lars-Qo5EllUWu/uELgA04lAiVw, pmeerw-jW+XmwGofnusTnJN9+BGXg
Cc: irina.tirdea-ral2JQCrhuEAvxtiuMwx3w,
roberta.dobrescu-Re5JQEeQqe8AvxtiuMwx3w,
linux-kernel-u79uwXL29TY76Z2rM5mHXA,
linux-iio-u79uwXL29TY76Z2rM5mHXA,
linux-api-u79uwXL29TY76Z2rM5mHXA
After UAPI header file split [1] all user-kernel interfaces were
placed under include/uapi/.
This patch moves IIO user specific API from:
* include/linux/iio/events.h => include/uapi/linux/iio/events.h
* include/linux/types.h => include/uapi/linux/types.h
Now there is no need for nasty tricks to compile userspace programs
(e.g iio_event_monitor). Just installing the kernel headers with
make headers_install command does the job.
[1] http://lwn.net/Articles/507794/
Signed-off-by: Daniel Baluta <daniel.baluta-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org>
---
Changes since v1:
* keep enum iio_event_info and IIO_VAL_* constants in
include/linux/iio/types.h since they aren't part of the
ABI.
include/linux/iio/events.h | 30 +-------------
include/linux/iio/types.h | 78 +----------------------------------
include/uapi/linux/Kbuild | 1 +
include/uapi/linux/iio/Kbuild | 3 ++
include/uapi/linux/iio/events.h | 43 +++++++++++++++++++
include/uapi/linux/iio/types.h | 91 +++++++++++++++++++++++++++++++++++++++++
6 files changed, 140 insertions(+), 106 deletions(-)
create mode 100644 include/uapi/linux/iio/Kbuild
create mode 100644 include/uapi/linux/iio/events.h
create mode 100644 include/uapi/linux/iio/types.h
diff --git a/include/linux/iio/events.h b/include/linux/iio/events.h
index 03fa332..8ad87d1 100644
--- a/include/linux/iio/events.h
+++ b/include/linux/iio/events.h
@@ -9,22 +9,8 @@
#ifndef _IIO_EVENTS_H_
#define _IIO_EVENTS_H_
-#include <linux/ioctl.h>
-#include <linux/types.h>
#include <linux/iio/types.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)
+#include <uapi/linux/iio/events.h>
/**
* IIO_EVENT_CODE() - create event identifier
@@ -70,18 +56,4 @@ struct iio_event_data {
#define IIO_UNMOD_EVENT_CODE(chan_type, number, type, direction) \
IIO_EVENT_CODE(chan_type, 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) & 0x7F)
-
-#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_CHAN(mask) ((__s16)(mask & 0xFFFF))
-#define IIO_EVENT_CODE_EXTRACT_CHAN2(mask) ((__s16)(((mask) >> 16) & 0xFFFF))
-
-#define IIO_EVENT_CODE_EXTRACT_MODIFIER(mask) ((mask >> 40) & 0xFF)
-#define IIO_EVENT_CODE_EXTRACT_DIFF(mask) (((mask) >> 55) & 0x1)
-
#endif
diff --git a/include/linux/iio/types.h b/include/linux/iio/types.h
index 580ed5b..942b6de 100644
--- a/include/linux/iio/types.h
+++ b/include/linux/iio/types.h
@@ -10,76 +10,7 @@
#ifndef _IIO_TYPES_H_
#define _IIO_TYPES_H_
-enum iio_chan_type {
- 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,
- IIO_ALTVOLTAGE,
- IIO_CCT,
- IIO_PRESSURE,
- IIO_HUMIDITYRELATIVE,
- IIO_ACTIVITY,
- IIO_STEPS,
- IIO_ENERGY,
- IIO_DISTANCE,
- IIO_VELOCITY,
-};
-
-enum iio_modifier {
- IIO_NO_MOD,
- IIO_MOD_X,
- IIO_MOD_Y,
- IIO_MOD_Z,
- IIO_MOD_X_AND_Y,
- IIO_MOD_X_AND_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,
- IIO_MOD_ROOT_SUM_SQUARED_X_Y,
- IIO_MOD_SUM_SQUARED_X_Y_Z,
- IIO_MOD_LIGHT_CLEAR,
- IIO_MOD_LIGHT_RED,
- IIO_MOD_LIGHT_GREEN,
- IIO_MOD_LIGHT_BLUE,
- IIO_MOD_QUATERNION,
- IIO_MOD_TEMP_AMBIENT,
- IIO_MOD_TEMP_OBJECT,
- IIO_MOD_NORTH_MAGN,
- IIO_MOD_NORTH_TRUE,
- IIO_MOD_NORTH_MAGN_TILT_COMP,
- IIO_MOD_NORTH_TRUE_TILT_COMP,
- IIO_MOD_RUNNING,
- IIO_MOD_JOGGING,
- IIO_MOD_WALKING,
- IIO_MOD_STILL,
- IIO_MOD_ROOT_SUM_SQUARED_X_Y_Z,
-};
-
-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,
- IIO_EV_TYPE_CHANGE,
-};
+#include <uapi/linux/iio/types.h>
enum iio_event_info {
IIO_EV_INFO_ENABLE,
@@ -88,13 +19,6 @@ enum iio_event_info {
IIO_EV_INFO_PERIOD,
};
-enum iio_event_direction {
- IIO_EV_DIR_EITHER,
- IIO_EV_DIR_RISING,
- IIO_EV_DIR_FALLING,
- IIO_EV_DIR_NONE,
-};
-
#define IIO_VAL_INT 1
#define IIO_VAL_INT_PLUS_MICRO 2
#define IIO_VAL_INT_PLUS_NANO 3
diff --git a/include/uapi/linux/Kbuild b/include/uapi/linux/Kbuild
index 00b10002..5bfc5bd 100644
--- a/include/uapi/linux/Kbuild
+++ b/include/uapi/linux/Kbuild
@@ -6,6 +6,7 @@ header-y += caif/
header-y += dvb/
header-y += hdlc/
header-y += hsi/
+header-y += iio/
header-y += isdn/
header-y += mmc/
header-y += nfsd/
diff --git a/include/uapi/linux/iio/Kbuild b/include/uapi/linux/iio/Kbuild
new file mode 100644
index 0000000..86f76d8
--- /dev/null
+++ b/include/uapi/linux/iio/Kbuild
@@ -0,0 +1,3 @@
+# UAPI Header export list
+header-y += events.h
+header-y += types.h
diff --git a/include/uapi/linux/iio/events.h b/include/uapi/linux/iio/events.h
new file mode 100644
index 0000000..4b06477
--- /dev/null
+++ b/include/uapi/linux/iio/events.h
@@ -0,0 +1,43 @@
+/* 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.
+ */
+#ifndef _UAPI_IIO_EVENTS_H_
+#define _UAPI_IIO_EVENTS_H_
+
+#include <linux/ioctl.h>
+#include <linux/types.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)
+
+#define IIO_EVENT_CODE_EXTRACT_TYPE(mask) ((mask >> 56) & 0xFF)
+
+#define IIO_EVENT_CODE_EXTRACT_DIR(mask) ((mask >> 48) & 0x7F)
+
+#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_CHAN(mask) ((__s16)(mask & 0xFFFF))
+#define IIO_EVENT_CODE_EXTRACT_CHAN2(mask) ((__s16)(((mask) >> 16) & 0xFFFF))
+
+#define IIO_EVENT_CODE_EXTRACT_MODIFIER(mask) ((mask >> 40) & 0xFF)
+#define IIO_EVENT_CODE_EXTRACT_DIFF(mask) (((mask) >> 55) & 0x1)
+
+#endif /* _UAPI_IIO_EVENTS_H_ */
+
diff --git a/include/uapi/linux/iio/types.h b/include/uapi/linux/iio/types.h
new file mode 100644
index 0000000..56a1529
--- /dev/null
+++ b/include/uapi/linux/iio/types.h
@@ -0,0 +1,91 @@
+/* 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 _UAPI_IIO_TYPES_H_
+#define _UAPI_IIO_TYPES_H_
+
+enum iio_chan_type {
+ 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,
+ IIO_ALTVOLTAGE,
+ IIO_CCT,
+ IIO_PRESSURE,
+ IIO_HUMIDITYRELATIVE,
+ IIO_ACTIVITY,
+ IIO_STEPS,
+ IIO_ENERGY,
+ IIO_DISTANCE,
+ IIO_VELOCITY,
+};
+
+enum iio_modifier {
+ IIO_NO_MOD,
+ IIO_MOD_X,
+ IIO_MOD_Y,
+ IIO_MOD_Z,
+ IIO_MOD_X_AND_Y,
+ IIO_MOD_X_AND_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,
+ IIO_MOD_ROOT_SUM_SQUARED_X_Y,
+ IIO_MOD_SUM_SQUARED_X_Y_Z,
+ IIO_MOD_LIGHT_CLEAR,
+ IIO_MOD_LIGHT_RED,
+ IIO_MOD_LIGHT_GREEN,
+ IIO_MOD_LIGHT_BLUE,
+ IIO_MOD_QUATERNION,
+ IIO_MOD_TEMP_AMBIENT,
+ IIO_MOD_TEMP_OBJECT,
+ IIO_MOD_NORTH_MAGN,
+ IIO_MOD_NORTH_TRUE,
+ IIO_MOD_NORTH_MAGN_TILT_COMP,
+ IIO_MOD_NORTH_TRUE_TILT_COMP,
+ IIO_MOD_RUNNING,
+ IIO_MOD_JOGGING,
+ IIO_MOD_WALKING,
+ IIO_MOD_STILL,
+ IIO_MOD_ROOT_SUM_SQUARED_X_Y_Z,
+};
+
+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,
+ IIO_EV_TYPE_CHANGE,
+};
+
+enum iio_event_direction {
+ IIO_EV_DIR_EITHER,
+ IIO_EV_DIR_RISING,
+ IIO_EV_DIR_FALLING,
+ IIO_EV_DIR_NONE,
+};
+
+#endif /* _UAPI_IIO_TYPES_H_ */
--
1.9.1
^ permalink raw reply related [flat|nested] 2+ messages in thread
* Re: [PATCH v2] iio: Export userspace IIO headers
[not found] ` <1423586031-25199-1-git-send-email-daniel.baluta-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org>
@ 2015-02-14 11:53 ` Jonathan Cameron
0 siblings, 0 replies; 2+ messages in thread
From: Jonathan Cameron @ 2015-02-14 11:53 UTC (permalink / raw)
To: Daniel Baluta, knaack.h-Mmb7MZpHnFY, lars-Qo5EllUWu/uELgA04lAiVw,
pmeerw-jW+XmwGofnusTnJN9+BGXg
Cc: irina.tirdea-ral2JQCrhuEAvxtiuMwx3w,
roberta.dobrescu-Re5JQEeQqe8AvxtiuMwx3w,
linux-kernel-u79uwXL29TY76Z2rM5mHXA,
linux-iio-u79uwXL29TY76Z2rM5mHXA,
linux-api-u79uwXL29TY76Z2rM5mHXA
On 10/02/15 16:33, Daniel Baluta wrote:
> After UAPI header file split [1] all user-kernel interfaces were
> placed under include/uapi/.
>
> This patch moves IIO user specific API from:
> * include/linux/iio/events.h => include/uapi/linux/iio/events.h
> * include/linux/types.h => include/uapi/linux/types.h
>
> Now there is no need for nasty tricks to compile userspace programs
> (e.g iio_event_monitor). Just installing the kernel headers with
> make headers_install command does the job.
>
> [1] http://lwn.net/Articles/507794/
>
> Signed-off-by: Daniel Baluta <daniel.baluta-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org>
Looks good to me. A bonus blank line and EOF that I've removed.
Applied to the togreg branch of iio.git
Thanks,
Jonathan
> ---
> Changes since v1:
> * keep enum iio_event_info and IIO_VAL_* constants in
> include/linux/iio/types.h since they aren't part of the
> ABI.
>
> include/linux/iio/events.h | 30 +-------------
> include/linux/iio/types.h | 78 +----------------------------------
> include/uapi/linux/Kbuild | 1 +
> include/uapi/linux/iio/Kbuild | 3 ++
> include/uapi/linux/iio/events.h | 43 +++++++++++++++++++
> include/uapi/linux/iio/types.h | 91 +++++++++++++++++++++++++++++++++++++++++
> 6 files changed, 140 insertions(+), 106 deletions(-)
> create mode 100644 include/uapi/linux/iio/Kbuild
> create mode 100644 include/uapi/linux/iio/events.h
> create mode 100644 include/uapi/linux/iio/types.h
>
> diff --git a/include/linux/iio/events.h b/include/linux/iio/events.h
> index 03fa332..8ad87d1 100644
> --- a/include/linux/iio/events.h
> +++ b/include/linux/iio/events.h
> @@ -9,22 +9,8 @@
> #ifndef _IIO_EVENTS_H_
> #define _IIO_EVENTS_H_
>
> -#include <linux/ioctl.h>
> -#include <linux/types.h>
> #include <linux/iio/types.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)
> +#include <uapi/linux/iio/events.h>
>
> /**
> * IIO_EVENT_CODE() - create event identifier
> @@ -70,18 +56,4 @@ struct iio_event_data {
> #define IIO_UNMOD_EVENT_CODE(chan_type, number, type, direction) \
> IIO_EVENT_CODE(chan_type, 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) & 0x7F)
> -
> -#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_CHAN(mask) ((__s16)(mask & 0xFFFF))
> -#define IIO_EVENT_CODE_EXTRACT_CHAN2(mask) ((__s16)(((mask) >> 16) & 0xFFFF))
> -
> -#define IIO_EVENT_CODE_EXTRACT_MODIFIER(mask) ((mask >> 40) & 0xFF)
> -#define IIO_EVENT_CODE_EXTRACT_DIFF(mask) (((mask) >> 55) & 0x1)
> -
> #endif
> diff --git a/include/linux/iio/types.h b/include/linux/iio/types.h
> index 580ed5b..942b6de 100644
> --- a/include/linux/iio/types.h
> +++ b/include/linux/iio/types.h
> @@ -10,76 +10,7 @@
> #ifndef _IIO_TYPES_H_
> #define _IIO_TYPES_H_
>
> -enum iio_chan_type {
> - 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,
> - IIO_ALTVOLTAGE,
> - IIO_CCT,
> - IIO_PRESSURE,
> - IIO_HUMIDITYRELATIVE,
> - IIO_ACTIVITY,
> - IIO_STEPS,
> - IIO_ENERGY,
> - IIO_DISTANCE,
> - IIO_VELOCITY,
> -};
> -
> -enum iio_modifier {
> - IIO_NO_MOD,
> - IIO_MOD_X,
> - IIO_MOD_Y,
> - IIO_MOD_Z,
> - IIO_MOD_X_AND_Y,
> - IIO_MOD_X_AND_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,
> - IIO_MOD_ROOT_SUM_SQUARED_X_Y,
> - IIO_MOD_SUM_SQUARED_X_Y_Z,
> - IIO_MOD_LIGHT_CLEAR,
> - IIO_MOD_LIGHT_RED,
> - IIO_MOD_LIGHT_GREEN,
> - IIO_MOD_LIGHT_BLUE,
> - IIO_MOD_QUATERNION,
> - IIO_MOD_TEMP_AMBIENT,
> - IIO_MOD_TEMP_OBJECT,
> - IIO_MOD_NORTH_MAGN,
> - IIO_MOD_NORTH_TRUE,
> - IIO_MOD_NORTH_MAGN_TILT_COMP,
> - IIO_MOD_NORTH_TRUE_TILT_COMP,
> - IIO_MOD_RUNNING,
> - IIO_MOD_JOGGING,
> - IIO_MOD_WALKING,
> - IIO_MOD_STILL,
> - IIO_MOD_ROOT_SUM_SQUARED_X_Y_Z,
> -};
> -
> -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,
> - IIO_EV_TYPE_CHANGE,
> -};
> +#include <uapi/linux/iio/types.h>
>
> enum iio_event_info {
> IIO_EV_INFO_ENABLE,
> @@ -88,13 +19,6 @@ enum iio_event_info {
> IIO_EV_INFO_PERIOD,
> };
>
> -enum iio_event_direction {
> - IIO_EV_DIR_EITHER,
> - IIO_EV_DIR_RISING,
> - IIO_EV_DIR_FALLING,
> - IIO_EV_DIR_NONE,
> -};
> -
> #define IIO_VAL_INT 1
> #define IIO_VAL_INT_PLUS_MICRO 2
> #define IIO_VAL_INT_PLUS_NANO 3
> diff --git a/include/uapi/linux/Kbuild b/include/uapi/linux/Kbuild
> index 00b10002..5bfc5bd 100644
> --- a/include/uapi/linux/Kbuild
> +++ b/include/uapi/linux/Kbuild
> @@ -6,6 +6,7 @@ header-y += caif/
> header-y += dvb/
> header-y += hdlc/
> header-y += hsi/
> +header-y += iio/
> header-y += isdn/
> header-y += mmc/
> header-y += nfsd/
> diff --git a/include/uapi/linux/iio/Kbuild b/include/uapi/linux/iio/Kbuild
> new file mode 100644
> index 0000000..86f76d8
> --- /dev/null
> +++ b/include/uapi/linux/iio/Kbuild
> @@ -0,0 +1,3 @@
> +# UAPI Header export list
> +header-y += events.h
> +header-y += types.h
> diff --git a/include/uapi/linux/iio/events.h b/include/uapi/linux/iio/events.h
> new file mode 100644
> index 0000000..4b06477
> --- /dev/null
> +++ b/include/uapi/linux/iio/events.h
> @@ -0,0 +1,43 @@
> +/* 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.
> + */
> +#ifndef _UAPI_IIO_EVENTS_H_
> +#define _UAPI_IIO_EVENTS_H_
> +
> +#include <linux/ioctl.h>
> +#include <linux/types.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)
> +
> +#define IIO_EVENT_CODE_EXTRACT_TYPE(mask) ((mask >> 56) & 0xFF)
> +
> +#define IIO_EVENT_CODE_EXTRACT_DIR(mask) ((mask >> 48) & 0x7F)
> +
> +#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_CHAN(mask) ((__s16)(mask & 0xFFFF))
> +#define IIO_EVENT_CODE_EXTRACT_CHAN2(mask) ((__s16)(((mask) >> 16) & 0xFFFF))
> +
> +#define IIO_EVENT_CODE_EXTRACT_MODIFIER(mask) ((mask >> 40) & 0xFF)
> +#define IIO_EVENT_CODE_EXTRACT_DIFF(mask) (((mask) >> 55) & 0x1)
> +
> +#endif /* _UAPI_IIO_EVENTS_H_ */
> +
> diff --git a/include/uapi/linux/iio/types.h b/include/uapi/linux/iio/types.h
> new file mode 100644
> index 0000000..56a1529
> --- /dev/null
> +++ b/include/uapi/linux/iio/types.h
> @@ -0,0 +1,91 @@
> +/* 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 _UAPI_IIO_TYPES_H_
> +#define _UAPI_IIO_TYPES_H_
> +
> +enum iio_chan_type {
> + 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,
> + IIO_ALTVOLTAGE,
> + IIO_CCT,
> + IIO_PRESSURE,
> + IIO_HUMIDITYRELATIVE,
> + IIO_ACTIVITY,
> + IIO_STEPS,
> + IIO_ENERGY,
> + IIO_DISTANCE,
> + IIO_VELOCITY,
> +};
> +
> +enum iio_modifier {
> + IIO_NO_MOD,
> + IIO_MOD_X,
> + IIO_MOD_Y,
> + IIO_MOD_Z,
> + IIO_MOD_X_AND_Y,
> + IIO_MOD_X_AND_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,
> + IIO_MOD_ROOT_SUM_SQUARED_X_Y,
> + IIO_MOD_SUM_SQUARED_X_Y_Z,
> + IIO_MOD_LIGHT_CLEAR,
> + IIO_MOD_LIGHT_RED,
> + IIO_MOD_LIGHT_GREEN,
> + IIO_MOD_LIGHT_BLUE,
> + IIO_MOD_QUATERNION,
> + IIO_MOD_TEMP_AMBIENT,
> + IIO_MOD_TEMP_OBJECT,
> + IIO_MOD_NORTH_MAGN,
> + IIO_MOD_NORTH_TRUE,
> + IIO_MOD_NORTH_MAGN_TILT_COMP,
> + IIO_MOD_NORTH_TRUE_TILT_COMP,
> + IIO_MOD_RUNNING,
> + IIO_MOD_JOGGING,
> + IIO_MOD_WALKING,
> + IIO_MOD_STILL,
> + IIO_MOD_ROOT_SUM_SQUARED_X_Y_Z,
> +};
> +
> +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,
> + IIO_EV_TYPE_CHANGE,
> +};
> +
> +enum iio_event_direction {
> + IIO_EV_DIR_EITHER,
> + IIO_EV_DIR_RISING,
> + IIO_EV_DIR_FALLING,
> + IIO_EV_DIR_NONE,
> +};
> +
> +#endif /* _UAPI_IIO_TYPES_H_ */
>
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2015-02-14 11:53 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2015-02-10 16:33 [PATCH v2] iio: Export userspace IIO headers Daniel Baluta
[not found] ` <1423586031-25199-1-git-send-email-daniel.baluta-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org>
2015-02-14 11:53 ` Jonathan Cameron
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).