diff options
| author | vsalve <vsalve@nvidia.com> | 2011-03-15 05:59:43 -0400 |
|---|---|---|
| committer | Robert Collins <rcollins@nvidia.com> | 2017-07-13 17:12:48 -0400 |
| commit | f78fd772463cf38efae51fa4bf158e76c1fb169d (patch) | |
| tree | 021be539c3074c0236cb466592c64d638c299024 /include/linux | |
| parent | b8d3b0f86951e039131e40005b6ed2e4b1f439d0 (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.h | 117 |
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 | 104 | struct mpuirq_data { |
| 101 | MPU_SUSPEND | ||
| 102 | MPU_RESUME | ||
| 103 | */ | ||
| 104 | struct mpu_suspend_resume { | ||
| 105 | int gyro; | ||
| 106 | int accel; | ||
| 107 | int compass; | ||
| 108 | int pressure; | ||
| 109 | }; | ||
| 110 | |||
| 111 | struct 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 | }; |
| 118 | enum ext_slave_config_key { | 111 | enum 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 */ | ||
| 126 | enum 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 | */ |
| 134 | struct ext_slave_config { | 140 | struct 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 */ |
| 306 | struct ext_slave_descr *adxl346_get_slave_descr(void); | 320 | struct 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 */ |
| 312 | struct ext_slave_descr *bma150_get_slave_descr(void); | 326 | struct 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 */ |
| 318 | struct ext_slave_descr *bma222_get_slave_descr(void); | 332 | struct 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 */ |
| 324 | struct ext_slave_descr *kxsd9_get_slave_descr(void); | 338 | struct 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 */ |
| 330 | struct ext_slave_descr *kxtf9_get_slave_descr(void); | 344 | struct 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 */ |
| 336 | struct ext_slave_descr *lis331dlh_get_slave_descr(void); | 350 | struct 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 */ | ||
| 357 | struct 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 */ | ||
| 342 | struct ext_slave_descr *lsm303dlha_get_slave_descr(void); | 363 | struct 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) | ||
| 349 | struct ext_slave_descr *mantis_get_slave_descr(void); | 371 | struct 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 */ |
| 355 | struct ext_slave_descr *mma8450_get_slave_descr(void); | 377 | struct 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 */ |
| 361 | struct ext_slave_descr *mma8451_get_slave_descr(void); | 383 | struct 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 */ |
| 373 | struct ext_slave_descr *ak8975_get_slave_descr(void); | 395 | struct 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 */ |
| 379 | struct ext_slave_descr *ami30x_get_slave_descr(void); | 401 | struct 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 */ |
| 385 | struct ext_slave_descr *hmc5883_get_slave_descr(void); | 407 | struct 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 */ |
| 391 | struct ext_slave_descr *mmc314x_get_slave_descr(void); | 413 | struct 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 */ |
| 397 | struct ext_slave_descr *lsm303dlhm_get_slave_descr(void); | 419 | struct 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 */ |
| 403 | struct ext_slave_descr *yas529_get_slave_descr(void); | 425 | struct 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 */ |
| 409 | struct ext_slave_descr *hscdtd002b_get_slave_descr(void); | 431 | struct 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 */ | ||
| 437 | struct 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 */ |
| 420 | struct ext_slave_descr *bma085_get_slave_descr(void); | 447 | struct 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 |
