1 /*
2  * Copyright (c) 2018 TDK Invensense
3  *
4  * SPDX-License-Identifier: BSD 3-Clause
5  */
6 
7 #ifndef _INV_IMU_DEFS_H_
8 #define _INV_IMU_DEFS_H_
9 
10 #ifdef __cplusplus
11 extern "C" {
12 #endif
13 
14 /** @file inv_imu_defs.h
15  * File exposing the device register map
16  */
17 
18 #include <stdint.h>
19 
20 #define INV_IMU_REV_A 0xA
21 #define INV_IMU_REV_B 0XB
22 
23 /* Include device definition */
24 #include "imu/inv_imu.h"
25 
26 #if INV_IMU_REV == INV_IMU_REV_A
27 #include "imu/inv_imu_regmap_rev_a.h"
28 #elif INV_IMU_REV == INV_IMU_REV_B
29 #include "imu/inv_imu_regmap_rev_b.h"
30 #endif
31 
32 #define ACCEL_DATA_SIZE 6
33 #define GYRO_DATA_SIZE  6
34 #define TEMP_DATA_SIZE  2
35 
36 #define FIFO_HEADER_SIZE              1
37 #define FIFO_ACCEL_DATA_SIZE          ACCEL_DATA_SIZE
38 #define FIFO_GYRO_DATA_SIZE           GYRO_DATA_SIZE
39 #define FIFO_TEMP_DATA_SIZE           1
40 #define FIFO_TS_FSYNC_SIZE            2
41 #define FIFO_TEMP_HIGH_RES_SIZE       1
42 #define FIFO_ACCEL_GYRO_HIGH_RES_SIZE 3
43 
44 #define FIFO_16BYTES_PACKET_SIZE                                                                   \
45 	(FIFO_HEADER_SIZE + FIFO_ACCEL_DATA_SIZE + FIFO_GYRO_DATA_SIZE + FIFO_TEMP_DATA_SIZE +         \
46 	 FIFO_TS_FSYNC_SIZE)
47 #define FIFO_20BYTES_PACKET_SIZE                                                                   \
48 	(FIFO_HEADER_SIZE + FIFO_ACCEL_DATA_SIZE + FIFO_GYRO_DATA_SIZE + FIFO_TEMP_DATA_SIZE +         \
49 	 FIFO_TS_FSYNC_SIZE + FIFO_TEMP_HIGH_RES_SIZE + FIFO_ACCEL_GYRO_HIGH_RES_SIZE)
50 
51 #define FIFO_HEADER_ODR_ACCEL 0x01
52 #define FIFO_HEADER_ODR_GYRO  0x02
53 #define FIFO_HEADER_FSYNC     0x04
54 #define FIFO_HEADER_TMST      0x08
55 #define FIFO_HEADER_HEADER_20 0x10
56 #define FIFO_HEADER_GYRO      0x20
57 #define FIFO_HEADER_ACC       0x40
58 #define FIFO_HEADER_MSG       0x80
59 
60 #define INVALID_VALUE_FIFO                   ((int16_t)0x8000)
61 #define INVALID_VALUE_FIFO_1B                ((int8_t)0x80)
62 #define OUT_OF_BOUND_TEMPERATURE_NEG_FIFO_1B ((int8_t)0x81)
63 #define OUT_OF_BOUND_TEMPERATURE_POS_FIFO_1B ((int8_t)0x7F)
64 
65 /** Describe the content of the FIFO header */
66 typedef union {
67 	unsigned char Byte;
68 	struct {
69 #if INV_IMU_IS_GYRO_SUPPORTED
70 		unsigned char gyro_odr_different : 1;
71 #else
72 		unsigned char reserved1 : 1;
73 #endif
74 		unsigned char accel_odr_different : 1;
75 #if INV_IMU_IS_GYRO_SUPPORTED
76 		unsigned char fsync_bit : 1;
77 #else
78 		unsigned char reserved2 : 1;
79 #endif
80 		unsigned char timestamp_bit : 1;
81 		unsigned char twentybits_bit : 1;
82 #if INV_IMU_IS_GYRO_SUPPORTED
83 		unsigned char gyro_bit : 1;
84 #else
85 		unsigned char reserved3 : 1;
86 #endif
87 		unsigned char accel_bit : 1;
88 		unsigned char msg_bit : 1;
89 	} bits;
90 } fifo_header_t;
91 
92 /* ----------------------------------------------------------------------------
93  * Device registers description
94  *
95  * Next section defines some of the registers bitfield and declare corresponding
96  * accessors.
97  * Note that descriptors and accessors are not provided for all the registers
98  * but only for the most useful ones.
99  * For all details on registers and bitfields functionalities please refer to
100  * the device datasheet.
101  * ---------------------------------------------------------------------------- */
102 
103 /* ---------------------------------------------------------------------------
104  * register bank 0
105  * ---------------------------------------------------------------------------- */
106 
107 /*
108  * DEVICE_CONFIG
109  * Register Name : DEVICE_CONFIG
110  */
111 
112 /* SPI_MODE */
113 typedef enum {
114 	DEVICE_CONFIG_SPI_MODE_1_2 = (0x1 << DEVICE_CONFIG_SPI_MODE_POS),
115 	DEVICE_CONFIG_SPI_MODE_0_3 = (0x0 << DEVICE_CONFIG_SPI_MODE_POS),
116 } DEVICE_CONFIG_SPI_MODE_t;
117 
118 /* SPI_AP_4WIRE */
119 typedef enum {
120 	DEVICE_CONFIG_SPI_4WIRE = (0x1 << DEVICE_CONFIG_SPI_AP_4WIRE_POS),
121 	DEVICE_CONFIG_SPI_3WIRE = (0x0 << DEVICE_CONFIG_SPI_AP_4WIRE_POS),
122 } DEVICE_CONFIG_SPI_AP_4WIRE_t;
123 
124 /*
125  * SIGNAL_PATH_RESET
126  * Register Name: SIGNAL_PATH_RESET
127  */
128 
129 /* SOFT_RESET_DEVICE_CONFIG */
130 typedef enum {
131 	SIGNAL_PATH_RESET_SOFT_RESET_DEVICE_CONFIG_EN =
132 	    (0x01 << SIGNAL_PATH_RESET_SOFT_RESET_DEVICE_CONFIG_POS),
133 	SIGNAL_PATH_RESET_SOFT_RESET_DEVICE_CONFIG_DIS =
134 	    (0x00 << SIGNAL_PATH_RESET_SOFT_RESET_DEVICE_CONFIG_POS),
135 } SIGNAL_PATH_RESET_SOFT_RESET_DEVICE_CONFIG_t;
136 
137 /* FIFO_FLUSH */
138 typedef enum {
139 	SIGNAL_PATH_RESET_FIFO_FLUSH_EN  = (0x01 << SIGNAL_PATH_RESET_FIFO_FLUSH_POS),
140 	SIGNAL_PATH_RESET_FIFO_FLUSH_DIS = (0x00 << SIGNAL_PATH_RESET_FIFO_FLUSH_POS),
141 } SIGNAL_PATH_RESET_FIFO_FLUSH_t;
142 
143 /*
144  * DRIVE_CONFIG3
145  * Register Name: DRIVE_CONFIG3
146  */
147 
148 /* SPI_SLEW_RATE */
149 typedef enum {
150 	DRIVE_CONFIG3_SPI_SLEW_RATE_MAX_2_NS  = (0x05 << DRIVE_CONFIG3_SPI_SLEW_RATE_POS),
151 	DRIVE_CONFIG3_SPI_SLEW_RATE_MAX_8_NS  = (0x04 << DRIVE_CONFIG3_SPI_SLEW_RATE_POS),
152 	DRIVE_CONFIG3_SPI_SLEW_RATE_MAX_14_NS = (0x03 << DRIVE_CONFIG3_SPI_SLEW_RATE_POS),
153 	DRIVE_CONFIG3_SPI_SLEW_RATE_MAX_19_NS = (0x02 << DRIVE_CONFIG3_SPI_SLEW_RATE_POS),
154 	DRIVE_CONFIG3_SPI_SLEW_RATE_MAX_36_NS = (0x01 << DRIVE_CONFIG3_SPI_SLEW_RATE_POS),
155 	DRIVE_CONFIG3_SPI_SLEW_RATE_MAX_60_NS = (0x00 << DRIVE_CONFIG3_SPI_SLEW_RATE_POS),
156 } DRIVE_CONFIG3_SPI_SLEW_RATE_t;
157 
158 /*
159  * INT_CONFIG
160  * Register Name: INT_CONFIG
161  */
162 
163 /* INT2_MODE */
164 typedef enum {
165 	INT_CONFIG_INT2_MODE_LATCHED = (0x01 << INT_CONFIG_INT2_MODE_POS),
166 	INT_CONFIG_INT2_MODE_PULSED  = (0x00 << INT_CONFIG_INT2_MODE_POS),
167 } INT_CONFIG_INT2_MODE_t;
168 
169 /* INT2_DRIVE_CIRCUIT */
170 typedef enum {
171 	INT_CONFIG_INT2_DRIVE_CIRCUIT_PP = (0x01 << INT_CONFIG_INT2_DRIVE_CIRCUIT_POS),
172 	INT_CONFIG_INT2_DRIVE_CIRCUIT_OD = (0x00 << INT_CONFIG_INT2_DRIVE_CIRCUIT_POS),
173 } INT_CONFIG_INT2_DRIVE_CIRCUIT_t;
174 
175 /* INT2_POLARITY */
176 typedef enum {
177 	INT_CONFIG_INT2_POLARITY_HIGH = (0x01 << INT_CONFIG_INT2_POLARITY_POS),
178 	INT_CONFIG_INT2_POLARITY_LOW  = (0x00 << INT_CONFIG_INT2_POLARITY_POS),
179 } INT_CONFIG_INT2_POLARITY_t;
180 
181 /* INT1_MODE */
182 typedef enum {
183 	INT_CONFIG_INT1_MODE_LATCHED = (0x01 << INT_CONFIG_INT1_MODE_POS),
184 	INT_CONFIG_INT1_MODE_PULSED  = (0x00 << INT_CONFIG_INT1_MODE_POS),
185 } INT_CONFIG_INT1_MODE_t;
186 
187 /* INT1_DRIVE_CIRCUIT */
188 typedef enum {
189 	INT_CONFIG_INT1_DRIVE_CIRCUIT_PP = (0x01 << INT_CONFIG_INT1_DRIVE_CIRCUIT_POS),
190 	INT_CONFIG_INT1_DRIVE_CIRCUIT_OD = (0x00 << INT_CONFIG_INT1_DRIVE_CIRCUIT_POS),
191 } INT_CONFIG_INT1_DRIVE_CIRCUIT_t;
192 
193 /* INT1_POLARITY */
194 typedef enum {
195 	INT_CONFIG_INT1_POLARITY_HIGH = 0x01,
196 	INT_CONFIG_INT1_POLARITY_LOW  = 0x00,
197 } INT_CONFIG_INT1_POLARITY_t;
198 
199 /*
200  * PWR_MGMT0
201  * Register Name: PWR_MGMT0
202  */
203 
204 /* ACCEL_LP_CLK_SEL */
205 typedef enum {
206 	PWR_MGMT0_ACCEL_LP_CLK_WUOSC = (0x00 << PWR_MGMT0_ACCEL_LP_CLK_SEL_POS),
207 	PWR_MGMT0_ACCEL_LP_CLK_RCOSC = (0x01 << PWR_MGMT0_ACCEL_LP_CLK_SEL_POS),
208 } PWR_MGMT0_ACCEL_LP_CLK_t;
209 
210 /* IDLE */
211 typedef enum {
212 	PWR_MGMT0_IDLE_DIS = (0x01 << PWR_MGMT0_IDLE_POS),
213 	PWR_MGMT0_IDLE_EN  = (0x00 << PWR_MGMT0_IDLE_POS),
214 } PWR_MGMT0_IDLE_t;
215 
216 #if INV_IMU_IS_GYRO_SUPPORTED
217 /* GYRO_MODE */
218 typedef enum {
219 	PWR_MGMT0_GYRO_MODE_LN      = (0x03 << PWR_MGMT0_GYRO_MODE_POS),
220 	PWR_MGMT0_GYRO_MODE_LP      = (0x02 << PWR_MGMT0_GYRO_MODE_POS),
221 	PWR_MGMT0_GYRO_MODE_STANDBY = (0x01 << PWR_MGMT0_GYRO_MODE_POS),
222 	PWR_MGMT0_GYRO_MODE_OFF     = (0x00 << PWR_MGMT0_GYRO_MODE_POS),
223 } PWR_MGMT0_GYRO_MODE_t;
224 #endif
225 
226 /* ACCEL_MODE */
227 typedef enum {
228 	PWR_MGMT0_ACCEL_MODE_LN  = 0x03,
229 	PWR_MGMT0_ACCEL_MODE_LP  = 0x02,
230 	PWR_MGMT0_ACCEL_MODE_OFF = 0x00,
231 } PWR_MGMT0_ACCEL_MODE_t;
232 
233 #if INV_IMU_IS_GYRO_SUPPORTED
234 /*
235  * GYRO_CONFIG0
236  * Register Name: GYRO_CONFIG0
237  */
238 
239 /* GYRO_FS_SEL*/
240 typedef enum {
241 #if INV_IMU_HFSR_SUPPORTED
242 	GYRO_CONFIG0_FS_SEL_500dps  = (3 << GYRO_CONFIG0_GYRO_UI_FS_SEL_POS),
243 	GYRO_CONFIG0_FS_SEL_1000dps = (2 << GYRO_CONFIG0_GYRO_UI_FS_SEL_POS),
244 	GYRO_CONFIG0_FS_SEL_2000dps = (1 << GYRO_CONFIG0_GYRO_UI_FS_SEL_POS),
245 	GYRO_CONFIG0_FS_SEL_4000dps = (0 << GYRO_CONFIG0_GYRO_UI_FS_SEL_POS),
246 #else
247 	GYRO_CONFIG0_FS_SEL_250dps  = (3 << GYRO_CONFIG0_GYRO_UI_FS_SEL_POS),
248 	GYRO_CONFIG0_FS_SEL_500dps  = (2 << GYRO_CONFIG0_GYRO_UI_FS_SEL_POS),
249 	GYRO_CONFIG0_FS_SEL_1000dps = (1 << GYRO_CONFIG0_GYRO_UI_FS_SEL_POS),
250 	GYRO_CONFIG0_FS_SEL_2000dps = (0 << GYRO_CONFIG0_GYRO_UI_FS_SEL_POS),
251 #endif
252 } GYRO_CONFIG0_FS_SEL_t;
253 
254 /* GYRO_ODR */
255 typedef enum {
256 	GYRO_CONFIG0_ODR_1_5625_HZ = 0xF,
257 	GYRO_CONFIG0_ODR_3_125_HZ  = 0xE,
258 	GYRO_CONFIG0_ODR_6_25_HZ   = 0xD,
259 	GYRO_CONFIG0_ODR_12_5_HZ   = 0xC,
260 	GYRO_CONFIG0_ODR_25_HZ     = 0xB,
261 	GYRO_CONFIG0_ODR_50_HZ     = 0xA,
262 	GYRO_CONFIG0_ODR_100_HZ    = 0x9,
263 	GYRO_CONFIG0_ODR_200_HZ    = 0x8,
264 	GYRO_CONFIG0_ODR_400_HZ    = 0x7,
265 	GYRO_CONFIG0_ODR_800_HZ    = 0x6,
266 	GYRO_CONFIG0_ODR_1600_HZ   = 0x5,
267 } GYRO_CONFIG0_ODR_t;
268 #endif
269 
270 /*
271  * ACCEL_CONFIG0
272  * Register Name: ACCEL_CONFIG0
273  */
274 
275 /* ACCEL_FS_SEL */
276 typedef enum {
277 #if INV_IMU_HFSR_SUPPORTED
278 	ACCEL_CONFIG0_FS_SEL_4g  = (0x3 << ACCEL_CONFIG0_ACCEL_UI_FS_SEL_POS),
279 	ACCEL_CONFIG0_FS_SEL_8g  = (0x2 << ACCEL_CONFIG0_ACCEL_UI_FS_SEL_POS),
280 	ACCEL_CONFIG0_FS_SEL_16g = (0x1 << ACCEL_CONFIG0_ACCEL_UI_FS_SEL_POS),
281 	ACCEL_CONFIG0_FS_SEL_32g = (0x0 << ACCEL_CONFIG0_ACCEL_UI_FS_SEL_POS),
282 #else
283 	ACCEL_CONFIG0_FS_SEL_2g  = (0x3 << ACCEL_CONFIG0_ACCEL_UI_FS_SEL_POS),
284 	ACCEL_CONFIG0_FS_SEL_4g  = (0x2 << ACCEL_CONFIG0_ACCEL_UI_FS_SEL_POS),
285 	ACCEL_CONFIG0_FS_SEL_8g  = (0x1 << ACCEL_CONFIG0_ACCEL_UI_FS_SEL_POS),
286 	ACCEL_CONFIG0_FS_SEL_16g = (0x0 << ACCEL_CONFIG0_ACCEL_UI_FS_SEL_POS),
287 #endif
288 } ACCEL_CONFIG0_FS_SEL_t;
289 
290 /* ACCEL_ODR */
291 typedef enum {
292 	ACCEL_CONFIG0_ODR_1_5625_HZ = 0xF,
293 	ACCEL_CONFIG0_ODR_3_125_HZ  = 0xE,
294 	ACCEL_CONFIG0_ODR_6_25_HZ   = 0xD,
295 	ACCEL_CONFIG0_ODR_12_5_HZ   = 0xC,
296 	ACCEL_CONFIG0_ODR_25_HZ     = 0xB,
297 	ACCEL_CONFIG0_ODR_50_HZ     = 0xA,
298 	ACCEL_CONFIG0_ODR_100_HZ    = 0x9,
299 	ACCEL_CONFIG0_ODR_200_HZ    = 0x8,
300 	ACCEL_CONFIG0_ODR_400_HZ    = 0x7,
301 	ACCEL_CONFIG0_ODR_800_HZ    = 0x6,
302 	ACCEL_CONFIG0_ODR_1600_HZ   = 0x5,
303 } ACCEL_CONFIG0_ODR_t;
304 
305 #if INV_IMU_IS_GYRO_SUPPORTED
306 /*
307  * GYRO_CONFIG1
308  * Register Name: GYRO_CONFIG1
309  */
310 
311 /* GYRO_UI_FILT_BW_IND */
312 typedef enum {
313 	GYRO_CONFIG1_GYRO_FILT_BW_16        = (0x07 << GYRO_CONFIG1_GYRO_UI_FILT_BW_POS),
314 	GYRO_CONFIG1_GYRO_FILT_BW_25        = (0x06 << GYRO_CONFIG1_GYRO_UI_FILT_BW_POS),
315 	GYRO_CONFIG1_GYRO_FILT_BW_34        = (0x05 << GYRO_CONFIG1_GYRO_UI_FILT_BW_POS),
316 	GYRO_CONFIG1_GYRO_FILT_BW_53        = (0x04 << GYRO_CONFIG1_GYRO_UI_FILT_BW_POS),
317 	GYRO_CONFIG1_GYRO_FILT_BW_73        = (0x03 << GYRO_CONFIG1_GYRO_UI_FILT_BW_POS),
318 	GYRO_CONFIG1_GYRO_FILT_BW_121       = (0x02 << GYRO_CONFIG1_GYRO_UI_FILT_BW_POS),
319 	GYRO_CONFIG1_GYRO_FILT_BW_180       = (0x01 << GYRO_CONFIG1_GYRO_UI_FILT_BW_POS),
320 	GYRO_CONFIG1_GYRO_FILT_BW_NO_FILTER = (0x00 << GYRO_CONFIG1_GYRO_UI_FILT_BW_POS),
321 } GYRO_CONFIG1_GYRO_FILT_BW_t;
322 #endif
323 
324 /*
325  * ACCEL_CONFIG1
326  * Register Name: ACCEL_CONFIG1
327  */
328 
329 /* ACCEL_UI_AVG_IND */
330 typedef enum {
331 	ACCEL_CONFIG1_ACCEL_FILT_AVG_64 = (0x5 << ACCEL_CONFIG1_ACCEL_UI_AVG_POS),
332 	ACCEL_CONFIG1_ACCEL_FILT_AVG_32 = (0x4 << ACCEL_CONFIG1_ACCEL_UI_AVG_POS),
333 	ACCEL_CONFIG1_ACCEL_FILT_AVG_16 = (0x3 << ACCEL_CONFIG1_ACCEL_UI_AVG_POS),
334 	ACCEL_CONFIG1_ACCEL_FILT_AVG_8  = (0x2 << ACCEL_CONFIG1_ACCEL_UI_AVG_POS),
335 	ACCEL_CONFIG1_ACCEL_FILT_AVG_4  = (0x1 << ACCEL_CONFIG1_ACCEL_UI_AVG_POS),
336 	ACCEL_CONFIG1_ACCEL_FILT_AVG_2  = (0x0 << ACCEL_CONFIG1_ACCEL_UI_AVG_POS),
337 } ACCEL_CONFIG1_ACCEL_FILT_AVG_t;
338 
339 /* ACCEL_UI_FILT_BW_IND */
340 typedef enum {
341 	ACCEL_CONFIG1_ACCEL_FILT_BW_16        = (0x7 << ACCEL_CONFIG1_ACCEL_UI_FILT_BW_POS),
342 	ACCEL_CONFIG1_ACCEL_FILT_BW_25        = (0x6 << ACCEL_CONFIG1_ACCEL_UI_FILT_BW_POS),
343 	ACCEL_CONFIG1_ACCEL_FILT_BW_34        = (0x5 << ACCEL_CONFIG1_ACCEL_UI_FILT_BW_POS),
344 	ACCEL_CONFIG1_ACCEL_FILT_BW_53        = (0x4 << ACCEL_CONFIG1_ACCEL_UI_FILT_BW_POS),
345 	ACCEL_CONFIG1_ACCEL_FILT_BW_73        = (0x3 << ACCEL_CONFIG1_ACCEL_UI_FILT_BW_POS),
346 	ACCEL_CONFIG1_ACCEL_FILT_BW_121       = (0x2 << ACCEL_CONFIG1_ACCEL_UI_FILT_BW_POS),
347 	ACCEL_CONFIG1_ACCEL_FILT_BW_180       = (0x1 << ACCEL_CONFIG1_ACCEL_UI_FILT_BW_POS),
348 	ACCEL_CONFIG1_ACCEL_FILT_BW_NO_FILTER = (0x0 << ACCEL_CONFIG1_ACCEL_UI_FILT_BW_POS),
349 } ACCEL_CONFIG1_ACCEL_FILT_BW_t;
350 
351 /*
352  * APEX_CONFIG0
353  * Register Name: APEX_CONFIG0
354  */
355 
356 /* DMP_POWER_SAVE_EN */
357 typedef enum {
358 	APEX_CONFIG0_DMP_POWER_SAVE_EN  = (0x1 << APEX_CONFIG0_DMP_POWER_SAVE_EN_POS),
359 	APEX_CONFIG0_DMP_POWER_SAVE_DIS = (0x0 << APEX_CONFIG0_DMP_POWER_SAVE_EN_POS),
360 } APEX_CONFIG0_DMP_POWER_SAVE_t;
361 
362 /* DMP_INIT_EN */
363 typedef enum {
364 	APEX_CONFIG0_DMP_INIT_EN  = (0x01 << APEX_CONFIG0_DMP_INIT_EN_POS),
365 	APEX_CONFIG0_DMP_INIT_DIS = (0x00 << APEX_CONFIG0_DMP_INIT_EN_POS),
366 } APEX_CONFIG0_DMP_INIT_t;
367 
368 /* DMP_MEM_RESET */
369 typedef enum {
370 	APEX_CONFIG0_DMP_MEM_RESET_APEX_ST_EN = (0x01 << APEX_CONFIG0_DMP_MEM_RESET_EN_POS),
371 	APEX_CONFIG0_DMP_MEM_RESET_DIS        = (0x00 << APEX_CONFIG0_DMP_MEM_RESET_EN_POS),
372 } APEX_CONFIG0_DMP_MEM_RESET_t;
373 
374 /*
375  * APEX_CONFIG1
376  * Register Name: APEX_CONFIG1
377  */
378 
379 /* SMD_ENABLE */
380 typedef enum {
381 	APEX_CONFIG1_SMD_ENABLE_DIS = (0x00 << APEX_CONFIG1_SMD_ENABLE_POS),
382 	APEX_CONFIG1_SMD_ENABLE_EN  = (0x01 << APEX_CONFIG1_SMD_ENABLE_POS),
383 } APEX_CONFIG1_SMD_ENABLE_t;
384 
385 /* FF_ENABLE */
386 typedef enum {
387 	APEX_CONFIG1_FF_ENABLE_DIS = (0x00 << APEX_CONFIG1_FF_ENABLE_POS),
388 	APEX_CONFIG1_FF_ENABLE_EN  = (0x01 << APEX_CONFIG1_FF_ENABLE_POS),
389 } APEX_CONFIG1_FF_ENABLE_t;
390 
391 /* TILT_ENABLE */
392 typedef enum {
393 	APEX_CONFIG1_TILT_ENABLE_DIS = (0x0 << APEX_CONFIG1_TILT_ENABLE_POS),
394 	APEX_CONFIG1_TILT_ENABLE_EN  = (0x1 << APEX_CONFIG1_TILT_ENABLE_POS),
395 } APEX_CONFIG1_TILT_ENABLE_t;
396 
397 /* PED_ENABLE */
398 typedef enum {
399 	APEX_CONFIG1_PED_ENABLE_DIS = (0x0 << APEX_CONFIG1_PED_ENABLE_POS),
400 	APEX_CONFIG1_PED_ENABLE_EN  = (0x1 << APEX_CONFIG1_PED_ENABLE_POS),
401 } APEX_CONFIG1_PED_ENABLE_t;
402 
403 /* DMP_ODR */
404 typedef enum {
405 	APEX_CONFIG1_DMP_ODR_25Hz  = (0x0 << APEX_CONFIG1_DMP_ODR_POS),
406 	APEX_CONFIG1_DMP_ODR_50Hz  = (0x2 << APEX_CONFIG1_DMP_ODR_POS),
407 	APEX_CONFIG1_DMP_ODR_100Hz = (0x3 << APEX_CONFIG1_DMP_ODR_POS),
408 	APEX_CONFIG1_DMP_ODR_400Hz = (0x1 << APEX_CONFIG1_DMP_ODR_POS),
409 } APEX_CONFIG1_DMP_ODR_t;
410 
411 /*
412  * WOM_CONFIG
413  * Register Name: WOM_CONFIG
414  */
415 
416 /* WOM_INT_DUR */
417 typedef enum {
418 	WOM_CONFIG_WOM_INT_DUR_1_SMPL = (0x00 << WOM_CONFIG_WOM_INT_DUR_POS),
419 	WOM_CONFIG_WOM_INT_DUR_2_SMPL = (0x01 << WOM_CONFIG_WOM_INT_DUR_POS),
420 	WOM_CONFIG_WOM_INT_DUR_3_SMPL = (0x02 << WOM_CONFIG_WOM_INT_DUR_POS),
421 	WOM_CONFIG_WOM_INT_DUR_4_SMPL = (0x03 << WOM_CONFIG_WOM_INT_DUR_POS),
422 } WOM_CONFIG_WOM_INT_DUR_t;
423 
424 /* WOM_INT_MODE */
425 typedef enum {
426 	WOM_CONFIG_WOM_INT_MODE_ANDED = (0x01 << WOM_CONFIG_WOM_INT_MODE_POS),
427 	WOM_CONFIG_WOM_INT_MODE_ORED  = (0x00 << WOM_CONFIG_WOM_INT_MODE_POS),
428 } WOM_CONFIG_WOM_INT_MODE_t;
429 
430 /* WOM_MODE */
431 typedef enum {
432 	WOM_CONFIG_WOM_MODE_CMP_PREV = (0x01 << WOM_CONFIG_WOM_MODE_POS),
433 	WOM_CONFIG_WOM_MODE_CMP_INIT = (0x00 << WOM_CONFIG_WOM_MODE_POS),
434 } WOM_CONFIG_WOM_MODE_t;
435 
436 /* WOM_ENABLE */
437 typedef enum {
438 	WOM_CONFIG_WOM_EN_ENABLE  = (0x01 << WOM_CONFIG_WOM_EN_POS),
439 	WOM_CONFIG_WOM_EN_DISABLE = (0x00 << WOM_CONFIG_WOM_EN_POS),
440 } WOM_CONFIG_WOM_EN_t;
441 
442 /*
443  * FIFO_CONFIG1
444  * Register Name: FIFO_CONFIG
445  */
446 
447 /* FIFO_MODE */
448 typedef enum {
449 	FIFO_CONFIG1_FIFO_MODE_SNAPSHOT = (0x01 << FIFO_CONFIG1_FIFO_MODE_POS),
450 	FIFO_CONFIG1_FIFO_MODE_STREAM   = (0x00 << FIFO_CONFIG1_FIFO_MODE_POS)
451 } FIFO_CONFIG1_FIFO_MODE_t;
452 
453 /* FIFO_BYPASS */
454 typedef enum {
455 	FIFO_CONFIG1_FIFO_BYPASS_ON  = (0x01 << FIFO_CONFIG1_FIFO_BYPASS_POS),
456 	FIFO_CONFIG1_FIFO_BYPASS_OFF = (0x00 << FIFO_CONFIG1_FIFO_BYPASS_POS),
457 } FIFO_CONFIG1_FIFO_BYPASS_t;
458 
459 /*
460  * APEX_DATA3
461  * Register Name: APEX_DATA3
462  */
463 
464 /* DMP_IDLE */
465 typedef enum {
466 	APEX_DATA3_DMP_IDLE_ON  = (0x01 << APEX_DATA3_DMP_IDLE_POS),
467 	APEX_DATA3_DMP_IDLE_OFF = (0x00 << APEX_DATA3_DMP_IDLE_POS),
468 } APEX_DATA3_DMP_IDLE_OFF_t;
469 
470 /* ACTIVITY_CLASS */
471 typedef enum {
472 	APEX_DATA3_ACTIVITY_CLASS_OTHER = 0x0,
473 	APEX_DATA3_ACTIVITY_CLASS_WALK  = 0x1,
474 	APEX_DATA3_ACTIVITY_CLASS_RUN   = 0x2,
475 } APEX_DATA3_ACTIVITY_CLASS_t;
476 
477 /*
478  * INTF_CONFIG0
479  * Register Name: INTF_CONFIG0
480  */
481 
482 /* FIFO_COUNT_REC */
483 typedef enum {
484 	INTF_CONFIG0_FIFO_COUNT_REC_RECORD = (0x01 << INTF_CONFIG0_FIFO_COUNT_FORMAT_POS),
485 	INTF_CONFIG0_FIFO_COUNT_REC_BYTE   = (0x00 << INTF_CONFIG0_FIFO_COUNT_FORMAT_POS),
486 } INTF_CONFIG0_FIFO_COUNT_REC_t;
487 
488 /* FIFO_COUNT_ENDIAN */
489 typedef enum {
490 	INTF_CONFIG0_FIFO_COUNT_BIG_ENDIAN    = (0x01 << INTF_CONFIG0_FIFO_COUNT_ENDIAN_POS),
491 	INTF_CONFIG0_FIFO_COUNT_LITTLE_ENDIAN = (0x00 << INTF_CONFIG0_FIFO_COUNT_ENDIAN_POS),
492 } INTF_CONFIG0_FIFO_COUNT_ENDIAN_t;
493 
494 /* DATA_ENDIAN */
495 typedef enum {
496 	INTF_CONFIG0_DATA_BIG_ENDIAN    = (0x01 << INTF_CONFIG0_SENSOR_DATA_ENDIAN_POS),
497 	INTF_CONFIG0_DATA_LITTLE_ENDIAN = (0x00 << INTF_CONFIG0_SENSOR_DATA_ENDIAN_POS),
498 } INTF_CONFIG0_DATA_ENDIAN_t;
499 
500 /* ---------------------------------------------------------------------------
501  * register bank MREG1
502  * ---------------------------------------------------------------------------- */
503 
504 /*
505  * TMST_CONFIG1_MREG1
506  * Register Name: TMST_CONFIG1
507  */
508 
509 /* TMST_RES */
510 typedef enum {
511 	TMST_CONFIG1_RESOL_16us = (0x01 << TMST_CONFIG1_TMST_RES_POS),
512 	TMST_CONFIG1_RESOL_1us  = (0x00 << TMST_CONFIG1_TMST_RES_POS),
513 } TMST_CONFIG1_RESOL_t;
514 
515 /* TMST_FSYNC */
516 typedef enum {
517 	TMST_CONFIG1_TMST_FSYNC_EN  = (0x01 << TMST_CONFIG1_TMST_FSYNC_EN_POS),
518 	TMST_CONFIG1_TMST_FSYNC_DIS = (0x00 << TMST_CONFIG1_TMST_FSYNC_EN_POS),
519 } TMST_CONFIG1_TMST_FSYNC_EN_t;
520 
521 /* TMST_EN */
522 typedef enum {
523 	TMST_CONFIG1_TMST_EN  = 0x01,
524 	TMST_CONFIG1_TMST_DIS = 0x00,
525 } TMST_CONFIG1_TMST_EN_t;
526 
527 /*
528  * FIFO_CONFIG5_MREG1
529  * Register Name: FIFO_CONFIG5
530  */
531 /* FIFO_WM_GT_TH */
532 typedef enum {
533 	FIFO_CONFIG5_WM_GT_TH_EN  = (0x1 << FIFO_CONFIG5_FIFO_WM_GT_TH_POS),
534 	FIFO_CONFIG5_WM_GT_TH_DIS = (0x0 << FIFO_CONFIG5_FIFO_WM_GT_TH_POS),
535 } FIFO_CONFIG5_WM_GT_t;
536 
537 /* FIFO_HIRES_EN */
538 typedef enum {
539 	FIFO_CONFIG5_HIRES_EN  = (0x1 << FIFO_CONFIG5_FIFO_HIRES_EN_POS),
540 	FIFO_CONFIG5_HIRES_DIS = (0x0 << FIFO_CONFIG5_FIFO_HIRES_EN_POS),
541 } FIFO_CONFIG5_HIRES_t;
542 
543 /* FIFO_TMST_FSYNC_EN */
544 typedef enum {
545 	FIFO_CONFIG5_TMST_FSYNC_EN  = (0x1 << FIFO_CONFIG5_FIFO_TMST_FSYNC_EN_POS),
546 	FIFO_CONFIG5_TMST_FSYNC_DIS = (0x0 << FIFO_CONFIG5_FIFO_TMST_FSYNC_EN_POS),
547 } FIFO_CONFIG5_TMST_FSYNC_t;
548 
549 #if INV_IMU_IS_GYRO_SUPPORTED
550 /* FIFO_GYRO_EN */
551 typedef enum {
552 	FIFO_CONFIG5_GYRO_EN  = (0x1 << FIFO_CONFIG5_FIFO_GYRO_EN_POS),
553 	FIFO_CONFIG5_GYRO_DIS = (0x0 << FIFO_CONFIG5_FIFO_GYRO_EN_POS),
554 } FIFO_CONFIG5_GYRO_t;
555 #endif
556 
557 /* FIFO_ACCEL_EN*/
558 typedef enum {
559 	FIFO_CONFIG5_ACCEL_EN  = 0x01,
560 	FIFO_CONFIG5_ACCEL_DIS = 0x00,
561 } FIFO_CONFIG5_ACCEL_t;
562 
563 #if INV_IMU_IS_GYRO_SUPPORTED
564 /*
565  * FSYNC_CONFIG_MREG1
566  * Register Name: FSYNC_CONFIG
567  */
568 
569 /* FSYNC_UI_SEL */
570 typedef enum {
571 	FSYNC_CONFIG_UI_SEL_NO      = (0x0 << FSYNC_CONFIG_FSYNC_UI_SEL_POS),
572 	FSYNC_CONFIG_UI_SEL_TEMP    = (0x1 << FSYNC_CONFIG_FSYNC_UI_SEL_POS),
573 	FSYNC_CONFIG_UI_SEL_GYRO_X  = (0x2 << FSYNC_CONFIG_FSYNC_UI_SEL_POS),
574 	FSYNC_CONFIG_UI_SEL_GYRO_Y  = (0x3 << FSYNC_CONFIG_FSYNC_UI_SEL_POS),
575 	FSYNC_CONFIG_UI_SEL_GYRO_Z  = (0x4 << FSYNC_CONFIG_FSYNC_UI_SEL_POS),
576 	FSYNC_CONFIG_UI_SEL_ACCEL_X = (0x5 << FSYNC_CONFIG_FSYNC_UI_SEL_POS),
577 	FSYNC_CONFIG_UI_SEL_ACCEL_Y = (0x6 << FSYNC_CONFIG_FSYNC_UI_SEL_POS),
578 	FSYNC_CONFIG_UI_SEL_ACCEL_Z = (0x7 << FSYNC_CONFIG_FSYNC_UI_SEL_POS),
579 } FSYNC_CONFIG_UI_SEL_t;
580 #endif
581 
582 /*
583  * ST_CONFIG_MREG1
584  * Register Name: ST_CONFIG
585  */
586 typedef enum {
587 	ST_CONFIG_16_SAMPLES  = (0 << ST_CONFIG_ST_NUMBER_SAMPLE_POS),
588 	ST_CONFIG_200_SAMPLES = (1 << ST_CONFIG_ST_NUMBER_SAMPLE_POS),
589 } ST_CONFIG_NUM_SAMPLES_t;
590 
591 typedef enum {
592 	ST_CONFIG_ACCEL_ST_LIM_50 = (7 << ST_CONFIG_ACCEL_ST_LIM_POS),
593 } ST_CONFIG_ACCEL_ST_LIM_t;
594 
595 #if INV_IMU_IS_GYRO_SUPPORTED
596 typedef enum {
597 	ST_CONFIG_GYRO_ST_LIM_50 = (7 << ST_CONFIG_GYRO_ST_LIM_POS),
598 } ST_CONFIG_GYRO_ST_LIM_t;
599 #endif
600 
601 /*
602  * SELFTEST_MREG1
603  * Register Name: SELFTEST
604  */
605 
606 /* GYRO_ST_EN and ACCEL_ST_EN */
607 typedef enum {
608 	SELFTEST_DIS      = 0,
609 	SELFTEST_ACCEL_EN = SELFTEST_ACCEL_ST_EN_MASK,
610 #if INV_IMU_IS_GYRO_SUPPORTED
611 	SELFTEST_GYRO_EN = SELFTEST_GYRO_ST_EN_MASK,
612 	SELFTEST_EN      = (SELFTEST_ACCEL_ST_EN_MASK | SELFTEST_GYRO_ST_EN_MASK)
613 #endif
614 } SELFTEST_ACCEL_GYRO_ST_EN_t;
615 
616 /*
617  * OTP_CONFIG_MREG1
618  * Register Name: OTP_CONFIG
619  */
620 
621 /* OTP_CONFIG */
622 typedef enum {
623 	OTP_CONFIG_OTP_COPY_TRIM    = (1 << OTP_CONFIG_OTP_COPY_MODE_POS),
624 	OTP_CONFIG_OTP_COPY_ST_DATA = (3 << OTP_CONFIG_OTP_COPY_MODE_POS),
625 } OTP_CONFIG_COPY_MODE_t;
626 
627 /*
628  * APEX_CONFIG2_MREG1
629  * Register Name: APEX_CONFIG2
630 */
631 
632 /* LOW_ENERGY_AMP_TH_SEL */
633 typedef enum {
634 	APEX_CONFIG2_LOW_ENERGY_AMP_TH_SEL_30_MG  = (0 << APEX_CONFIG2_LOW_ENERGY_AMP_TH_SEL_POS),
635 	APEX_CONFIG2_LOW_ENERGY_AMP_TH_SEL_35_MG  = (1 << APEX_CONFIG2_LOW_ENERGY_AMP_TH_SEL_POS),
636 	APEX_CONFIG2_LOW_ENERGY_AMP_TH_SEL_40_MG  = (2 << APEX_CONFIG2_LOW_ENERGY_AMP_TH_SEL_POS),
637 	APEX_CONFIG2_LOW_ENERGY_AMP_TH_SEL_45_MG  = (3 << APEX_CONFIG2_LOW_ENERGY_AMP_TH_SEL_POS),
638 	APEX_CONFIG2_LOW_ENERGY_AMP_TH_SEL_50_MG  = (4 << APEX_CONFIG2_LOW_ENERGY_AMP_TH_SEL_POS),
639 	APEX_CONFIG2_LOW_ENERGY_AMP_TH_SEL_55_MG  = (5 << APEX_CONFIG2_LOW_ENERGY_AMP_TH_SEL_POS),
640 	APEX_CONFIG2_LOW_ENERGY_AMP_TH_SEL_60_MG  = (6 << APEX_CONFIG2_LOW_ENERGY_AMP_TH_SEL_POS),
641 	APEX_CONFIG2_LOW_ENERGY_AMP_TH_SEL_65_MG  = (7 << APEX_CONFIG2_LOW_ENERGY_AMP_TH_SEL_POS),
642 	APEX_CONFIG2_LOW_ENERGY_AMP_TH_SEL_70_MG  = (8 << APEX_CONFIG2_LOW_ENERGY_AMP_TH_SEL_POS),
643 	APEX_CONFIG2_LOW_ENERGY_AMP_TH_SEL_75_MG  = (9 << APEX_CONFIG2_LOW_ENERGY_AMP_TH_SEL_POS),
644 	APEX_CONFIG2_LOW_ENERGY_AMP_TH_SEL_80_MG  = (10 << APEX_CONFIG2_LOW_ENERGY_AMP_TH_SEL_POS),
645 	APEX_CONFIG2_LOW_ENERGY_AMP_TH_SEL_85_MG  = (11 << APEX_CONFIG2_LOW_ENERGY_AMP_TH_SEL_POS),
646 	APEX_CONFIG2_LOW_ENERGY_AMP_TH_SEL_90_MG  = (12 << APEX_CONFIG2_LOW_ENERGY_AMP_TH_SEL_POS),
647 	APEX_CONFIG2_LOW_ENERGY_AMP_TH_SEL_95_MG  = (13 << APEX_CONFIG2_LOW_ENERGY_AMP_TH_SEL_POS),
648 	APEX_CONFIG2_LOW_ENERGY_AMP_TH_SEL_100_MG = (14 << APEX_CONFIG2_LOW_ENERGY_AMP_TH_SEL_POS),
649 	APEX_CONFIG2_LOW_ENERGY_AMP_TH_SEL_105_MG = (15 << APEX_CONFIG2_LOW_ENERGY_AMP_TH_SEL_POS),
650 } APEX_CONFIG2_LOW_ENERGY_AMP_TH_t;
651 
652 /* DMP_POWER_SAVE_TIME_SEL */
653 typedef enum {
654 	APEX_CONFIG2_DMP_POWER_SAVE_TIME_SEL_0_S  = 0x0,
655 	APEX_CONFIG2_DMP_POWER_SAVE_TIME_SEL_4_S  = 0x1,
656 	APEX_CONFIG2_DMP_POWER_SAVE_TIME_SEL_8_S  = 0x2,
657 	APEX_CONFIG2_DMP_POWER_SAVE_TIME_SEL_12_S = 0x3,
658 	APEX_CONFIG2_DMP_POWER_SAVE_TIME_SEL_16_S = 0x4,
659 	APEX_CONFIG2_DMP_POWER_SAVE_TIME_SEL_20_S = 0x5,
660 	APEX_CONFIG2_DMP_POWER_SAVE_TIME_SEL_24_S = 0x6,
661 	APEX_CONFIG2_DMP_POWER_SAVE_TIME_SEL_28_S = 0x7,
662 	APEX_CONFIG2_DMP_POWER_SAVE_TIME_SEL_32_S = 0x8,
663 	APEX_CONFIG2_DMP_POWER_SAVE_TIME_SEL_36_S = 0x9,
664 	APEX_CONFIG2_DMP_POWER_SAVE_TIME_SEL_40_S = 0xA,
665 	APEX_CONFIG2_DMP_POWER_SAVE_TIME_SEL_44_S = 0xB,
666 	APEX_CONFIG2_DMP_POWER_SAVE_TIME_SEL_48_S = 0xC,
667 	APEX_CONFIG2_DMP_POWER_SAVE_TIME_SEL_52_S = 0xD,
668 	APEX_CONFIG2_DMP_POWER_SAVE_TIME_SEL_56_S = 0xE,
669 	APEX_CONFIG2_DMP_POWER_SAVE_TIME_SEL_60_S = 0xF,
670 } APEX_CONFIG2_DMP_POWER_SAVE_TIME_t;
671 
672 /*
673  * APEX_CONFIG3_MREG1
674  * Register Name: APEX_CONFIG3
675 */
676 
677 /* PEDO_AMP_TH_SEL */
678 typedef enum {
679 	APEX_CONFIG3_PEDO_AMP_TH_30_MG = (0 << APEX_CONFIG3_PED_AMP_TH_SEL_POS),
680 	APEX_CONFIG3_PEDO_AMP_TH_34_MG = (1 << APEX_CONFIG3_PED_AMP_TH_SEL_POS),
681 	APEX_CONFIG3_PEDO_AMP_TH_38_MG = (2 << APEX_CONFIG3_PED_AMP_TH_SEL_POS),
682 	APEX_CONFIG3_PEDO_AMP_TH_42_MG = (3 << APEX_CONFIG3_PED_AMP_TH_SEL_POS),
683 	APEX_CONFIG3_PEDO_AMP_TH_46_MG = (4 << APEX_CONFIG3_PED_AMP_TH_SEL_POS),
684 	APEX_CONFIG3_PEDO_AMP_TH_50_MG = (5 << APEX_CONFIG3_PED_AMP_TH_SEL_POS),
685 	APEX_CONFIG3_PEDO_AMP_TH_54_MG = (6 << APEX_CONFIG3_PED_AMP_TH_SEL_POS),
686 	APEX_CONFIG3_PEDO_AMP_TH_58_MG = (7 << APEX_CONFIG3_PED_AMP_TH_SEL_POS),
687 	APEX_CONFIG3_PEDO_AMP_TH_62_MG = (8 << APEX_CONFIG3_PED_AMP_TH_SEL_POS),
688 	APEX_CONFIG3_PEDO_AMP_TH_66_MG = (9 << APEX_CONFIG3_PED_AMP_TH_SEL_POS),
689 	APEX_CONFIG3_PEDO_AMP_TH_70_MG = (10 << APEX_CONFIG3_PED_AMP_TH_SEL_POS),
690 	APEX_CONFIG3_PEDO_AMP_TH_74_MG = (11 << APEX_CONFIG3_PED_AMP_TH_SEL_POS),
691 	APEX_CONFIG3_PEDO_AMP_TH_78_MG = (12 << APEX_CONFIG3_PED_AMP_TH_SEL_POS),
692 	APEX_CONFIG3_PEDO_AMP_TH_82_MG = (13 << APEX_CONFIG3_PED_AMP_TH_SEL_POS),
693 	APEX_CONFIG3_PEDO_AMP_TH_86_MG = (14 << APEX_CONFIG3_PED_AMP_TH_SEL_POS),
694 	APEX_CONFIG3_PEDO_AMP_TH_90_MG = (15 << APEX_CONFIG3_PED_AMP_TH_SEL_POS),
695 } APEX_CONFIG3_PEDO_AMP_TH_t;
696 
697 /*
698  * APEX_CONFIG4_MREG1
699  * Register Name: APEX_CONFIG4
700 */
701 
702 /* PEDO_SB_TIMER_TH_SEL */
703 typedef enum {
704 	APEX_CONFIG4_PEDO_SB_TIMER_TH_50_SAMPLES  = (0 << APEX_CONFIG4_PED_SB_TIMER_TH_SEL_POS),
705 	APEX_CONFIG4_PEDO_SB_TIMER_TH_75_SAMPLES  = (1 << APEX_CONFIG4_PED_SB_TIMER_TH_SEL_POS),
706 	APEX_CONFIG4_PEDO_SB_TIMER_TH_100_SAMPLES = (2 << APEX_CONFIG4_PED_SB_TIMER_TH_SEL_POS),
707 	APEX_CONFIG4_PEDO_SB_TIMER_TH_125_SAMPLES = (3 << APEX_CONFIG4_PED_SB_TIMER_TH_SEL_POS),
708 	APEX_CONFIG4_PEDO_SB_TIMER_TH_150_SAMPLES = (4 << APEX_CONFIG4_PED_SB_TIMER_TH_SEL_POS),
709 	APEX_CONFIG4_PEDO_SB_TIMER_TH_175_SAMPLES = (5 << APEX_CONFIG4_PED_SB_TIMER_TH_SEL_POS),
710 	APEX_CONFIG4_PEDO_SB_TIMER_TH_200_SAMPLES = (6 << APEX_CONFIG4_PED_SB_TIMER_TH_SEL_POS),
711 	APEX_CONFIG4_PEDO_SB_TIMER_TH_225_SAMPLES = (7 << APEX_CONFIG4_PED_SB_TIMER_TH_SEL_POS),
712 } APEX_CONFIG4_PEDO_SB_TIMER_TH_t;
713 
714 /* PEDO_HI_ENRGY_TH_SEL */
715 typedef enum {
716 	APEX_CONFIG4_PEDO_HI_ENRGY_TH_88_MG  = (0 << APEX_CONFIG4_PED_HI_EN_TH_SEL_POS),
717 	APEX_CONFIG4_PEDO_HI_ENRGY_TH_104_MG = (1 << APEX_CONFIG4_PED_HI_EN_TH_SEL_POS),
718 	APEX_CONFIG4_PEDO_HI_ENRGY_TH_133_MG = (2 << APEX_CONFIG4_PED_HI_EN_TH_SEL_POS),
719 	APEX_CONFIG4_PEDO_HI_ENRGY_TH_155_MG = (3 << APEX_CONFIG4_PED_HI_EN_TH_SEL_POS),
720 } APEX_CONFIG4_PEDO_HI_ENRGY_TH_t;
721 
722 /*
723  * APEX_CONFIG5_MREG1
724  * Register Name: APEX_CONFIG5
725 */
726 
727 /* TILT_WAIT_TIME_SEL */
728 typedef enum {
729 	APEX_CONFIG5_TILT_WAIT_TIME_0_S = (0 << APEX_CONFIG5_TILT_WAIT_TIME_SEL_POS),
730 	APEX_CONFIG5_TILT_WAIT_TIME_2_S = (1 << APEX_CONFIG5_TILT_WAIT_TIME_SEL_POS),
731 	APEX_CONFIG5_TILT_WAIT_TIME_4_S = (2 << APEX_CONFIG5_TILT_WAIT_TIME_SEL_POS),
732 	APEX_CONFIG5_TILT_WAIT_TIME_6_S = (3 << APEX_CONFIG5_TILT_WAIT_TIME_SEL_POS),
733 } APEX_CONFIG5_TILT_WAIT_TIME_t;
734 
735 /* LOWG_PEAK_TH_HYST_SEL */
736 typedef enum {
737 	APEX_CONFIG5_LOWG_PEAK_TH_HYST_31_MG  = (0 << APEX_CONFIG5_LOWG_PEAK_TH_HYST_SEL_POS),
738 	APEX_CONFIG5_LOWG_PEAK_TH_HYST_63_MG  = (1 << APEX_CONFIG5_LOWG_PEAK_TH_HYST_SEL_POS),
739 	APEX_CONFIG5_LOWG_PEAK_TH_HYST_94_MG  = (2 << APEX_CONFIG5_LOWG_PEAK_TH_HYST_SEL_POS),
740 	APEX_CONFIG5_LOWG_PEAK_TH_HYST_125_MG = (3 << APEX_CONFIG5_LOWG_PEAK_TH_HYST_SEL_POS),
741 	APEX_CONFIG5_LOWG_PEAK_TH_HYST_156_MG = (4 << APEX_CONFIG5_LOWG_PEAK_TH_HYST_SEL_POS),
742 	APEX_CONFIG5_LOWG_PEAK_TH_HYST_188_MG = (5 << APEX_CONFIG5_LOWG_PEAK_TH_HYST_SEL_POS),
743 	APEX_CONFIG5_LOWG_PEAK_TH_HYST_219_MG = (6 << APEX_CONFIG5_LOWG_PEAK_TH_HYST_SEL_POS),
744 	APEX_CONFIG5_LOWG_PEAK_TH_HYST_250_MG = (7 << APEX_CONFIG5_LOWG_PEAK_TH_HYST_SEL_POS),
745 } APEX_CONFIG5_LOWG_PEAK_TH_HYST_t;
746 
747 /* HIGHG_PEAK_TH_HYST_SEL */
748 typedef enum {
749 	APEX_CONFIG5_HIGHG_PEAK_TH_HYST_31_MG  = (0 << APEX_CONFIG5_HIGHG_PEAK_TH_HYST_SEL_POS),
750 	APEX_CONFIG5_HIGHG_PEAK_TH_HYST_63_MG  = (1 << APEX_CONFIG5_HIGHG_PEAK_TH_HYST_SEL_POS),
751 	APEX_CONFIG5_HIGHG_PEAK_TH_HYST_94_MG  = (2 << APEX_CONFIG5_HIGHG_PEAK_TH_HYST_SEL_POS),
752 	APEX_CONFIG5_HIGHG_PEAK_TH_HYST_125_MG = (3 << APEX_CONFIG5_HIGHG_PEAK_TH_HYST_SEL_POS),
753 	APEX_CONFIG5_HIGHG_PEAK_TH_HYST_156_MG = (4 << APEX_CONFIG5_HIGHG_PEAK_TH_HYST_SEL_POS),
754 	APEX_CONFIG5_HIGHG_PEAK_TH_HYST_188_MG = (5 << APEX_CONFIG5_HIGHG_PEAK_TH_HYST_SEL_POS),
755 	APEX_CONFIG5_HIGHG_PEAK_TH_HYST_219_MG = (6 << APEX_CONFIG5_HIGHG_PEAK_TH_HYST_SEL_POS),
756 	APEX_CONFIG5_HIGHG_PEAK_TH_HYST_250_MG = (7 << APEX_CONFIG5_HIGHG_PEAK_TH_HYST_SEL_POS),
757 } APEX_CONFIG5_HIGHG_PEAK_TH_HYST_t;
758 
759 /*
760  * APEX_CONFIG9_MREG1
761  * Register Name: APEX_CONFIG9
762 */
763 
764 /* FF_DEBOUNCE_DURATION_SEL */
765 typedef enum {
766 	APEX_CONFIG9_FF_DEBOUNCE_DURATION_0_MS    = (0 << APEX_CONFIG9_FF_DEBOUNCE_DURATION_SEL_POS),
767 	APEX_CONFIG9_FF_DEBOUNCE_DURATION_1250_MS = (1 << APEX_CONFIG9_FF_DEBOUNCE_DURATION_SEL_POS),
768 	APEX_CONFIG9_FF_DEBOUNCE_DURATION_1375_MS = (2 << APEX_CONFIG9_FF_DEBOUNCE_DURATION_SEL_POS),
769 	APEX_CONFIG9_FF_DEBOUNCE_DURATION_1500_MS = (3 << APEX_CONFIG9_FF_DEBOUNCE_DURATION_SEL_POS),
770 	APEX_CONFIG9_FF_DEBOUNCE_DURATION_1625_MS = (4 << APEX_CONFIG9_FF_DEBOUNCE_DURATION_SEL_POS),
771 	APEX_CONFIG9_FF_DEBOUNCE_DURATION_1750_MS = (5 << APEX_CONFIG9_FF_DEBOUNCE_DURATION_SEL_POS),
772 	APEX_CONFIG9_FF_DEBOUNCE_DURATION_1875_MS = (6 << APEX_CONFIG9_FF_DEBOUNCE_DURATION_SEL_POS),
773 	APEX_CONFIG9_FF_DEBOUNCE_DURATION_2000_MS = (7 << APEX_CONFIG9_FF_DEBOUNCE_DURATION_SEL_POS),
774 	APEX_CONFIG9_FF_DEBOUNCE_DURATION_2125_MS = (8 << APEX_CONFIG9_FF_DEBOUNCE_DURATION_SEL_POS),
775 	APEX_CONFIG9_FF_DEBOUNCE_DURATION_2250_MS = (9 << APEX_CONFIG9_FF_DEBOUNCE_DURATION_SEL_POS),
776 	APEX_CONFIG9_FF_DEBOUNCE_DURATION_2375_MS = (10 << APEX_CONFIG9_FF_DEBOUNCE_DURATION_SEL_POS),
777 	APEX_CONFIG9_FF_DEBOUNCE_DURATION_2500_MS = (11 << APEX_CONFIG9_FF_DEBOUNCE_DURATION_SEL_POS),
778 	APEX_CONFIG9_FF_DEBOUNCE_DURATION_2625_MS = (12 << APEX_CONFIG9_FF_DEBOUNCE_DURATION_SEL_POS),
779 	APEX_CONFIG9_FF_DEBOUNCE_DURATION_2750_MS = (13 << APEX_CONFIG9_FF_DEBOUNCE_DURATION_SEL_POS),
780 	APEX_CONFIG9_FF_DEBOUNCE_DURATION_2875_MS = (14 << APEX_CONFIG9_FF_DEBOUNCE_DURATION_SEL_POS),
781 	APEX_CONFIG9_FF_DEBOUNCE_DURATION_3000_MS = (15 << APEX_CONFIG9_FF_DEBOUNCE_DURATION_SEL_POS),
782 } APEX_CONFIG9_FF_DEBOUNCE_DURATION_t;
783 
784 /* SMD_SENSITIVITY_SEL */
785 typedef enum {
786 	APEX_CONFIG9_SMD_SENSITIVITY_0 = (0 << APEX_CONFIG9_SMD_SENSITIVITY_SEL_POS),
787 	APEX_CONFIG9_SMD_SENSITIVITY_1 = (1 << APEX_CONFIG9_SMD_SENSITIVITY_SEL_POS),
788 	APEX_CONFIG9_SMD_SENSITIVITY_2 = (2 << APEX_CONFIG9_SMD_SENSITIVITY_SEL_POS),
789 	APEX_CONFIG9_SMD_SENSITIVITY_3 = (3 << APEX_CONFIG9_SMD_SENSITIVITY_SEL_POS),
790 	APEX_CONFIG9_SMD_SENSITIVITY_4 = (4 << APEX_CONFIG9_SMD_SENSITIVITY_SEL_POS),
791 } APEX_CONFIG9_SMD_SENSITIVITY_t;
792 
793 /* SMD_SENSITIVITY_MODE */
794 typedef enum {
795 	APEX_CONFIG9_SENSITIVITY_MODE_NORMAL    = (0 << APEX_CONFIG9_SENSITIVITY_MODE_POS),
796 	APEX_CONFIG9_SENSITIVITY_MODE_SLOW_WALK = (1 << APEX_CONFIG9_SENSITIVITY_MODE_POS),
797 } APEX_CONFIG9_SENSITIVITY_MODE_t;
798 
799 /*
800  * APEX_CONFIG10_MREG1
801  * Register Name: APEX_CONFIG10
802 */
803 
804 /* LOWG_PEAK_TH_SEL */
805 typedef enum {
806 	APEX_CONFIG10_LOWG_PEAK_TH_31_MG   = (0x00 << APEX_CONFIG10_LOWG_PEAK_TH_SEL_POS),
807 	APEX_CONFIG10_LOWG_PEAK_TH_63_MG   = (0x01 << APEX_CONFIG10_LOWG_PEAK_TH_SEL_POS),
808 	APEX_CONFIG10_LOWG_PEAK_TH_94_MG   = (0x02 << APEX_CONFIG10_LOWG_PEAK_TH_SEL_POS),
809 	APEX_CONFIG10_LOWG_PEAK_TH_125_MG  = (0x03 << APEX_CONFIG10_LOWG_PEAK_TH_SEL_POS),
810 	APEX_CONFIG10_LOWG_PEAK_TH_156_MG  = (0x04 << APEX_CONFIG10_LOWG_PEAK_TH_SEL_POS),
811 	APEX_CONFIG10_LOWG_PEAK_TH_188_MG  = (0x05 << APEX_CONFIG10_LOWG_PEAK_TH_SEL_POS),
812 	APEX_CONFIG10_LOWG_PEAK_TH_219_MG  = (0x06 << APEX_CONFIG10_LOWG_PEAK_TH_SEL_POS),
813 	APEX_CONFIG10_LOWG_PEAK_TH_250_MG  = (0x07 << APEX_CONFIG10_LOWG_PEAK_TH_SEL_POS),
814 	APEX_CONFIG10_LOWG_PEAK_TH_281_MG  = (0x08 << APEX_CONFIG10_LOWG_PEAK_TH_SEL_POS),
815 	APEX_CONFIG10_LOWG_PEAK_TH_313_MG  = (0x09 << APEX_CONFIG10_LOWG_PEAK_TH_SEL_POS),
816 	APEX_CONFIG10_LOWG_PEAK_TH_344_MG  = (0x0A << APEX_CONFIG10_LOWG_PEAK_TH_SEL_POS),
817 	APEX_CONFIG10_LOWG_PEAK_TH_375_MG  = (0x0B << APEX_CONFIG10_LOWG_PEAK_TH_SEL_POS),
818 	APEX_CONFIG10_LOWG_PEAK_TH_406_MG  = (0x0C << APEX_CONFIG10_LOWG_PEAK_TH_SEL_POS),
819 	APEX_CONFIG10_LOWG_PEAK_TH_438_MG  = (0x0D << APEX_CONFIG10_LOWG_PEAK_TH_SEL_POS),
820 	APEX_CONFIG10_LOWG_PEAK_TH_469_MG  = (0x0E << APEX_CONFIG10_LOWG_PEAK_TH_SEL_POS),
821 	APEX_CONFIG10_LOWG_PEAK_TH_500_MG  = (0x0F << APEX_CONFIG10_LOWG_PEAK_TH_SEL_POS),
822 	APEX_CONFIG10_LOWG_PEAK_TH_531_MG  = (0x10 << APEX_CONFIG10_LOWG_PEAK_TH_SEL_POS),
823 	APEX_CONFIG10_LOWG_PEAK_TH_563_MG  = (0x11 << APEX_CONFIG10_LOWG_PEAK_TH_SEL_POS),
824 	APEX_CONFIG10_LOWG_PEAK_TH_594_MG  = (0x12 << APEX_CONFIG10_LOWG_PEAK_TH_SEL_POS),
825 	APEX_CONFIG10_LOWG_PEAK_TH_625_MG  = (0x13 << APEX_CONFIG10_LOWG_PEAK_TH_SEL_POS),
826 	APEX_CONFIG10_LOWG_PEAK_TH_656_MG  = (0x14 << APEX_CONFIG10_LOWG_PEAK_TH_SEL_POS),
827 	APEX_CONFIG10_LOWG_PEAK_TH_688_MG  = (0x15 << APEX_CONFIG10_LOWG_PEAK_TH_SEL_POS),
828 	APEX_CONFIG10_LOWG_PEAK_TH_719_MG  = (0x16 << APEX_CONFIG10_LOWG_PEAK_TH_SEL_POS),
829 	APEX_CONFIG10_LOWG_PEAK_TH_750_MG  = (0x17 << APEX_CONFIG10_LOWG_PEAK_TH_SEL_POS),
830 	APEX_CONFIG10_LOWG_PEAK_TH_781_MG  = (0x18 << APEX_CONFIG10_LOWG_PEAK_TH_SEL_POS),
831 	APEX_CONFIG10_LOWG_PEAK_TH_813_MG  = (0x19 << APEX_CONFIG10_LOWG_PEAK_TH_SEL_POS),
832 	APEX_CONFIG10_LOWG_PEAK_TH_844_MG  = (0x1A << APEX_CONFIG10_LOWG_PEAK_TH_SEL_POS),
833 	APEX_CONFIG10_LOWG_PEAK_TH_875_MG  = (0x1B << APEX_CONFIG10_LOWG_PEAK_TH_SEL_POS),
834 	APEX_CONFIG10_LOWG_PEAK_TH_906_MG  = (0x1C << APEX_CONFIG10_LOWG_PEAK_TH_SEL_POS),
835 	APEX_CONFIG10_LOWG_PEAK_TH_938_MG  = (0x1D << APEX_CONFIG10_LOWG_PEAK_TH_SEL_POS),
836 	APEX_CONFIG10_LOWG_PEAK_TH_969_MG  = (0x1E << APEX_CONFIG10_LOWG_PEAK_TH_SEL_POS),
837 	APEX_CONFIG10_LOWG_PEAK_TH_1000_MG = (0x1F << APEX_CONFIG10_LOWG_PEAK_TH_SEL_POS),
838 } APEX_CONFIG10_LOWG_PEAK_TH_t;
839 
840 /* LOWG_TIME_TH_SEL */
841 typedef enum {
842 	APEX_CONFIG10_LOWG_TIME_TH_1_SAMPLE  = (0x00 << APEX_CONFIG10_LOWG_TIME_TH_SEL_POS),
843 	APEX_CONFIG10_LOWG_TIME_TH_2_SAMPLES = (0x01 << APEX_CONFIG10_LOWG_TIME_TH_SEL_POS),
844 	APEX_CONFIG10_LOWG_TIME_TH_3_SAMPLES = (0x02 << APEX_CONFIG10_LOWG_TIME_TH_SEL_POS),
845 	APEX_CONFIG10_LOWG_TIME_TH_4_SAMPLES = (0x03 << APEX_CONFIG10_LOWG_TIME_TH_SEL_POS),
846 	APEX_CONFIG10_LOWG_TIME_TH_5_SAMPLES = (0x04 << APEX_CONFIG10_LOWG_TIME_TH_SEL_POS),
847 	APEX_CONFIG10_LOWG_TIME_TH_6_SAMPLES = (0x05 << APEX_CONFIG10_LOWG_TIME_TH_SEL_POS),
848 	APEX_CONFIG10_LOWG_TIME_TH_7_SAMPLES = (0x06 << APEX_CONFIG10_LOWG_TIME_TH_SEL_POS),
849 	APEX_CONFIG10_LOWG_TIME_TH_8_SAMPLES = (0x07 << APEX_CONFIG10_LOWG_TIME_TH_SEL_POS),
850 } APEX_CONFIG10_LOWG_TIME_TH_SAMPLES_t;
851 
852 /*
853  * APEX_CONFIG11_MREG1
854  * Register Name: APEX_CONFIG11
855 */
856 
857 /* HIGHG_PEAK_TH_SEL */
858 typedef enum {
859 	APEX_CONFIG11_HIGHG_PEAK_TH_250_MG  = (0x00 << APEX_CONFIG11_HIGHG_PEAK_TH_SEL_POS),
860 	APEX_CONFIG11_HIGHG_PEAK_TH_500_MG  = (0x01 << APEX_CONFIG11_HIGHG_PEAK_TH_SEL_POS),
861 	APEX_CONFIG11_HIGHG_PEAK_TH_750_MG  = (0x02 << APEX_CONFIG11_HIGHG_PEAK_TH_SEL_POS),
862 	APEX_CONFIG11_HIGHG_PEAK_TH_1000MG  = (0x03 << APEX_CONFIG11_HIGHG_PEAK_TH_SEL_POS),
863 	APEX_CONFIG11_HIGHG_PEAK_TH_1250_MG = (0x04 << APEX_CONFIG11_HIGHG_PEAK_TH_SEL_POS),
864 	APEX_CONFIG11_HIGHG_PEAK_TH_1500_MG = (0x05 << APEX_CONFIG11_HIGHG_PEAK_TH_SEL_POS),
865 	APEX_CONFIG11_HIGHG_PEAK_TH_1750_MG = (0x06 << APEX_CONFIG11_HIGHG_PEAK_TH_SEL_POS),
866 	APEX_CONFIG11_HIGHG_PEAK_TH_2000_MG = (0x07 << APEX_CONFIG11_HIGHG_PEAK_TH_SEL_POS),
867 	APEX_CONFIG11_HIGHG_PEAK_TH_2250_MG = (0x08 << APEX_CONFIG11_HIGHG_PEAK_TH_SEL_POS),
868 	APEX_CONFIG11_HIGHG_PEAK_TH_2500_MG = (0x09 << APEX_CONFIG11_HIGHG_PEAK_TH_SEL_POS),
869 	APEX_CONFIG11_HIGHG_PEAK_TH_2750_MG = (0x0A << APEX_CONFIG11_HIGHG_PEAK_TH_SEL_POS),
870 	APEX_CONFIG11_HIGHG_PEAK_TH_3000_MG = (0x0B << APEX_CONFIG11_HIGHG_PEAK_TH_SEL_POS),
871 	APEX_CONFIG11_HIGHG_PEAK_TH_3250_MG = (0x0C << APEX_CONFIG11_HIGHG_PEAK_TH_SEL_POS),
872 	APEX_CONFIG11_HIGHG_PEAK_TH_3500_MG = (0x0D << APEX_CONFIG11_HIGHG_PEAK_TH_SEL_POS),
873 	APEX_CONFIG11_HIGHG_PEAK_TH_3750_MG = (0x0E << APEX_CONFIG11_HIGHG_PEAK_TH_SEL_POS),
874 	APEX_CONFIG11_HIGHG_PEAK_TH_4000_MG = (0x0F << APEX_CONFIG11_HIGHG_PEAK_TH_SEL_POS),
875 	APEX_CONFIG11_HIGHG_PEAK_TH_4250_MG = (0x10 << APEX_CONFIG11_HIGHG_PEAK_TH_SEL_POS),
876 	APEX_CONFIG11_HIGHG_PEAK_TH_4500_MG = (0x11 << APEX_CONFIG11_HIGHG_PEAK_TH_SEL_POS),
877 	APEX_CONFIG11_HIGHG_PEAK_TH_4750_MG = (0x12 << APEX_CONFIG11_HIGHG_PEAK_TH_SEL_POS),
878 	APEX_CONFIG11_HIGHG_PEAK_TH_5000_MG = (0x13 << APEX_CONFIG11_HIGHG_PEAK_TH_SEL_POS),
879 	APEX_CONFIG11_HIGHG_PEAK_TH_5250_MG = (0x14 << APEX_CONFIG11_HIGHG_PEAK_TH_SEL_POS),
880 	APEX_CONFIG11_HIGHG_PEAK_TH_5500_MG = (0x15 << APEX_CONFIG11_HIGHG_PEAK_TH_SEL_POS),
881 	APEX_CONFIG11_HIGHG_PEAK_TH_5750_MG = (0x16 << APEX_CONFIG11_HIGHG_PEAK_TH_SEL_POS),
882 	APEX_CONFIG11_HIGHG_PEAK_TH_6000_MG = (0x17 << APEX_CONFIG11_HIGHG_PEAK_TH_SEL_POS),
883 	APEX_CONFIG11_HIGHG_PEAK_TH_6250_MG = (0x18 << APEX_CONFIG11_HIGHG_PEAK_TH_SEL_POS),
884 	APEX_CONFIG11_HIGHG_PEAK_TH_6500_MG = (0x19 << APEX_CONFIG11_HIGHG_PEAK_TH_SEL_POS),
885 	APEX_CONFIG11_HIGHG_PEAK_TH_6750_MG = (0x1A << APEX_CONFIG11_HIGHG_PEAK_TH_SEL_POS),
886 	APEX_CONFIG11_HIGHG_PEAK_TH_7000_MG = (0x1B << APEX_CONFIG11_HIGHG_PEAK_TH_SEL_POS),
887 	APEX_CONFIG11_HIGHG_PEAK_TH_7250_MG = (0x1C << APEX_CONFIG11_HIGHG_PEAK_TH_SEL_POS),
888 	APEX_CONFIG11_HIGHG_PEAK_TH_7500_MG = (0x1D << APEX_CONFIG11_HIGHG_PEAK_TH_SEL_POS),
889 	APEX_CONFIG11_HIGHG_PEAK_TH_7750_MG = (0x1E << APEX_CONFIG11_HIGHG_PEAK_TH_SEL_POS),
890 } APEX_CONFIG11_HIGHG_PEAK_TH_t;
891 
892 /* HIGHG_TIME_TH_SEL */
893 typedef enum {
894 	APEX_CONFIG11_HIGHG_TIME_TH_1_SAMPLE  = (0x00 << APEX_CONFIG11_HIGHG_TIME_TH_SEL_POS),
895 	APEX_CONFIG11_HIGHG_TIME_TH_2_SAMPLES = (0x01 << APEX_CONFIG11_HIGHG_TIME_TH_SEL_POS),
896 	APEX_CONFIG11_HIGHG_TIME_TH_3_SAMPLES = (0x02 << APEX_CONFIG11_HIGHG_TIME_TH_SEL_POS),
897 	APEX_CONFIG11_HIGHG_TIME_TH_4_SAMPLES = (0x03 << APEX_CONFIG11_HIGHG_TIME_TH_SEL_POS),
898 	APEX_CONFIG11_HIGHG_TIME_TH_5_SAMPLES = (0x04 << APEX_CONFIG11_HIGHG_TIME_TH_SEL_POS),
899 	APEX_CONFIG11_HIGHG_TIME_TH_6_SAMPLES = (0x05 << APEX_CONFIG11_HIGHG_TIME_TH_SEL_POS),
900 	APEX_CONFIG11_HIGHG_TIME_TH_7_SAMPLES = (0x06 << APEX_CONFIG11_HIGHG_TIME_TH_SEL_POS),
901 	APEX_CONFIG11_HIGHG_TIME_TH_8_SAMPLES = (0x07 << APEX_CONFIG11_HIGHG_TIME_TH_SEL_POS),
902 } APEX_CONFIG11_HIGHG_TIME_TH_SAMPLES_t;
903 
904 /*
905  * FDR_CONFIG_MREG1
906  * Register Name: FDR_CONFIG
907  */
908 
909 /* FDR_SEL */
910 typedef enum {
911 	FDR_CONFIG_FDR_SEL_DIS        = (0x0 << FDR_CONFIG_FDR_SEL_POS),
912 	FDR_CONFIG_FDR_SEL_FACTOR_2   = (0x8 << FDR_CONFIG_FDR_SEL_POS),
913 	FDR_CONFIG_FDR_SEL_FACTOR_4   = (0x9 << FDR_CONFIG_FDR_SEL_POS),
914 	FDR_CONFIG_FDR_SEL_FACTOR_8   = (0xA << FDR_CONFIG_FDR_SEL_POS),
915 	FDR_CONFIG_FDR_SEL_FACTOR_16  = (0xB << FDR_CONFIG_FDR_SEL_POS),
916 	FDR_CONFIG_FDR_SEL_FACTOR_32  = (0xC << FDR_CONFIG_FDR_SEL_POS),
917 	FDR_CONFIG_FDR_SEL_FACTOR_64  = (0xD << FDR_CONFIG_FDR_SEL_POS),
918 	FDR_CONFIG_FDR_SEL_FACTOR_128 = (0xE << FDR_CONFIG_FDR_SEL_POS),
919 	FDR_CONFIG_FDR_SEL_FACTOR_256 = (0xF << FDR_CONFIG_FDR_SEL_POS),
920 } FDR_CONFIG_FDR_SEL_t;
921 
922 /*
923  * APEX_CONFIG12_MREG1
924  * Register Name: APEX_CONFIG12
925 */
926 /* FF_MAX_DURATION_SEL */
927 typedef enum {
928 	APEX_CONFIG12_FF_MAX_DURATION_102_CM = (0 << APEX_CONFIG12_FF_MAX_DURATION_SEL_POS),
929 	APEX_CONFIG12_FF_MAX_DURATION_120_CM = (1 << APEX_CONFIG12_FF_MAX_DURATION_SEL_POS),
930 	APEX_CONFIG12_FF_MAX_DURATION_139_CM = (2 << APEX_CONFIG12_FF_MAX_DURATION_SEL_POS),
931 	APEX_CONFIG12_FF_MAX_DURATION_159_CM = (3 << APEX_CONFIG12_FF_MAX_DURATION_SEL_POS),
932 	APEX_CONFIG12_FF_MAX_DURATION_181_CM = (4 << APEX_CONFIG12_FF_MAX_DURATION_SEL_POS),
933 	APEX_CONFIG12_FF_MAX_DURATION_204_CM = (5 << APEX_CONFIG12_FF_MAX_DURATION_SEL_POS),
934 	APEX_CONFIG12_FF_MAX_DURATION_228_CM = (6 << APEX_CONFIG12_FF_MAX_DURATION_SEL_POS),
935 	APEX_CONFIG12_FF_MAX_DURATION_254_CM = (7 << APEX_CONFIG12_FF_MAX_DURATION_SEL_POS),
936 	APEX_CONFIG12_FF_MAX_DURATION_281_CM = (8 << APEX_CONFIG12_FF_MAX_DURATION_SEL_POS),
937 	APEX_CONFIG12_FF_MAX_DURATION_310_CM = (9 << APEX_CONFIG12_FF_MAX_DURATION_SEL_POS),
938 	APEX_CONFIG12_FF_MAX_DURATION_339_CM = (10 << APEX_CONFIG12_FF_MAX_DURATION_SEL_POS),
939 	APEX_CONFIG12_FF_MAX_DURATION_371_CM = (11 << APEX_CONFIG12_FF_MAX_DURATION_SEL_POS),
940 	APEX_CONFIG12_FF_MAX_DURATION_403_CM = (12 << APEX_CONFIG12_FF_MAX_DURATION_SEL_POS),
941 	APEX_CONFIG12_FF_MAX_DURATION_438_CM = (13 << APEX_CONFIG12_FF_MAX_DURATION_SEL_POS),
942 	APEX_CONFIG12_FF_MAX_DURATION_473_CM = (14 << APEX_CONFIG12_FF_MAX_DURATION_SEL_POS),
943 	APEX_CONFIG12_FF_MAX_DURATION_510_CM = (15 << APEX_CONFIG12_FF_MAX_DURATION_SEL_POS),
944 } APEX_CONFIG12_FF_MAX_DURATION_t;
945 
946 /* FF_MIN_DURATION_SEL */
947 typedef enum {
948 	APEX_CONFIG12_FF_MIN_DURATION_10_CM = (0 << APEX_CONFIG12_FF_MIN_DURATION_SEL_POS),
949 	APEX_CONFIG12_FF_MIN_DURATION_12_CM = (1 << APEX_CONFIG12_FF_MIN_DURATION_SEL_POS),
950 	APEX_CONFIG12_FF_MIN_DURATION_13_CM = (2 << APEX_CONFIG12_FF_MIN_DURATION_SEL_POS),
951 	APEX_CONFIG12_FF_MIN_DURATION_16_CM = (3 << APEX_CONFIG12_FF_MIN_DURATION_SEL_POS),
952 	APEX_CONFIG12_FF_MIN_DURATION_18_CM = (4 << APEX_CONFIG12_FF_MIN_DURATION_SEL_POS),
953 	APEX_CONFIG12_FF_MIN_DURATION_20_CM = (5 << APEX_CONFIG12_FF_MIN_DURATION_SEL_POS),
954 	APEX_CONFIG12_FF_MIN_DURATION_23_CM = (6 << APEX_CONFIG12_FF_MIN_DURATION_SEL_POS),
955 	APEX_CONFIG12_FF_MIN_DURATION_25_CM = (7 << APEX_CONFIG12_FF_MIN_DURATION_SEL_POS),
956 	APEX_CONFIG12_FF_MIN_DURATION_28_CM = (8 << APEX_CONFIG12_FF_MIN_DURATION_SEL_POS),
957 	APEX_CONFIG12_FF_MIN_DURATION_31_CM = (9 << APEX_CONFIG12_FF_MIN_DURATION_SEL_POS),
958 	APEX_CONFIG12_FF_MIN_DURATION_34_CM = (10 << APEX_CONFIG12_FF_MIN_DURATION_SEL_POS),
959 	APEX_CONFIG12_FF_MIN_DURATION_38_CM = (11 << APEX_CONFIG12_FF_MIN_DURATION_SEL_POS),
960 	APEX_CONFIG12_FF_MIN_DURATION_41_CM = (12 << APEX_CONFIG12_FF_MIN_DURATION_SEL_POS),
961 	APEX_CONFIG12_FF_MIN_DURATION_45_CM = (13 << APEX_CONFIG12_FF_MIN_DURATION_SEL_POS),
962 	APEX_CONFIG12_FF_MIN_DURATION_48_CM = (14 << APEX_CONFIG12_FF_MIN_DURATION_SEL_POS),
963 	APEX_CONFIG12_FF_MIN_DURATION_52_CM = (15 << APEX_CONFIG12_FF_MIN_DURATION_SEL_POS),
964 } APEX_CONFIG12_FF_MIN_DURATION_t;
965 
966 /* ---------------------------------------------------------------------------
967  * register bank MREG2
968  * ---------------------------------------------------------------------------- */
969 
970 /*
971  * OTP_CTRL7_MREG2
972  * Register Name: OTP_CTRL7
973 */
974 
975 /* OTP_CTRL7 */
976 typedef enum {
977 	OTP_CTRL7_OTP_RELOAD_EN  = (1 << OTP_CTRL7_OTP_RELOAD_POS),
978 	OTP_CTRL7_OTP_RELOAD_DIS = (0 << OTP_CTRL7_OTP_RELOAD_POS),
979 } OTP_CTRL7_OTP_RELOAD_t;
980 
981 /* OTP_PWR_DOWN */
982 typedef enum {
983 	OTP_CTRL7_PWR_DOWN_EN  = (1 << OTP_CTRL7_OTP_PWR_DOWN_POS),
984 	OTP_CTRL7_PWR_DOWN_DIS = (0 << OTP_CTRL7_OTP_PWR_DOWN_POS),
985 } OTP_CTRL7_PWR_DOWN_t;
986 
987 #ifdef __cplusplus
988 }
989 #endif
990 
991 #endif /* #ifndef _INV_IMU_DEFS_H_ */
992