ARM: tegra12: loki: Fix regulator warnings
[linux-3.10.git] / drivers / misc / inv_mpu / mpu6050b1.h
1 /*
2         $License:
3         Copyright (C) 2011 InvenSense Corporation, All Rights Reserved.
4
5         This program is free software; you can redistribute it and/or modify
6         it under the terms of the GNU General Public License as published by
7         the Free Software Foundation; either version 2 of the License, or
8         (at your option) any later version.
9
10         This program is distributed in the hope that it will be useful,
11         but WITHOUT ANY WARRANTY; without even the implied warranty of
12         MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13         GNU General Public License for more details.
14
15         You should have received a copy of the GNU General Public License
16         along with this program.  If not, see <http://www.gnu.org/licenses/>.
17         $
18  */
19
20 /**
21  * @defgroup
22  * @brief
23  *
24  * @{
25  *      @file     mpu6050.h
26  *      @brief
27  */
28
29 #ifndef __MPU_H_
30 #error Do not include this file directly.  Include mpu.h instead.
31 #endif
32
33 #ifndef __MPU6050B1_H_
34 #define __MPU6050B1_H_
35
36
37 #define MPU_NAME "mpu6050B1"
38 #define DEFAULT_MPU_SLAVEADDR           0x68
39
40 /*==== MPU6050B1 REGISTER SET ====*/
41 enum {
42         MPUREG_XG_OFFS_TC = 0,                  /* 0x00,   0 */
43         MPUREG_YG_OFFS_TC,                      /* 0x01,   1 */
44         MPUREG_ZG_OFFS_TC,                      /* 0x02,   2 */
45         MPUREG_X_FINE_GAIN,                     /* 0x03,   3 */
46         MPUREG_Y_FINE_GAIN,                     /* 0x04,   4 */
47         MPUREG_Z_FINE_GAIN,                     /* 0x05,   5 */
48         MPUREG_XA_OFFS_H,                       /* 0x06,   6 */
49         MPUREG_XA_OFFS_L,                       /* 0x07,   7 */
50         MPUREG_YA_OFFS_H,                       /* 0x08,   8 */
51         MPUREG_YA_OFFS_L,                       /* 0x09,   9 */
52         MPUREG_ZA_OFFS_H,                       /* 0x0a,  10 */
53         MPUREG_ZA_OFFS_L,                       /* 0x0B,  11 */
54         MPUREG_PRODUCT_ID,                      /* 0x0c,  12 */
55         MPUREG_0D_RSVD,                         /* 0x0d,  13 */
56         MPUREG_0E_RSVD,                         /* 0x0e,  14 */
57         MPUREG_0F_RSVD,                         /* 0x0f,  15 */
58         MPUREG_10_RSVD,                         /* 0x00,  16 */
59         MPUREG_11_RSVD,                         /* 0x11,  17 */
60         MPUREG_12_RSVD,                         /* 0x12,  18 */
61         MPUREG_XG_OFFS_USRH,                    /* 0x13,  19 */
62         MPUREG_XG_OFFS_USRL,                    /* 0x14,  20 */
63         MPUREG_YG_OFFS_USRH,                    /* 0x15,  21 */
64         MPUREG_YG_OFFS_USRL,                    /* 0x16,  22 */
65         MPUREG_ZG_OFFS_USRH,                    /* 0x17,  23 */
66         MPUREG_ZG_OFFS_USRL,                    /* 0x18,  24 */
67         MPUREG_SMPLRT_DIV,                      /* 0x19,  25 */
68         MPUREG_CONFIG,                          /* 0x1A,  26 */
69         MPUREG_GYRO_CONFIG,                     /* 0x1b,  27 */
70         MPUREG_ACCEL_CONFIG,                    /* 0x1c,  28 */
71         MPUREG_ACCEL_FF_THR,                    /* 0x1d,  29 */
72         MPUREG_ACCEL_FF_DUR,                    /* 0x1e,  30 */
73         MPUREG_ACCEL_MOT_THR,                   /* 0x1f,  31 */
74         MPUREG_ACCEL_MOT_DUR,                   /* 0x20,  32 */
75         MPUREG_ACCEL_ZRMOT_THR,                 /* 0x21,  33 */
76         MPUREG_ACCEL_ZRMOT_DUR,                 /* 0x22,  34 */
77         MPUREG_FIFO_EN,                         /* 0x23,  35 */
78         MPUREG_I2C_MST_CTRL,                    /* 0x24,  36 */
79         MPUREG_I2C_SLV0_ADDR,                   /* 0x25,  37 */
80         MPUREG_I2C_SLV0_REG,                    /* 0x26,  38 */
81         MPUREG_I2C_SLV0_CTRL,                   /* 0x27,  39 */
82         MPUREG_I2C_SLV1_ADDR,                   /* 0x28,  40 */
83         MPUREG_I2C_SLV1_REG,                    /* 0x29,  41 */
84         MPUREG_I2C_SLV1_CTRL,                   /* 0x2a,  42 */
85         MPUREG_I2C_SLV2_ADDR,                   /* 0x2B,  43 */
86         MPUREG_I2C_SLV2_REG,                    /* 0x2c,  44 */
87         MPUREG_I2C_SLV2_CTRL,                   /* 0x2d,  45 */
88         MPUREG_I2C_SLV3_ADDR,                   /* 0x2E,  46 */
89         MPUREG_I2C_SLV3_REG,                    /* 0x2f,  47 */
90         MPUREG_I2C_SLV3_CTRL,                   /* 0x30,  48 */
91         MPUREG_I2C_SLV4_ADDR,                   /* 0x31,  49 */
92         MPUREG_I2C_SLV4_REG,                    /* 0x32,  50 */
93         MPUREG_I2C_SLV4_DO,                     /* 0x33,  51 */
94         MPUREG_I2C_SLV4_CTRL,                   /* 0x34,  52 */
95         MPUREG_I2C_SLV4_DI,                     /* 0x35,  53 */
96         MPUREG_I2C_MST_STATUS,                  /* 0x36,  54 */
97         MPUREG_INT_PIN_CFG,                     /* 0x37,  55 */
98         MPUREG_INT_ENABLE,                      /* 0x38,  56 */
99         MPUREG_DMP_INT_STATUS,                  /* 0x39,  57 */
100         MPUREG_INT_STATUS,                      /* 0x3A,  58 */
101         MPUREG_ACCEL_XOUT_H,                    /* 0x3B,  59 */
102         MPUREG_ACCEL_XOUT_L,                    /* 0x3c,  60 */
103         MPUREG_ACCEL_YOUT_H,                    /* 0x3d,  61 */
104         MPUREG_ACCEL_YOUT_L,                    /* 0x3e,  62 */
105         MPUREG_ACCEL_ZOUT_H,                    /* 0x3f,  63 */
106         MPUREG_ACCEL_ZOUT_L,                    /* 0x40,  64 */
107         MPUREG_TEMP_OUT_H,                      /* 0x41,  65 */
108         MPUREG_TEMP_OUT_L,                      /* 0x42,  66 */
109         MPUREG_GYRO_XOUT_H,                     /* 0x43,  67 */
110         MPUREG_GYRO_XOUT_L,                     /* 0x44,  68 */
111         MPUREG_GYRO_YOUT_H,                     /* 0x45,  69 */
112         MPUREG_GYRO_YOUT_L,                     /* 0x46,  70 */
113         MPUREG_GYRO_ZOUT_H,                     /* 0x47,  71 */
114         MPUREG_GYRO_ZOUT_L,                     /* 0x48,  72 */
115         MPUREG_EXT_SLV_SENS_DATA_00,            /* 0x49,  73 */
116         MPUREG_EXT_SLV_SENS_DATA_01,            /* 0x4a,  74 */
117         MPUREG_EXT_SLV_SENS_DATA_02,            /* 0x4b,  75 */
118         MPUREG_EXT_SLV_SENS_DATA_03,            /* 0x4c,  76 */
119         MPUREG_EXT_SLV_SENS_DATA_04,            /* 0x4d,  77 */
120         MPUREG_EXT_SLV_SENS_DATA_05,            /* 0x4e,  78 */
121         MPUREG_EXT_SLV_SENS_DATA_06,            /* 0x4F,  79 */
122         MPUREG_EXT_SLV_SENS_DATA_07,            /* 0x50,  80 */
123         MPUREG_EXT_SLV_SENS_DATA_08,            /* 0x51,  81 */
124         MPUREG_EXT_SLV_SENS_DATA_09,            /* 0x52,  82 */
125         MPUREG_EXT_SLV_SENS_DATA_10,            /* 0x53,  83 */
126         MPUREG_EXT_SLV_SENS_DATA_11,            /* 0x54,  84 */
127         MPUREG_EXT_SLV_SENS_DATA_12,            /* 0x55,  85 */
128         MPUREG_EXT_SLV_SENS_DATA_13,            /* 0x56,  86 */
129         MPUREG_EXT_SLV_SENS_DATA_14,            /* 0x57,  87 */
130         MPUREG_EXT_SLV_SENS_DATA_15,            /* 0x58,  88 */
131         MPUREG_EXT_SLV_SENS_DATA_16,            /* 0x59,  89 */
132         MPUREG_EXT_SLV_SENS_DATA_17,            /* 0x5a,  90 */
133         MPUREG_EXT_SLV_SENS_DATA_18,            /* 0x5B,  91 */
134         MPUREG_EXT_SLV_SENS_DATA_19,            /* 0x5c,  92 */
135         MPUREG_EXT_SLV_SENS_DATA_20,            /* 0x5d,  93 */
136         MPUREG_EXT_SLV_SENS_DATA_21,            /* 0x5e,  94 */
137         MPUREG_EXT_SLV_SENS_DATA_22,            /* 0x5f,  95 */
138         MPUREG_EXT_SLV_SENS_DATA_23,            /* 0x60,  96 */
139         MPUREG_ACCEL_INTEL_STATUS,              /* 0x61,  97 */
140         MPUREG_62_RSVD,                         /* 0x62,  98 */
141         MPUREG_I2C_SLV0_DO,                     /* 0x63,  99 */
142         MPUREG_I2C_SLV1_DO,                     /* 0x64, 100 */
143         MPUREG_I2C_SLV2_DO,                     /* 0x65, 101 */
144         MPUREG_I2C_SLV3_DO,                     /* 0x66, 102 */
145         MPUREG_I2C_MST_DELAY_CTRL,              /* 0x67, 103 */
146         MPUREG_SIGNAL_PATH_RESET,               /* 0x68, 104 */
147         MPUREG_ACCEL_INTEL_CTRL,                /* 0x69, 105 */
148         MPUREG_USER_CTRL,                       /* 0x6A, 106 */
149         MPUREG_PWR_MGMT_1,                      /* 0x6B, 107 */
150         MPUREG_PWR_MGMT_2,                      /* 0x6C, 108 */
151         MPUREG_BANK_SEL,                        /* 0x6D, 109 */
152         MPUREG_MEM_START_ADDR,                  /* 0x6E, 100 */
153         MPUREG_MEM_R_W,                         /* 0x6F, 111 */
154         MPUREG_DMP_CFG_1,                       /* 0x70, 112 */
155         MPUREG_DMP_CFG_2,                       /* 0x71, 113 */
156         MPUREG_FIFO_COUNTH,                     /* 0x72, 114 */
157         MPUREG_FIFO_COUNTL,                     /* 0x73, 115 */
158         MPUREG_FIFO_R_W,                        /* 0x74, 116 */
159         MPUREG_WHOAMI,                          /* 0x75, 117 */
160
161         NUM_OF_MPU_REGISTERS                    /* = 0x76, 118 */
162 };
163
164 /*==== MPU6050B1 MEMORY ====*/
165 enum MPU_MEMORY_BANKS {
166         MEM_RAM_BANK_0 = 0,
167         MEM_RAM_BANK_1,
168         MEM_RAM_BANK_2,
169         MEM_RAM_BANK_3,
170         MEM_RAM_BANK_4,
171         MEM_RAM_BANK_5,
172         MEM_RAM_BANK_6,
173         MEM_RAM_BANK_7,
174         MEM_RAM_BANK_8,
175         MEM_RAM_BANK_9,
176         MEM_RAM_BANK_10,
177         MEM_RAM_BANK_11,
178         MPU_MEM_NUM_RAM_BANKS,
179         MPU_MEM_OTP_BANK_0 = 16
180 };
181
182
183 /*==== MPU6050B1 parameters ====*/
184
185 #define NUM_REGS                (NUM_OF_MPU_REGISTERS)
186 #define START_SENS_REGS         (0x3B)
187 #define NUM_SENS_REGS           (0x60 - START_SENS_REGS + 1)
188
189 /*---- MPU Memory ----*/
190 #define NUM_BANKS               (MPU_MEM_NUM_RAM_BANKS)
191 #define BANK_SIZE               (256)
192 #define MEM_SIZE                (NUM_BANKS * BANK_SIZE)
193 #define MPU_MEM_BANK_SIZE       (BANK_SIZE)     /*alternative name */
194
195 #define FIFO_HW_SIZE            (1024)
196
197 #define NUM_EXT_SLAVES          (4)
198
199
200 /*==== BITS FOR MPU6050B1 ====*/
201 /*---- MPU6050B1 'XG_OFFS_TC' register (0, 1, 2) ----*/
202 #define BIT_PU_SLEEP_MODE                       0x80
203 #define BITS_XG_OFFS_TC                         0x7E
204 #define BIT_OTP_BNK_VLD                         0x01
205
206 #define BIT_I2C_MST_VDDIO                       0x80
207 #define BITS_YG_OFFS_TC                         0x7E
208 #define BITS_ZG_OFFS_TC                         0x7E
209 /*---- MPU6050B1 'FIFO_EN' register (23) ----*/
210 #define BIT_TEMP_OUT                            0x80
211 #define BIT_GYRO_XOUT                           0x40
212 #define BIT_GYRO_YOUT                           0x20
213 #define BIT_GYRO_ZOUT                           0x10
214 #define BIT_ACCEL                               0x08
215 #define BIT_SLV_2                               0x04
216 #define BIT_SLV_1                               0x02
217 #define BIT_SLV_0                               0x01
218 /*---- MPU6050B1 'CONFIG' register (1A) ----*/
219 /*NONE                                          0xC0 */
220 #define BITS_EXT_SYNC_SET                       0x38
221 #define BITS_DLPF_CFG                           0x07
222 /*---- MPU6050B1 'GYRO_CONFIG' register (1B) ----*/
223 /* voluntarily modified label from BITS_FS_SEL to
224  * BITS_GYRO_FS_SEL to avoid confusion with MPU
225  */
226 #define BITS_GYRO_FS_SEL                        0x18
227 /*NONE                                          0x07 */
228 /*---- MPU6050B1 'ACCEL_CONFIG' register (1C) ----*/
229 #define BITS_ACCEL_FS_SEL                       0x18
230 #define BITS_ACCEL_HPF                          0x07
231 /*---- MPU6050B1 'I2C_MST_CTRL' register (24) ----*/
232 #define BIT_MULT_MST_EN                         0x80
233 #define BIT_WAIT_FOR_ES                         0x40
234 #define BIT_SLV_3_FIFO_EN                       0x20
235 #define BIT_I2C_MST_PSR                         0x10
236 #define BITS_I2C_MST_CLK                        0x0F
237 /*---- MPU6050B1 'I2C_SLV?_ADDR' register (27,2A,2D,30) ----*/
238 #define BIT_I2C_READ                            0x80
239 #define BIT_I2C_WRITE                           0x00
240 #define BITS_I2C_ADDR                           0x7F
241 /*---- MPU6050B1 'I2C_SLV?_CTRL' register (27,2A,2D,30) ----*/
242 #define BIT_SLV_ENABLE                          0x80
243 #define BIT_SLV_BYTE_SW                         0x40
244 #define BIT_SLV_REG_DIS                         0x20
245 #define BIT_SLV_GRP                             0x10
246 #define BITS_SLV_LENG                           0x0F
247 /*---- MPU6050B1 'I2C_SLV4_ADDR' register (31) ----*/
248 #define BIT_I2C_SLV4_RNW                        0x80
249 /*---- MPU6050B1 'I2C_SLV4_CTRL' register (34) ----*/
250 #define BIT_I2C_SLV4_EN                         0x80
251 #define BIT_SLV4_DONE_INT_EN                    0x40
252 #define BIT_SLV4_REG_DIS                        0x20
253 #define MASK_I2C_MST_DLY                        0x1F
254 /*---- MPU6050B1 'I2C_MST_STATUS' register (36) ----*/
255 #define BIT_PASS_THROUGH                        0x80
256 #define BIT_I2C_SLV4_DONE                       0x40
257 #define BIT_I2C_LOST_ARB                        0x20
258 #define BIT_I2C_SLV4_NACK                       0x10
259 #define BIT_I2C_SLV3_NACK                       0x08
260 #define BIT_I2C_SLV2_NACK                       0x04
261 #define BIT_I2C_SLV1_NACK                       0x02
262 #define BIT_I2C_SLV0_NACK                       0x01
263 /*---- MPU6050B1 'INT_PIN_CFG' register (37) ----*/
264 #define BIT_ACTL                                0x80
265 #define BIT_ACTL_LOW                            0x80
266 #define BIT_ACTL_HIGH                           0x00
267 #define BIT_OPEN                                0x40
268 #define BIT_LATCH_INT_EN                        0x20
269 #define BIT_INT_ANYRD_2CLEAR                    0x10
270 #define BIT_ACTL_FSYNC                          0x08
271 #define BIT_FSYNC_INT_EN                        0x04
272 #define BIT_BYPASS_EN                           0x02
273 #define BIT_CLKOUT_EN                           0x01
274 /*---- MPU6050B1 'INT_ENABLE' register (38) ----*/
275 #define BIT_FF_EN                               0x80
276 #define BIT_MOT_EN                              0x40
277 #define BIT_ZMOT_EN                             0x20
278 #define BIT_FIFO_OVERFLOW_EN                    0x10
279 #define BIT_I2C_MST_INT_EN                      0x08
280 #define BIT_PLL_RDY_EN                          0x04
281 #define BIT_DMP_INT_EN                          0x02
282 #define BIT_RAW_RDY_EN                          0x01
283 /*---- MPU6050B1 'DMP_INT_STATUS' register (39) ----*/
284 /*NONE                                          0x80 */
285 /*NONE                                          0x40 */
286 #define BIT_DMP_INT_5                           0x20
287 #define BIT_DMP_INT_4                           0x10
288 #define BIT_DMP_INT_3                           0x08
289 #define BIT_DMP_INT_2                           0x04
290 #define BIT_DMP_INT_1                           0x02
291 #define BIT_DMP_INT_0                           0x01
292 /*---- MPU6050B1 'INT_STATUS' register (3A) ----*/
293 #define BIT_FF_INT                              0x80
294 #define BIT_MOT_INT                             0x40
295 #define BIT_ZMOT_INT                            0x20
296 #define BIT_FIFO_OVERFLOW_INT                   0x10
297 #define BIT_I2C_MST_INT                         0x08
298 #define BIT_PLL_RDY_INT                         0x04
299 #define BIT_DMP_INT                             0x02
300 #define BIT_RAW_DATA_RDY_INT                    0x01
301 /*---- MPU6050B1 'MPUREG_I2C_MST_DELAY_CTRL' register (0x67) ----*/
302 #define BIT_DELAY_ES_SHADOW                     0x80
303 #define BIT_SLV4_DLY_EN                         0x10
304 #define BIT_SLV3_DLY_EN                         0x08
305 #define BIT_SLV2_DLY_EN                         0x04
306 #define BIT_SLV1_DLY_EN                         0x02
307 #define BIT_SLV0_DLY_EN                         0x01
308 /*---- MPU6050B1 'BANK_SEL' register (6D) ----*/
309 #define BIT_PRFTCH_EN                           0x40
310 #define BIT_CFG_USER_BANK                       0x20
311 #define BITS_MEM_SEL                            0x1f
312 /*---- MPU6050B1 'USER_CTRL' register (6A) ----*/
313 #define BIT_DMP_EN                              0x80
314 #define BIT_FIFO_EN                             0x40
315 #define BIT_I2C_MST_EN                          0x20
316 #define BIT_I2C_IF_DIS                          0x10
317 #define BIT_DMP_RST                             0x08
318 #define BIT_FIFO_RST                            0x04
319 #define BIT_I2C_MST_RST                         0x02
320 #define BIT_SIG_COND_RST                        0x01
321 /*---- MPU6050B1 'PWR_MGMT_1' register (6B) ----*/
322 #define BIT_H_RESET                             0x80
323 #define BIT_SLEEP                               0x40
324 #define BIT_CYCLE                               0x20
325 #define BIT_PD_PTAT                             0x08
326 #define BITS_CLKSEL                             0x07
327 /*---- MPU6050B1 'PWR_MGMT_2' register (6C) ----*/
328 #define BITS_LPA_WAKE_CTRL                      0xC0
329 #define BITS_LPA_WAKE_1HZ                       0x00
330 #define BITS_LPA_WAKE_2HZ                       0x40
331 #define BITS_LPA_WAKE_10HZ                      0x80
332 #define BITS_LPA_WAKE_40HZ                      0xC0
333 #define BIT_STBY_XA                             0x20
334 #define BIT_STBY_YA                             0x10
335 #define BIT_STBY_ZA                             0x08
336 #define BIT_STBY_XG                             0x04
337 #define BIT_STBY_YG                             0x02
338 #define BIT_STBY_ZG                             0x01
339
340 #define ACCEL_MOT_THR_LSB (32) /* mg */
341 #define ACCEL_MOT_DUR_LSB (1)
342 #define ACCEL_ZRMOT_THR_LSB_CONVERSION(mg) ((mg * 1000) / 255)
343 #define ACCEL_ZRMOT_DUR_LSB (64)
344
345 /*----------------------------------------------------------------------------*/
346 /*---- Alternative names to take care of conflicts with current mpu3050.h ----*/
347 /*----------------------------------------------------------------------------*/
348
349 /*-- registers --*/
350 #define MPUREG_DLPF_FS_SYNC     MPUREG_CONFIG                   /* 0x1A */
351
352 #define MPUREG_PWR_MGM          MPUREG_PWR_MGMT_1               /* 0x6B */
353 #define MPUREG_FIFO_EN1         MPUREG_FIFO_EN                  /* 0x23 */
354 #define MPUREG_INT_CFG          MPUREG_INT_ENABLE               /* 0x38 */
355 #define MPUREG_X_OFFS_USRH      MPUREG_XG_OFFS_USRH             /* 0x13 */
356 #define MPUREG_WHO_AM_I         MPUREG_WHOAMI                   /* 0x75 */
357 #define MPUREG_23_RSVD          MPUREG_EXT_SLV_SENS_DATA_00     /* 0x49 */
358
359 /*-- bits --*/
360 /* 'USER_CTRL' register */
361 #define BIT_AUX_IF_EN           BIT_I2C_MST_EN
362 #define BIT_AUX_RD_LENG         BIT_I2C_MST_EN
363 #define BIT_IME_IF_RST          BIT_I2C_MST_RST
364 #define BIT_GYRO_RST            BIT_SIG_COND_RST
365 /* 'INT_ENABLE' register */
366 #define BIT_RAW_RDY             BIT_RAW_DATA_RDY_INT
367 #define BIT_MPU_RDY_EN          BIT_PLL_RDY_EN
368 /* 'INT_STATUS' register */
369 #define BIT_INT_STATUS_FIFO_OVERLOW BIT_FIFO_OVERFLOW_INT
370
371 /*---- MPU6050 Silicon Revisions ----*/
372 #define MPU_SILICON_REV_A2              1       /* MPU6050A2 Device */
373 #define MPU_SILICON_REV_B1              2       /* MPU6050B1 Device */
374
375 /*---- MPU6050 notable product revisions ----*/
376 #define MPU_PRODUCT_KEY_B1_E1_5         105
377 #define MPU_PRODUCT_KEY_B2_F1           431
378
379 /*---- structure containing control variables used by MLDL ----*/
380 /*---- MPU clock source settings ----*/
381 /*---- MPU filter selections ----*/
382 enum mpu_filter {
383         MPU_FILTER_256HZ_NOLPF2 = 0,
384         MPU_FILTER_188HZ,
385         MPU_FILTER_98HZ,
386         MPU_FILTER_42HZ,
387         MPU_FILTER_20HZ,
388         MPU_FILTER_10HZ,
389         MPU_FILTER_5HZ,
390         MPU_FILTER_2100HZ_NOLPF,
391         NUM_MPU_FILTER
392 };
393
394 enum mpu_fullscale {
395         MPU_FS_250DPS = 0,
396         MPU_FS_500DPS,
397         MPU_FS_1000DPS,
398         MPU_FS_2000DPS,
399         NUM_MPU_FS
400 };
401
402 enum mpu_clock_sel {
403         MPU_CLK_SEL_INTERNAL = 0,
404         MPU_CLK_SEL_PLLGYROX,
405         MPU_CLK_SEL_PLLGYROY,
406         MPU_CLK_SEL_PLLGYROZ,
407         MPU_CLK_SEL_PLLEXT32K,
408         MPU_CLK_SEL_PLLEXT19M,
409         MPU_CLK_SEL_RESERVED,
410         MPU_CLK_SEL_STOP,
411         NUM_CLK_SEL
412 };
413
414 enum mpu_ext_sync {
415         MPU_EXT_SYNC_NONE = 0,
416         MPU_EXT_SYNC_TEMP,
417         MPU_EXT_SYNC_GYROX,
418         MPU_EXT_SYNC_GYROY,
419         MPU_EXT_SYNC_GYROZ,
420         MPU_EXT_SYNC_ACCELX,
421         MPU_EXT_SYNC_ACCELY,
422         MPU_EXT_SYNC_ACCELZ,
423         NUM_MPU_EXT_SYNC
424 };
425
426 #define MPUREG_CONFIG_VALUE(ext_sync, lpf) \
427         ((ext_sync << 3) | lpf)
428
429 #define MPUREG_GYRO_CONFIG_VALUE(x_st, y_st, z_st, full_scale)  \
430         ((x_st ? 0x80 : 0) |                            \
431          (y_st ? 0x70 : 0) |                            \
432          (z_st ? 0x60 : 0) |                            \
433          (full_scale << 3))
434
435 #endif                          /* __MPU6050_H_ */