summaryrefslogtreecommitdiffstats
path: root/drivers/staging/iio/accel/accel.h
blob: 1b6e37f76200a28ac81b1369da504ad2cfd5a328 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171

#include "../sysfs.h"

/* Accelerometer types of attribute */
#define IIO_DEV_ATTR_ACCEL_OFFSET(_mode, _show, _store, _addr)	\
	IIO_DEVICE_ATTR(accel_offset, _mode, _show, _store, _addr)

#define IIO_DEV_ATTR_ACCEL_X_OFFSET(_mode, _show, _store, _addr)	\
	IIO_DEVICE_ATTR(accel_x_offset, _mode, _show, _store, _addr)

#define IIO_DEV_ATTR_ACCEL_Y_OFFSET(_mode, _show, _store, _addr)	\
	IIO_DEVICE_ATTR(accel_y_offset, _mode, _show, _store, _addr)

#define IIO_DEV_ATTR_ACCEL_Z_OFFSET(_mode, _show, _store, _addr)	\
	IIO_DEVICE_ATTR(accel_z_offset, _mode, _show, _store, _addr)

#define IIO_DEV_ATTR_ACCEL_X_GAIN(_mode, _show, _store, _addr)		\
	IIO_DEVICE_ATTR(accel_x_gain, _mode, _show, _store, _addr)

#define IIO_DEV_ATTR_ACCEL_Y_GAIN(_mode, _show, _store, _addr)		\
	IIO_DEVICE_ATTR(accel_y_gain, _mode, _show, _store, _addr)

#define IIO_DEV_ATTR_ACCEL_Z_GAIN(_mode, _show, _store, _addr)		\
	IIO_DEVICE_ATTR(accel_z_gain, _mode, _show, _store, _addr)

#define IIO_DEV_ATTR_ACCEL(_show, _addr)			\
	IIO_DEVICE_ATTR(accel_raw, S_IRUGO, _show, NULL, _addr)

#define IIO_DEV_ATTR_ACCEL_X(_show, _addr)			\
	IIO_DEVICE_ATTR(accel_x_raw, S_IRUGO, _show, NULL, _addr)

#define IIO_DEV_ATTR_ACCEL_Y(_show, _addr)			\
	IIO_DEVICE_ATTR(accel_y_raw, S_IRUGO, _show, NULL, _addr)

#define IIO_DEV_ATTR_ACCEL_Z(_show, _addr)			\
	IIO_DEVICE_ATTR(accel_z_raw, S_IRUGO, _show, NULL, _addr)

/* Thresholds are somewhat chip dependent - may need quite a few defs here */
/* For unified thresholds (shared across all directions */

/**
 * IIO_DEV_ATTR_ACCEL_THRESH: unified threshold
 * @_mode: read/write
 * @_show: read detector threshold value
 * @_store: write detector threshold value
 * @_addr: driver specific data, typically a register address
 *
 * This one is for cases where as single threshold covers all directions
 **/
#define IIO_DEV_ATTR_ACCEL_THRESH(_mode, _show, _store, _addr)	\
	IIO_DEVICE_ATTR(thresh, _mode, _show, _store, _addr)

/**
 * IIO_DEV_ATTR_ACCEL_THRESH_X: independant direction threshold, x axis
 * @_mode: readable / writable
 * @_show: read x axis detector threshold value
 * @_store: write x axis detector threshold value
 * @_addr: device driver dependant, typically a register address
 **/
#define IIO_DEV_ATTR_ACCEL_THRESH_X(_mode, _show, _store, _addr)	\
	IIO_DEVICE_ATTR(thresh_accel_x, _mode, _show, _store, _addr)

#define IIO_DEV_ATTR_ACCEL_THRESH_Y(_mode, _show, _store, _addr)	\
	IIO_DEVICE_ATTR(thresh_accel_y, _mode, _show, _store, _addr)

#define IIO_DEV_ATTR_ACCEL_THRESH_Z(_mode, _show, _store, _addr)	\
	IIO_DEVICE_ATTR(thresh_accel_z, _mode, _show, _store, _addr)

/**
 * IIO_EVENT_ATTR_ACCEL_X_HIGH: threshold event, x acceleration
 * @_show: read x acceleration high threshold
 * @_store: write x acceleration high threshold
 * @_mask: device dependant, typically a bit mask
 * @_handler: the iio_handler associated with this attribute
 **/
#define IIO_EVENT_ATTR_ACCEL_X_HIGH(_show, _store, _mask, _handler)	\
	IIO_EVENT_ATTR(accel_x_high, _show, _store, _mask, _handler)

/**
 * IIO_EVENT_ATTR_ACCEL_X_HIGH_SH: threshold event, x accel high, shared handler
 * @_evlist: event list used to share the handler
 * @_show: attribute read
 * @_store: attribute write
 * @_mask: driver specific data, typically a bit mask
 **/
#define IIO_EVENT_ATTR_ACCEL_X_HIGH_SH(_evlist, _show, _store, _mask)	\
	IIO_EVENT_ATTR_SH(accel_x_high, _evlist, _show, _store, _mask)

/**
 * IIO_EVENT_CODE_ACCEL_X_HIGH - event code for x axis high accel threshold
 **/
#define IIO_EVENT_CODE_ACCEL_X_HIGH IIO_EVENT_CODE_ACCEL_BASE

#define IIO_EVENT_ATTR_ACCEL_Y_HIGH(_show, _store, _mask, _handler)	\
	IIO_EVENT_ATTR(accel_y_high, _show, _store, _mask, _handler)

#define IIO_EVENT_ATTR_ACCEL_Y_HIGH_SH(_evlist, _show, _store, _mask)	\
	IIO_EVENT_ATTR_SH(accel_y_high, _evlist, _show, _store, _mask)

#define IIO_EVENT_CODE_ACCEL_Y_HIGH (IIO_EVENT_CODE_ACCEL_BASE + 1)

#define IIO_EVENT_ATTR_ACCEL_Z_HIGH(_show, _store, _mask, _handler)	\
	IIO_EVENT_ATTR(accel_z_high, _show, _store, _mask, _handler)

#define IIO_EVENT_ATTR_ACCEL_Z_HIGH_SH(_evlist, _show, _store, _mask)	\
	IIO_EVENT_ATTR_SH(accel_z_high, _evlist, _show, _store, _mask)

#define IIO_EVENT_CODE_ACCEL_Z_HIGH (IIO_EVENT_CODE_ACCEL_BASE + 2)

#define IIO_EVENT_ATTR_ACCEL_X_LOW(_show, _store, _mask, _handler)	\
	IIO_EVENT_ATTR(accel_x_low, _show, _store, _mask, _handler)

#define IIO_EVENT_ATTR_ACCEL_X_LOW_SH(_evlist, _show, _store, _mask)	\
	IIO_EVENT_ATTR_SH(accel_x_low, _evlist, _show, _store, _mask)

#define IIO_EVENT_CODE_ACCEL_X_LOW (IIO_EVENT_CODE_ACCEL_BASE + 3)

#define IIO_EVENT_ATTR_ACCEL_Y_LOW(_show, _store, _mask, _handler) \
	IIO_EVENT_ATTR(accel_y_low, _show, _store, _mask, _handler)

#define IIO_EVENT_ATTR_ACCEL_Y_LOW_SH(_evlist, _show, _store, _mask)\
	IIO_EVENT_ATTR_SH(accel_y_low, _evlist, _show, _store, _mask)

#define IIO_EVENT_CODE_ACCEL_Y_LOW (IIO_EVENT_CODE_ACCEL_BASE + 4)

#define IIO_EVENT_ATTR_ACCEL_Z_LOW(_show, _store, _mask, _handler)	\
	IIO_EVENT_ATTR(accel_z_low, _show, _store, _mask, _handler)

#define IIO_EVENT_ATTR_ACCEL_Z_LOW_SH(_evlist, _show, _store, _mask)	\
	IIO_EVENT_ATTR_SH(accel_z_low, _evlist, _show, _store, _mask)

#define IIO_EVENT_CODE_ACCEL_Z_LOW (IIO_EVENT_CODE_ACCEL_BASE + 5)

#define IIO_EVENT_ATTR_FREE_FALL_DETECT(_show, _store, _mask, _handler)	\
	IIO_EVENT_ATTR(free_fall, _show, _store, _mask, _handler)

#define IIO_EVENT_ATTR_FREE_FALL_DETECT_SH(_evlist, _show, _store, _mask) \
	IIO_EVENT_ATTR_SH(free_fall, _evlist, _show, _store, _mask)

#define IIO_EVENT_CODE_FREE_FALL (IIO_EVENT_CODE_ACCEL_BASE + 6)


#define IIO_EVENT_ATTR_ACCEL_X_ROC_HIGH_SH(_evlist, _show, _store, _mask) \
	IIO_EVENT_ATTR_SH(accel_x_roc_high, _evlist, _show, _store, _mask)

#define IIO_EVENT_CODE_ACCEL_X_ROC_HIGH (IIO_EVENT_CODE_ACCEL_BASE + 10)

#define IIO_EVENT_ATTR_ACCEL_X_ROC_LOW_SH(_evlist, _show, _store, _mask) \
	IIO_EVENT_ATTR_SH(accel_x_roc_low, _evlist, _show, _store, _mask)

#define IIO_EVENT_CODE_ACCEL_X_ROC_LOW (IIO_EVENT_CODE_ACCEL_BASE + 11)

#define IIO_EVENT_ATTR_ACCEL_Y_ROC_HIGH_SH(_evlist, _show, _store, _mask) \
	IIO_EVENT_ATTR_SH(accel_y_roc_high, _evlist, _show, _store, _mask)

#define IIO_EVENT_CODE_ACCEL_Y_ROC_HIGH (IIO_EVENT_CODE_ACCEL_BASE + 12)

#define IIO_EVENT_ATTR_ACCEL_Y_ROC_LOW_SH(_evlist, _show, _store, _mask) \
	IIO_EVENT_ATTR_SH(accel_y_roc_low, _evlist, _show, _store, _mask)

#define IIO_EVENT_CODE_ACCEL_Y_ROC_LOW (IIO_EVENT_CODE_ACCEL_BASE + 13)

#define IIO_EVENT_ATTR_ACCEL_Z_ROC_HIGH_SH(_evlist, _show, _store, _mask) \
	IIO_EVENT_ATTR_SH(accel_z_roc_high, _evlist, _show, _store, _mask)

#define IIO_EVENT_CODE_ACCEL_Z_ROC_HIGH (IIO_EVENT_CODE_ACCEL_BASE + 14)

#define IIO_EVENT_ATTR_ACCEL_Z_ROC_LOW_SH(_evlist, _show, _store, _mask) \
	IIO_EVENT_ATTR_SH(accel_z_roc_low, _evlist, _show, _store, _mask)

#define IIO_EVENT_CODE_ACCEL_Z_ROC_LOW (IIO_EVENT_CODE_ACCEL_BASE + 15)
OpenPOWER on IntegriCloud