summaryrefslogtreecommitdiff
path: root/include/linux/mpu6880.h
blob: a0cb445c531e427fbc93c8fc05597bb6eb43667f (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
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
/* SPDX-License-Identifier: GPL-2.0 */
/*
 * Definitions for mma8452 compass chip.
 */
#ifndef __MPU6880_H
#define __MPU6880_H

#include <linux/ioctl.h>
/**add***/
#define MPU6880_PRECISION		16
#define MPU6880_RANGE			2000000

#define MPU6880_SMPLRT_DIV		0x19
#define MPU6880_CONFIG 			0x1A
#define MPU6880_GYRO_CONFIG		0x1B
#define MPU6880_ACCEL_CONFIG	0x1C
#define MPU6880_ACCEL_CONFIG2	0x1D
#define MPU6880_LP_ACCEL_ODR   0x1E
#define MPU6880_WOM_THRESH	0x1F
#define MPU6880_FIFO_EN			0x23
#define MPU6880_INT_PIN_CFG		0x37
#define MPU6880_INT_ENABLE		0x38
#define MPU6880_DMP_INT_STATUS	0x39
#define MPU6880_INT_STATUS		0x3A
#define MPU6880_ACCEL_XOUT_H	0x3B
#define MPU6880_TEMP_OUT_H	0x41
#define MPU6880_GYRO_XOUT_H	0x43
#define MPU6880_ACCEL_INTEL_CTRL 0x69
#define MPU6880_USER_CTRL		0x6A
#define MPU6880_PWR_MGMT_1		0x6B
#define MPU6880_PWR_MGMT_2		0x6C
#define MPU6880_PRGM_STRT_ADDRH     0x70
#define MPU6880_FIFO_COUNTH		0x72
#define MPU6880_FIFO_R_W		0x74
#define MPU6880_WHOAMI			0x75

#define MPU6880_DEVICE_ID		0x78
/*------------------------------
	MPU6880_CONFIG
--------------------------------*/
#define DLPF_CFG_250HZ		0x00
#define DLPF_CFG_184HZ		0x01
#define DLPF_CFG_98HZ		0x02
#define DLPF_CFG_41HZ		0x03
#define DLPF_CFG_20HZ		0x04
#define DLPF_CFG_10HZ		0x05
#define DLPF_CFG_5HZ		0x06
#define DLPF_CFG_3600HZ		0x07
#define EXT_SYNC_SET_TEMP	0x08
#define EXT_SYNC_SET_GYRO_X	0x10
#define EXT_SYNC_SET_GYRO_Y	0x18
#define EXT_SYNC_SET_GYRO_Z	0x20
#define EXT_SYNC_SET_ACCEL_X	0x28
#define EXT_SYNC_SET_ACCEL_Y	0x30
#define EXT_SYNC_SET_ACCEL_Z	0x38


/*------------------------------
	MPU6880_GYRO_CONFIG
--------------------------------*/
#define GFSR_250DPS			(0 <<3)
#define GFSR_500DPS			(1 <<3)
#define GFSR_1000DPS		(2 <<3)
#define GFSR_2000DPS		(3 <<3)

/*------------------------------
	MPU6880_ACCEL_CONFIG
--------------------------------*/
#define AFSR_2G		(0 <<3)
#define AFSR_4G		(1 <<3)
#define AFSR_8G		(2 <<3)
#define AFSR_16G	(3 <<3)


/*------------------------------
	MPU6880_ACCEL_CONFIG2
--------------------------------*/
#define A_DLPF_CFG_460HZ		0x00
#define A_DLPF_CFG_184HZ		0x01
#define A_DLPF_CFG_92HZ		0x02
#define A_DLPF_CFG_41HZ		0x03
#define A_DLPF_CFG_20HZ		0x04
#define A_DLPF_CFG_10HZ		0x05
#define A_DLPF_CFG_5HZ			0x06
//#define A_DLPF_CFG_460HZ      0x07
#define BIT_FIFO_SIZE_1K                 0x40
#define BIT_ACCEL_FCHOICE_B		0x08


/*------------------------------
	MPU6880_LP_ACCEL_ODR
--------------------------------*/
#define LPA_CLK_P24HZ	0x0
#define LPA_CLK_P49HZ	0x1
#define LPA_CLK_P98HZ	0x2
#define LPA_CLK_1P95HZ	0x3
#define LPA_CLK_3P91HZ	0x4
#define LPA_CLK_7P81HZ	0x5
#define LPA_CLK_15P63HZ	0x6
#define LPA_CLK_31P25HZ	0x7
#define LPA_CLK_62P50HZ	0x8
#define LPA_CLK_125HZ	0x9
#define LPA_CLK_250HZ	0xa
#define LPA_CLK_500HZ	0xb


/*------------------------------
	MPU6880_PWR_MGMT_1
--------------------------------*/
#define BIT_H_RESET			(1<<7)
#define BIT_SLEEP			(1<<6)
#define BIT_CYCLE			(1<<5)
#define BIT_GYRO_STANDBY	(1<<4)
#define BIT_PD_PTAT			(1<<3)
#define BIT_CLKSEL			(1<<0)

#define CLKSEL_INTERNAL		0
#define CLKSEL_PLL			1

/*------------------------------
	MPU6880_PWR_MGMT_2
--------------------------------*/
#define BIT_ACCEL_STBY              0x38
#define BIT_GYRO_STBY               0x07
#define BITS_LPA_WAKE_CTRL 0xC0
#define BITS_LPA_WAKE_1HZ 0x00
#define BITS_LPA_WAKE_2HZ 0x40
#define BITS_LPA_WAKE_20HZ 0x80

#define MPU6880_PWRM1_SLEEP				0x40
#define MPU6880_PWRM1_GYRO_STANDBY		0x10
#define MPU6880_PWRM2_ACCEL_DISABLE		0x38
#define MPU6880_PWRM2_GYRO_DISABLE		0x07

/*------------------------------
	MPU6880_ACCEL_INTEL_CTRL
--------------------------------*/
#define BIT_ACCEL_INTEL_EN	0x80
#define BIT_ACCEL_INTEL_MODE	0x40


/*------------------------------
	MPU6880_USER_CTRL
--------------------------------*/
#define BIT_FIFO_RST                    0x04
#define BIT_DMP_RST                     0x08
#define BIT_I2C_MST_EN                  0x20
#define BIT_FIFO_EN                     0x40
#define BIT_DMP_EN                      0x80


/*------------------------------
	MPU6880_FIFO_EN
--------------------------------*/
#define BIT_ACCEL_OUT           0x08
#define BITS_GYRO_OUT           0x70


/*------------------------------
	MPU6880_INT_PIN_CFG
--------------------------------*/
#define BIT_BYPASS_EN           0x2

/*------------------------------
	MPU6880_INT_EN/INT_STATUS
--------------------------------*/
#define BIT_FIFO_OVERLOW 	0x80
#define BIT_MOT_INT				0x40
#define BIT_MPU_RDY                 0x04
#define BIT_DMP_INT                 0x02
#define BIT_RAW_RDY                 0x01


#define DMP_START_ADDR           0x400



#define AXIS_NUM 3
#define AXIS_ADC_BYTE 2
#define SENSOR_PACKET (AXIS_NUM * AXIS_ADC_BYTE)





/*
	self-test parameter
*/

#define DEF_ST_PRECISION            1000
#define DEF_ST_MPU6500_ACCEL_LPF        2
#define DEF_STABLE_TIME_ST 50
#define DEF_SELFTEST_GYRO_FS            (0 << 3)
#define DEF_SELFTEST_ACCEL_FS           (2 << 3)
#define DEF_SELFTEST_6500_ACCEL_FS      (0 << 3)
#define DEF_SW_SELFTEST_GYRO_FS	GFSR_2000DPS
#define DEF_SW_SELFTEST_SENSITIVITY	\
	(2000*DEF_ST_PRECISION)/32768

#define DEF_SW_SELFTEST_SAMPLE_COUNT 75
#define DEF_SW_SELFTEST_SAMPLE_TIME 75
#define DEF_SW_ACCEL_CAL_SAMPLE_TIME 50
#define DEF_SW_SKIP_COUNT 10

#define DEF_ST_6500_STABLE_TIME         20
#define BYTES_PER_SENSOR        (6)
#define DEF_SELFTEST_SAMPLE_RATE             0
#define DEF_GYRO_WAIT_TIME          50
#define THREE_AXIS              (3)
#define INIT_ST_SAMPLES          200
#define FIFO_COUNT_BYTE         (2)
#define DEF_ST_TRY_TIMES            2
#define REG_6500_XG_ST_DATA     0x0
#define REG_6500_XA_ST_DATA     0xD
#define BITS_SELF_TEST_EN		0xE0

#define DEF_ST_SCALE                    (1L << 15)

/*---- MPU6500 Self Test Pass/Fail Criteria ----*/
/* Gyro Offset Max Value (dps) */
#define DEF_GYRO_OFFSET_MAX             20
/* Gyro Self Test Absolute Limits ST_AL (dps) */
#define DEF_GYRO_ST_AL                  60
/* Accel Self Test Absolute Limits ST_AL (mg) */
#define DEF_ACCEL_ST_AL_MIN             225
#define DEF_ACCEL_ST_AL_MAX             675
#define DEF_6500_ACCEL_ST_SHIFT_DELTA   500
#define DEF_6500_GYRO_CT_SHIFT_DELTA    500
#define DEF_ST_MPU6500_ACCEL_LPF        2
#define DEF_ST_6500_ACCEL_FS_MG         2000UL
#define DEF_SELFTEST_6500_ACCEL_FS      (0 << 3)

#define DEF_SELFTEST_GYRO_SENS          (32768 / 250)


#define  GSENSOR_DEV_PATH    "/dev/mma8452_daemon"

#endif