Merge branch 'core-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel...
[pandora-kernel.git] / drivers / staging / iio / accel / accel.h
1
2 #include "../sysfs.h"
3
4 /* Accelerometer types of attribute */
5 #define IIO_DEV_ATTR_ACCEL_OFFSET(_mode, _show, _store, _addr)  \
6         IIO_DEVICE_ATTR(accel_offset, _mode, _show, _store, _addr)
7
8 #define IIO_DEV_ATTR_ACCEL_X_OFFSET(_mode, _show, _store, _addr)        \
9         IIO_DEVICE_ATTR(accel_x_offset, _mode, _show, _store, _addr)
10
11 #define IIO_DEV_ATTR_ACCEL_Y_OFFSET(_mode, _show, _store, _addr)        \
12         IIO_DEVICE_ATTR(accel_y_offset, _mode, _show, _store, _addr)
13
14 #define IIO_DEV_ATTR_ACCEL_Z_OFFSET(_mode, _show, _store, _addr)        \
15         IIO_DEVICE_ATTR(accel_z_offset, _mode, _show, _store, _addr)
16
17 #define IIO_DEV_ATTR_ACCEL_X_GAIN(_mode, _show, _store, _addr)          \
18         IIO_DEVICE_ATTR(accel_x_gain, _mode, _show, _store, _addr)
19
20 #define IIO_DEV_ATTR_ACCEL_Y_GAIN(_mode, _show, _store, _addr)          \
21         IIO_DEVICE_ATTR(accel_y_gain, _mode, _show, _store, _addr)
22
23 #define IIO_DEV_ATTR_ACCEL_Z_GAIN(_mode, _show, _store, _addr)          \
24         IIO_DEVICE_ATTR(accel_z_gain, _mode, _show, _store, _addr)
25
26 #define IIO_DEV_ATTR_ACCEL(_show, _addr)                        \
27         IIO_DEVICE_ATTR(accel_raw, S_IRUGO, _show, NULL, _addr)
28
29 #define IIO_DEV_ATTR_ACCEL_X(_show, _addr)                      \
30         IIO_DEVICE_ATTR(accel_x_raw, S_IRUGO, _show, NULL, _addr)
31
32 #define IIO_DEV_ATTR_ACCEL_Y(_show, _addr)                      \
33         IIO_DEVICE_ATTR(accel_y_raw, S_IRUGO, _show, NULL, _addr)
34
35 #define IIO_DEV_ATTR_ACCEL_Z(_show, _addr)                      \
36         IIO_DEVICE_ATTR(accel_z_raw, S_IRUGO, _show, NULL, _addr)
37
38 /* Thresholds are somewhat chip dependent - may need quite a few defs here */
39 /* For unified thresholds (shared across all directions */
40
41 /**
42  * IIO_DEV_ATTR_ACCEL_THRESH: unified threshold
43  * @_mode: read/write
44  * @_show: read detector threshold value
45  * @_store: write detector threshold value
46  * @_addr: driver specific data, typically a register address
47  *
48  * This one is for cases where as single threshold covers all directions
49  **/
50 #define IIO_DEV_ATTR_ACCEL_THRESH(_mode, _show, _store, _addr)  \
51         IIO_DEVICE_ATTR(thresh, _mode, _show, _store, _addr)
52
53 /**
54  * IIO_DEV_ATTR_ACCEL_THRESH_X: independant direction threshold, x axis
55  * @_mode: readable / writable
56  * @_show: read x axis detector threshold value
57  * @_store: write x axis detector threshold value
58  * @_addr: device driver dependant, typically a register address
59  **/
60 #define IIO_DEV_ATTR_ACCEL_THRESH_X(_mode, _show, _store, _addr)        \
61         IIO_DEVICE_ATTR(thresh_accel_x, _mode, _show, _store, _addr)
62
63 #define IIO_DEV_ATTR_ACCEL_THRESH_Y(_mode, _show, _store, _addr)        \
64         IIO_DEVICE_ATTR(thresh_accel_y, _mode, _show, _store, _addr)
65
66 #define IIO_DEV_ATTR_ACCEL_THRESH_Z(_mode, _show, _store, _addr)        \
67         IIO_DEVICE_ATTR(thresh_accel_z, _mode, _show, _store, _addr)
68
69 /**
70  * IIO_EVENT_ATTR_ACCEL_X_HIGH: threshold event, x acceleration
71  * @_show: read x acceleration high threshold
72  * @_store: write x acceleration high threshold
73  * @_mask: device dependant, typically a bit mask
74  * @_handler: the iio_handler associated with this attribute
75  **/
76 #define IIO_EVENT_ATTR_ACCEL_X_HIGH(_show, _store, _mask, _handler)     \
77         IIO_EVENT_ATTR(accel_x_high, _show, _store, _mask, _handler)
78
79 /**
80  * IIO_EVENT_ATTR_ACCEL_X_HIGH_SH: threshold event, x accel high, shared handler
81  * @_evlist: event list used to share the handler
82  * @_show: attribute read
83  * @_store: attribute write
84  * @_mask: driver specific data, typically a bit mask
85  **/
86 #define IIO_EVENT_ATTR_ACCEL_X_HIGH_SH(_evlist, _show, _store, _mask)   \
87         IIO_EVENT_ATTR_SH(accel_x_high, _evlist, _show, _store, _mask)
88
89 /**
90  * IIO_EVENT_CODE_ACCEL_X_HIGH - event code for x axis high accel threshold
91  **/
92 #define IIO_EVENT_CODE_ACCEL_X_HIGH IIO_EVENT_CODE_ACCEL_BASE
93
94 #define IIO_EVENT_ATTR_ACCEL_Y_HIGH(_show, _store, _mask, _handler)     \
95         IIO_EVENT_ATTR(accel_y_high, _show, _store, _mask, _handler)
96
97 #define IIO_EVENT_ATTR_ACCEL_Y_HIGH_SH(_evlist, _show, _store, _mask)   \
98         IIO_EVENT_ATTR_SH(accel_y_high, _evlist, _show, _store, _mask)
99
100 #define IIO_EVENT_CODE_ACCEL_Y_HIGH (IIO_EVENT_CODE_ACCEL_BASE + 1)
101
102 #define IIO_EVENT_ATTR_ACCEL_Z_HIGH(_show, _store, _mask, _handler)     \
103         IIO_EVENT_ATTR(accel_z_high, _show, _store, _mask, _handler)
104
105 #define IIO_EVENT_ATTR_ACCEL_Z_HIGH_SH(_evlist, _show, _store, _mask)   \
106         IIO_EVENT_ATTR_SH(accel_z_high, _evlist, _show, _store, _mask)
107
108 #define IIO_EVENT_CODE_ACCEL_Z_HIGH (IIO_EVENT_CODE_ACCEL_BASE + 2)
109
110 #define IIO_EVENT_ATTR_ACCEL_X_LOW(_show, _store, _mask, _handler)      \
111         IIO_EVENT_ATTR(accel_x_low, _show, _store, _mask, _handler)
112
113 #define IIO_EVENT_ATTR_ACCEL_X_LOW_SH(_evlist, _show, _store, _mask)    \
114         IIO_EVENT_ATTR_SH(accel_x_low, _evlist, _show, _store, _mask)
115
116 #define IIO_EVENT_CODE_ACCEL_X_LOW (IIO_EVENT_CODE_ACCEL_BASE + 3)
117
118 #define IIO_EVENT_ATTR_ACCEL_Y_LOW(_show, _store, _mask, _handler) \
119         IIO_EVENT_ATTR(accel_y_low, _show, _store, _mask, _handler)
120
121 #define IIO_EVENT_ATTR_ACCEL_Y_LOW_SH(_evlist, _show, _store, _mask)\
122         IIO_EVENT_ATTR_SH(accel_y_low, _evlist, _show, _store, _mask)
123
124 #define IIO_EVENT_CODE_ACCEL_Y_LOW (IIO_EVENT_CODE_ACCEL_BASE + 4)
125
126 #define IIO_EVENT_ATTR_ACCEL_Z_LOW(_show, _store, _mask, _handler)      \
127         IIO_EVENT_ATTR(accel_z_low, _show, _store, _mask, _handler)
128
129 #define IIO_EVENT_ATTR_ACCEL_Z_LOW_SH(_evlist, _show, _store, _mask)    \
130         IIO_EVENT_ATTR_SH(accel_z_low, _evlist, _show, _store, _mask)
131
132 #define IIO_EVENT_CODE_ACCEL_Z_LOW (IIO_EVENT_CODE_ACCEL_BASE + 5)
133
134 #define IIO_EVENT_ATTR_FREE_FALL_DETECT(_show, _store, _mask, _handler) \
135         IIO_EVENT_ATTR(free_fall, _show, _store, _mask, _handler)
136
137 #define IIO_EVENT_ATTR_FREE_FALL_DETECT_SH(_evlist, _show, _store, _mask) \
138         IIO_EVENT_ATTR_SH(free_fall, _evlist, _show, _store, _mask)
139
140 #define IIO_EVENT_CODE_FREE_FALL (IIO_EVENT_CODE_ACCEL_BASE + 6)
141
142
143 #define IIO_EVENT_ATTR_ACCEL_X_ROC_HIGH_SH(_evlist, _show, _store, _mask) \
144         IIO_EVENT_ATTR_SH(accel_x_roc_high, _evlist, _show, _store, _mask)
145
146 #define IIO_EVENT_CODE_ACCEL_X_ROC_HIGH (IIO_EVENT_CODE_ACCEL_BASE + 10)
147
148 #define IIO_EVENT_ATTR_ACCEL_X_ROC_LOW_SH(_evlist, _show, _store, _mask) \
149         IIO_EVENT_ATTR_SH(accel_x_roc_low, _evlist, _show, _store, _mask)
150
151 #define IIO_EVENT_CODE_ACCEL_X_ROC_LOW (IIO_EVENT_CODE_ACCEL_BASE + 11)
152
153 #define IIO_EVENT_ATTR_ACCEL_Y_ROC_HIGH_SH(_evlist, _show, _store, _mask) \
154         IIO_EVENT_ATTR_SH(accel_y_roc_high, _evlist, _show, _store, _mask)
155
156 #define IIO_EVENT_CODE_ACCEL_Y_ROC_HIGH (IIO_EVENT_CODE_ACCEL_BASE + 12)
157
158 #define IIO_EVENT_ATTR_ACCEL_Y_ROC_LOW_SH(_evlist, _show, _store, _mask) \
159         IIO_EVENT_ATTR_SH(accel_y_roc_low, _evlist, _show, _store, _mask)
160
161 #define IIO_EVENT_CODE_ACCEL_Y_ROC_LOW (IIO_EVENT_CODE_ACCEL_BASE + 13)
162
163 #define IIO_EVENT_ATTR_ACCEL_Z_ROC_HIGH_SH(_evlist, _show, _store, _mask) \
164         IIO_EVENT_ATTR_SH(accel_z_roc_high, _evlist, _show, _store, _mask)
165
166 #define IIO_EVENT_CODE_ACCEL_Z_ROC_HIGH (IIO_EVENT_CODE_ACCEL_BASE + 14)
167
168 #define IIO_EVENT_ATTR_ACCEL_Z_ROC_LOW_SH(_evlist, _show, _store, _mask) \
169         IIO_EVENT_ATTR_SH(accel_z_roc_low, _evlist, _show, _store, _mask)
170
171 #define IIO_EVENT_CODE_ACCEL_Z_ROC_LOW (IIO_EVENT_CODE_ACCEL_BASE + 15)