summaryrefslogtreecommitdiffstats
path: root/include/linux
diff options
context:
space:
mode:
authorvsalve <vsalve@nvidia.com>2011-03-15 05:59:43 -0400
committerRobert Collins <rcollins@nvidia.com>2017-07-13 17:12:48 -0400
commitf78fd772463cf38efae51fa4bf158e76c1fb169d (patch)
tree021be539c3074c0236cb466592c64d638c299024 /include/linux
parentb8d3b0f86951e039131e40005b6ed2e4b1f439d0 (diff)
misc: mpu3050: Invensense MPU code update v3.3.3
Update Invensense Motion Library (MPL) to production version v3.3.3. Previous version was engineering release and is not suitable for mass production. This version of the MPL most notably fixes problems with suspend/resume where touch screen would quit working during a suspend/resume cycle. Original-Change-Id: Ia33433a677862b3d1e31d410aac7176d7a381a8f Reviewed-on: http://git-master/r/22987 Reviewed-by: Varun Colbert <vcolbert@nvidia.com> Tested-by: Varun Colbert <vcolbert@nvidia.com> Rebase-Id: R8832ce6cbb6eaec0afb32a2265c55b45f7391cb3
Diffstat (limited to 'include/linux')
-rw-r--r--include/linux/mpu.h117
1 files changed, 72 insertions, 45 deletions
diff --git a/include/linux/mpu.h b/include/linux/mpu.h
index 5756f5709..15b5fef07 100644
--- a/include/linux/mpu.h
+++ b/include/linux/mpu.h
@@ -31,9 +31,9 @@
31#endif 31#endif
32 32
33/* Number of axes on each sensor */ 33/* Number of axes on each sensor */
34#define GYRO_NUM_AXES (3) 34#define GYRO_NUM_AXES (3)
35#define ACCEL_NUM_AXES (3) 35#define ACCEL_NUM_AXES (3)
36#define COMPASS_NUM_AXES (3) 36#define COMPASS_NUM_AXES (3)
37 37
38/* IOCTL commands for /dev/mpu */ 38/* IOCTL commands for /dev/mpu */
39#define MPU_SET_MPU_CONFIG (0x00) 39#define MPU_SET_MPU_CONFIG (0x00)
@@ -83,6 +83,10 @@
83#define MPU_CONFIG_COMPASS (0x21) 83#define MPU_CONFIG_COMPASS (0x21)
84#define MPU_CONFIG_PRESSURE (0x22) 84#define MPU_CONFIG_PRESSURE (0x22)
85 85
86#define MPU_GET_CONFIG_ACCEL (0x28)
87#define MPU_GET_CONFIG_COMPASS (0x29)
88#define MPU_GET_CONFIG_PRESSURE (0x2a)
89
86/* Structure for the following IOCTL's: 90/* Structure for the following IOCTL's:
87 MPU_SET_RAM 91 MPU_SET_RAM
88 MPU_GET_RAM 92 MPU_GET_RAM
@@ -97,18 +101,7 @@ struct mpu_read_write {
97 unsigned char *data; 101 unsigned char *data;
98}; 102};
99 103
100/* Structure for the following IOCTL's 104struct mpuirq_data {
101 MPU_SUSPEND
102 MPU_RESUME
103*/
104struct mpu_suspend_resume {
105 int gyro;
106 int accel;
107 int compass;
108 int pressure;
109};
110
111struct irq_data {
112 int interruptcount; 105 int interruptcount;
113 unsigned long long irqtime; 106 unsigned long long irqtime;
114 int data_type; 107 int data_type;
@@ -116,24 +109,38 @@ struct irq_data {
116 void *data; 109 void *data;
117}; 110};
118enum ext_slave_config_key { 111enum ext_slave_config_key {
119 MPU_SLAVE_CONFIG_ODR_SUSPEND, 112 MPU_SLAVE_CONFIG_ODR_SUSPEND,
120 MPU_SLAVE_CONFIG_ODR_RESUME, 113 MPU_SLAVE_CONFIG_ODR_RESUME,
121 MPU_SLAVE_CONFIG_FSR_SUSPEND, 114 MPU_SLAVE_CONFIG_FSR_SUSPEND,
122 MPU_SLAVE_CONFIG_FSR_RESUME, 115 MPU_SLAVE_CONFIG_FSR_RESUME,
123 MPU_SLAVE_CONFIG_MOT_THS, 116 MPU_SLAVE_CONFIG_MOT_THS,
124 MPU_SLAVE_CONFIG_NMOT_THS, 117 MPU_SLAVE_CONFIG_NMOT_THS,
125 MPU_SLAVE_CONFIG_MOT_DUR, 118 MPU_SLAVE_CONFIG_MOT_DUR,
126 MPU_SLAVE_CONFIG_NMOT_DUR, 119 MPU_SLAVE_CONFIG_NMOT_DUR,
127 MPU_SLAVE_CONFIG_NUM_CONFIG_KEYS, 120 MPU_SLAVE_CONFIG_IRQ_SUSPEND,
121 MPU_SLAVE_CONFIG_IRQ_RESUME,
122 MPU_SLAVE_CONFIG_NUM_CONFIG_KEYS,
128}; 123};
124
125/* For the MPU_SLAVE_CONFIG_IRQ_SUSPEND and MPU_SLAVE_CONFIG_IRQ_RESUME */
126enum ext_slave_config_irq_type {
127 MPU_SLAVE_IRQ_TYPE_NONE,
128 MPU_SLAVE_IRQ_TYPE_MOTION,
129 MPU_SLAVE_IRQ_TYPE_DATA_READY,
130};
131
129/* Structure for the following IOCTS's 132/* Structure for the following IOCTS's
130 * MPU_CONFIG_ACCEL 133 * MPU_CONFIG_ACCEL
131 * MPU_CONFIG_COMPASS 134 * MPU_CONFIG_COMPASS
132 * MPU_CONFIG_PRESSURE 135 * MPU_CONFIG_PRESSURE
136 * MPU_GET_CONFIG_ACCEL
137 * MPU_GET_CONFIG_COMPASS
138 * MPU_GET_CONFIG_PRESSURE
133 */ 139 */
134struct ext_slave_config { 140struct ext_slave_config {
135 int key; 141 int key;
136 int len; 142 int len;
143 int apply;
137 void *data; 144 void *data;
138}; 145};
139 146
@@ -156,8 +163,9 @@ enum ext_slave_id {
156 ACCEL_ID_BMA222, 163 ACCEL_ID_BMA222,
157 ACCEL_ID_ADI346, 164 ACCEL_ID_ADI346,
158 ACCEL_ID_MMA8450, 165 ACCEL_ID_MMA8450,
159 ACCEL_ID_MMA8451, 166 ACCEL_ID_MMA845X,
160 ACCEL_ID_MPU6000, 167 ACCEL_ID_MPU6000,
168 ACCEL_ID_LIS3DH,
161 169
162 COMPASS_ID_AKM, 170 COMPASS_ID_AKM,
163 COMPASS_ID_AMI30X, 171 COMPASS_ID_AMI30X,
@@ -166,6 +174,7 @@ enum ext_slave_id {
166 COMPASS_ID_LSM303, 174 COMPASS_ID_LSM303,
167 COMPASS_ID_MMC314X, 175 COMPASS_ID_MMC314X,
168 COMPASS_ID_HSCDTD002B, 176 COMPASS_ID_HSCDTD002B,
177 COMPASS_ID_HSCDTD004A,
169 178
170 PRESSURE_ID_BMA085, 179 PRESSURE_ID_BMA085,
171}; 180};
@@ -229,6 +238,7 @@ struct tFixPntRange {
229 * @init: function used to preallocate memory used by the driver 238 * @init: function used to preallocate memory used by the driver
230 * @exit: function used to free memory allocated for the driver 239 * @exit: function used to free memory allocated for the driver
231 * @config: function used to configure the device 240 * @config: function used to configure the device
241 * @get_config:function used to get the device's configuration
232 * 242 *
233 * @name: text name of the device 243 * @name: text name of the device
234 * @type: device type. enum ext_slave_type 244 * @type: device type. enum ext_slave_type
@@ -262,6 +272,10 @@ struct ext_slave_descr {
262 struct ext_slave_descr *slave, 272 struct ext_slave_descr *slave,
263 struct ext_slave_platform_data *pdata, 273 struct ext_slave_platform_data *pdata,
264 struct ext_slave_config *config); 274 struct ext_slave_config *config);
275 int (*get_config) (void *mlsl_handle,
276 struct ext_slave_descr *slave,
277 struct ext_slave_platform_data *pdata,
278 struct ext_slave_config *config);
265 279
266 char *name; 280 char *name;
267 unsigned char type; 281 unsigned char type;
@@ -302,65 +316,73 @@ struct mpu3050_platform_data {
302*/ 316*/
303#define get_accel_slave_descr NULL 317#define get_accel_slave_descr NULL
304 318
305#ifdef CONFIG_SENSORS_ADXL346 /* ADI accelerometer */ 319#ifdef CONFIG_MPU_SENSORS_ADXL346 /* ADI accelerometer */
306struct ext_slave_descr *adxl346_get_slave_descr(void); 320struct ext_slave_descr *adxl346_get_slave_descr(void);
307#undef get_accel_slave_descr 321#undef get_accel_slave_descr
308#define get_accel_slave_descr adxl346_get_slave_descr 322#define get_accel_slave_descr adxl346_get_slave_descr
309#endif 323#endif
310 324
311#ifdef CONFIG_SENSORS_BMA150 /* Bosch accelerometer */ 325#ifdef CONFIG_MPU_SENSORS_BMA150 /* Bosch accelerometer */
312struct ext_slave_descr *bma150_get_slave_descr(void); 326struct ext_slave_descr *bma150_get_slave_descr(void);
313#undef get_accel_slave_descr 327#undef get_accel_slave_descr
314#define get_accel_slave_descr bma150_get_slave_descr 328#define get_accel_slave_descr bma150_get_slave_descr
315#endif 329#endif
316 330
317#ifdef CONFIG_SENSORS_BMA222 /* Bosch 222 accelerometer */ 331#ifdef CONFIG_MPU_SENSORS_BMA222 /* Bosch 222 accelerometer */
318struct ext_slave_descr *bma222_get_slave_descr(void); 332struct ext_slave_descr *bma222_get_slave_descr(void);
319#undef get_accel_slave_descr 333#undef get_accel_slave_descr
320#define get_accel_slave_descr bma222_get_slave_descr 334#define get_accel_slave_descr bma222_get_slave_descr
321#endif 335#endif
322 336
323#ifdef CONFIG_SENSORS_KXSD9 /* Kionix accelerometer */ 337#ifdef CONFIG_MPU_SENSORS_KXSD9 /* Kionix accelerometer */
324struct ext_slave_descr *kxsd9_get_slave_descr(void); 338struct ext_slave_descr *kxsd9_get_slave_descr(void);
325#undef get_accel_slave_descr 339#undef get_accel_slave_descr
326#define get_accel_slave_descr kxsd9_get_slave_descr 340#define get_accel_slave_descr kxsd9_get_slave_descr
327#endif 341#endif
328 342
329#ifdef CONFIG_SENSORS_KXTF9_MPU /* Kionix accelerometer */ 343#ifdef CONFIG_MPU_SENSORS_KXTF9 /* Kionix accelerometer */
330struct ext_slave_descr *kxtf9_get_slave_descr(void); 344struct ext_slave_descr *kxtf9_get_slave_descr(void);
331#undef get_accel_slave_descr 345#undef get_accel_slave_descr
332#define get_accel_slave_descr kxtf9_get_slave_descr 346#define get_accel_slave_descr kxtf9_get_slave_descr
333#endif 347#endif
334 348
335#ifdef CONFIG_SENSORS_LIS331DLH /* ST accelerometer */ 349#ifdef CONFIG_MPU_SENSORS_LIS331DLH /* ST accelerometer */
336struct ext_slave_descr *lis331dlh_get_slave_descr(void); 350struct ext_slave_descr *lis331dlh_get_slave_descr(void);
337#undef get_accel_slave_descr 351#undef get_accel_slave_descr
338#define get_accel_slave_descr lis331dlh_get_slave_descr 352#define get_accel_slave_descr lis331dlh_get_slave_descr
339#endif 353#endif
340 354
341#ifdef CONFIG_SENSORS_LSM303DLHA /* ST accelerometer */ 355
356#ifdef CONFIG_MPU_SENSORS_LIS3DH /* ST accelerometer */
357struct ext_slave_descr *lis3dh_get_slave_descr(void);
358#undef get_accel_slave_descr
359#define get_accel_slave_descr lis3dh_get_slave_descr
360#endif
361
362#ifdef CONFIG_MPU_SENSORS_LSM303DLHA /* ST accelerometer */
342struct ext_slave_descr *lsm303dlha_get_slave_descr(void); 363struct ext_slave_descr *lsm303dlha_get_slave_descr(void);
343#undef get_accel_slave_descr 364#undef get_accel_slave_descr
344#define get_accel_slave_descr lsm303dlha_get_slave_descr 365#define get_accel_slave_descr lsm303dlha_get_slave_descr
345#endif 366#endif
346 367
347/* MPU6000 Accel */ 368/* MPU6000 Accel */
348#if defined(CONFIG_SENSORS_MPU6000) || defined(CONFIG_SENSORS_MPU6000_MODULE) 369#if defined(CONFIG_MPU_SENSORS_MPU6000) || \
370 defined(CONFIG_MPU_SENSORS_MPU6000_MODULE)
349struct ext_slave_descr *mantis_get_slave_descr(void); 371struct ext_slave_descr *mantis_get_slave_descr(void);
350#undef get_accel_slave_descr 372#undef get_accel_slave_descr
351#define get_accel_slave_descr mantis_get_slave_descr 373#define get_accel_slave_descr mantis_get_slave_descr
352#endif 374#endif
353 375
354#ifdef CONFIG_SENSORS_MMA8450 /* Freescale accelerometer */ 376#ifdef CONFIG_MPU_SENSORS_MMA8450 /* Freescale accelerometer */
355struct ext_slave_descr *mma8450_get_slave_descr(void); 377struct ext_slave_descr *mma8450_get_slave_descr(void);
356#undef get_accel_slave_descr 378#undef get_accel_slave_descr
357#define get_accel_slave_descr mma8450_get_slave_descr 379#define get_accel_slave_descr mma8450_get_slave_descr
358#endif 380#endif
359 381
360#ifdef CONFIG_SENSORS_MMA8451 /* Freescale accelerometer */ 382#ifdef CONFIG_MPU_SENSORS_MMA845X /* Freescale accelerometer */
361struct ext_slave_descr *mma8451_get_slave_descr(void); 383struct ext_slave_descr *mma845x_get_slave_descr(void);
362#undef get_accel_slave_descr 384#undef get_accel_slave_descr
363#define get_accel_slave_descr mma8451_get_slave_descr 385#define get_accel_slave_descr mma845x_get_slave_descr
364#endif 386#endif
365 387
366 388
@@ -369,54 +391,59 @@ struct ext_slave_descr *mma8451_get_slave_descr(void);
369*/ 391*/
370#define get_compass_slave_descr NULL 392#define get_compass_slave_descr NULL
371 393
372#ifdef CONFIG_SENSORS_AK8975_MPU /* AKM compass */ 394#ifdef CONFIG_MPU_SENSORS_AK8975 /* AKM compass */
373struct ext_slave_descr *ak8975_get_slave_descr(void); 395struct ext_slave_descr *ak8975_get_slave_descr(void);
374#undef get_compass_slave_descr 396#undef get_compass_slave_descr
375#define get_compass_slave_descr ak8975_get_slave_descr 397#define get_compass_slave_descr ak8975_get_slave_descr
376#endif 398#endif
377 399
378#ifdef CONFIG_SENSORS_AMI30X /* AICHI Steel compass */ 400#ifdef CONFIG_MPU_SENSORS_AMI30X /* AICHI Steel compass */
379struct ext_slave_descr *ami30x_get_slave_descr(void); 401struct ext_slave_descr *ami30x_get_slave_descr(void);
380#undef get_compass_slave_descr 402#undef get_compass_slave_descr
381#define get_compass_slave_descr ami30x_get_slave_descr 403#define get_compass_slave_descr ami30x_get_slave_descr
382#endif 404#endif
383 405
384#ifdef CONFIG_SENSORS_HMC5883 /* Honeywell compass */ 406#ifdef CONFIG_MPU_SENSORS_HMC5883 /* Honeywell compass */
385struct ext_slave_descr *hmc5883_get_slave_descr(void); 407struct ext_slave_descr *hmc5883_get_slave_descr(void);
386#undef get_compass_slave_descr 408#undef get_compass_slave_descr
387#define get_compass_slave_descr hmc5883_get_slave_descr 409#define get_compass_slave_descr hmc5883_get_slave_descr
388#endif 410#endif
389 411
390#ifdef CONFIG_SENSORS_MMC314X /* MEMSIC compass */ 412#ifdef CONFIG_MPU_SENSORS_MMC314X /* MEMSIC compass */
391struct ext_slave_descr *mmc314x_get_slave_descr(void); 413struct ext_slave_descr *mmc314x_get_slave_descr(void);
392#undef get_compass_slave_descr 414#undef get_compass_slave_descr
393#define get_compass_slave_descr mmc314x_get_slave_descr 415#define get_compass_slave_descr mmc314x_get_slave_descr
394#endif 416#endif
395 417
396#ifdef CONFIG_SENSORS_LSM303DLHM /* ST compass */ 418#ifdef CONFIG_MPU_SENSORS_LSM303DLHM /* ST compass */
397struct ext_slave_descr *lsm303dlhm_get_slave_descr(void); 419struct ext_slave_descr *lsm303dlhm_get_slave_descr(void);
398#undef get_compass_slave_descr 420#undef get_compass_slave_descr
399#define get_compass_slave_descr lsm303dlhm_get_slave_descr 421#define get_compass_slave_descr lsm303dlhm_get_slave_descr
400#endif 422#endif
401 423
402#ifdef CONFIG_SENSORS_YAS529 /* Yamaha compass */ 424#ifdef CONFIG_MPU_SENSORS_YAS529 /* Yamaha compass */
403struct ext_slave_descr *yas529_get_slave_descr(void); 425struct ext_slave_descr *yas529_get_slave_descr(void);
404#undef get_compass_slave_descr 426#undef get_compass_slave_descr
405#define get_compass_slave_descr yas529_get_slave_descr 427#define get_compass_slave_descr yas529_get_slave_descr
406#endif 428#endif
407 429
408#ifdef CONFIG_SENSORS_HSCDTD002B /* Alps compass */ 430#ifdef CONFIG_MPU_SENSORS_HSCDTD002B /* Alps HSCDTD002B compass */
409struct ext_slave_descr *hscdtd002b_get_slave_descr(void); 431struct ext_slave_descr *hscdtd002b_get_slave_descr(void);
410#undef get_compass_slave_descr 432#undef get_compass_slave_descr
411#define get_compass_slave_descr hscdtd002b_get_slave_descr 433#define get_compass_slave_descr hscdtd002b_get_slave_descr
412#endif 434#endif
413 435
436#ifdef CONFIG_MPU_SENSORS_HSCDTD004A /* Alps HSCDTD004A compass */
437struct ext_slave_descr *hscdtd004a_get_slave_descr(void);
438#undef get_compass_slave_descr
439#define get_compass_slave_descr hscdtd004a_get_slave_descr
440#endif
414/* 441/*
415 Pressure 442 Pressure
416*/ 443*/
417#define get_pressure_slave_descr NULL 444#define get_pressure_slave_descr NULL
418 445
419#ifdef CONFIG_SENSORS_BMA085 /* BMA pressure */ 446#ifdef CONFIG_MPU_SENSORS_BMA085 /* BMA pressure */
420struct ext_slave_descr *bma085_get_slave_descr(void); 447struct ext_slave_descr *bma085_get_slave_descr(void);
421#undef get_pressure_slave_descr 448#undef get_pressure_slave_descr
422#define get_pressure_slave_descr bma085_get_slave_descr 449#define get_pressure_slave_descr bma085_get_slave_descr