diff options
author | Robert Collins <rcollins@nvidia.com> | 2011-04-20 13:23:12 -0700 |
---|---|---|
committer | Niket Sirsi <nsirsi@nvidia.com> | 2011-06-06 18:17:46 -0700 |
commit | 4ddc3879e18e0241734e827f2a72aa8243009a11 (patch) | |
tree | 71351e7dd62ec5cd43160f543e9ab0575f3269a5 /include | |
parent | a07178355f6db85827d44e2d7158f0fcf992293f (diff) |
mpu3050: Motion Libraries: Update MPU kernel to v3.3.4.
Update 1 of 3: MPU kernel files. Depends on board file and
defconfig file.
BUG 808052
Change-Id: I42b08570d3a8dac090860276e04f6d2ab7545461
Reviewed-on: http://git-master/r/29724
Reviewed-by: Bharat Nihalani <bnihalani@nvidia.com>
Reviewed-by: Robert R Collins <rcollins@nvidia.com>
Tested-by: Robert R Collins <rcollins@nvidia.com>
Diffstat (limited to 'include')
-rw-r--r-- | include/linux/mpu.h | 131 |
1 files changed, 73 insertions, 58 deletions
diff --git a/include/linux/mpu.h b/include/linux/mpu.h index 15b5fef07c9a..d66d9e76b9af 100644 --- a/include/linux/mpu.h +++ b/include/linux/mpu.h @@ -22,6 +22,9 @@ #ifdef __KERNEL__ #include <linux/types.h> +#include <linux/ioctl.h> +#elif defined LINUX +#include <sys/ioctl.h> #endif #ifdef M_HW @@ -35,72 +38,67 @@ #define ACCEL_NUM_AXES (3) #define COMPASS_NUM_AXES (3) +#if defined __KERNEL__ || defined LINUX +#define MPU_IOCTL (0x81) /* Magic number for MPU Iocts */ /* IOCTL commands for /dev/mpu */ -#define MPU_SET_MPU_CONFIG (0x00) -#define MPU_SET_INT_CONFIG (0x01) -#define MPU_SET_EXT_SYNC (0x02) -#define MPU_SET_FULL_SCALE (0x03) -#define MPU_SET_LPF (0x04) -#define MPU_SET_CLK_SRC (0x05) -#define MPU_SET_DIVIDER (0x06) -#define MPU_SET_LEVEL_SHIFTER (0x07) -#define MPU_SET_DMP_ENABLE (0x08) -#define MPU_SET_FIFO_ENABLE (0x09) -#define MPU_SET_DMP_CFG1 (0x0a) -#define MPU_SET_DMP_CFG2 (0x0b) -#define MPU_SET_OFFSET_TC (0x0c) -#define MPU_SET_RAM (0x0d) - -#define MPU_SET_PLATFORM_DATA (0x0e) - -#define MPU_GET_MPU_CONFIG (0x80) -#define MPU_GET_INT_CONFIG (0x81) -#define MPU_GET_EXT_SYNC (0x82) -#define MPU_GET_FULL_SCALE (0x83) -#define MPU_GET_LPF (0x84) -#define MPU_GET_CLK_SRC (0x85) -#define MPU_GET_DIVIDER (0x86) -#define MPU_GET_LEVEL_SHIFTER (0x87) -#define MPU_GET_DMP_ENABLE (0x88) -#define MPU_GET_FIFO_ENABLE (0x89) -#define MPU_GET_DMP_CFG1 (0x8a) -#define MPU_GET_DMP_CFG2 (0x8b) -#define MPU_GET_OFFSET_TC (0x8c) -#define MPU_GET_RAM (0x8d) - -#define MPU_READ_REGISTER (0x40) -#define MPU_WRITE_REGISTER (0x41) -#define MPU_READ_MEMORY (0x42) -#define MPU_WRITE_MEMORY (0x43) - -#define MPU_SUSPEND (0x44) -#define MPU_RESUME (0x45) -#define MPU_READ_COMPASS (0x46) -#define MPU_READ_ACCEL (0x47) -#define MPU_READ_PRESSURE (0x48) - -#define MPU_CONFIG_ACCEL (0x20) -#define MPU_CONFIG_COMPASS (0x21) -#define MPU_CONFIG_PRESSURE (0x22) - -#define MPU_GET_CONFIG_ACCEL (0x28) -#define MPU_GET_CONFIG_COMPASS (0x29) -#define MPU_GET_CONFIG_PRESSURE (0x2a) +#define MPU_SET_MPU_CONFIG _IOW(MPU_IOCTL, 0x00, struct mldl_cfg) +#define MPU_GET_MPU_CONFIG _IOR(MPU_IOCTL, 0x00, struct mldl_cfg) +#define MPU_SET_PLATFORM_DATA _IOW(MPU_IOCTL, 0x01, struct mldl_cfg) + +#define MPU_READ _IOR(MPU_IOCTL, 0x10, struct mpu_read_write) +#define MPU_WRITE _IOW(MPU_IOCTL, 0x10, struct mpu_read_write) +#define MPU_READ_MEM _IOR(MPU_IOCTL, 0x11, struct mpu_read_write) +#define MPU_WRITE_MEM _IOW(MPU_IOCTL, 0x11, struct mpu_read_write) +#define MPU_READ_FIFO _IOR(MPU_IOCTL, 0x12, struct mpu_read_write) +#define MPU_WRITE_FIFO _IOW(MPU_IOCTL, 0x12, struct mpu_read_write) + +#define MPU_READ_COMPASS _IOR(MPU_IOCTL, 0x12, unsigned char) +#define MPU_READ_ACCEL _IOR(MPU_IOCTL, 0x13, unsigned char) +#define MPU_READ_PRESSURE _IOR(MPU_IOCTL, 0x14, unsigned char) + +#define MPU_CONFIG_ACCEL _IOW(MPU_IOCTL, 0x20, struct ext_slave_config) +#define MPU_CONFIG_COMPASS _IOW(MPU_IOCTL, 0x21, struct ext_slave_config) +#define MPU_CONFIG_PRESSURE _IOW(MPU_IOCTL, 0x22, struct ext_slave_config) + +#define MPU_GET_CONFIG_ACCEL _IOR(MPU_IOCTL, 0x20, struct ext_slave_config) +#define MPU_GET_CONFIG_COMPASS _IOR(MPU_IOCTL, 0x21, struct ext_slave_config) +#define MPU_GET_CONFIG_PRESSURE _IOR(MPU_IOCTL, 0x22, struct ext_slave_config) + +#define MPU_SUSPEND _IO(MPU_IOCTL, 0x30) +#define MPU_RESUME _IO(MPU_IOCTL, 0x31) +/* Userspace PM Event response */ +#define MPU_PM_EVENT_HANDLED _IO(MPU_IOCTL, 0x32) + +#endif /* Structure for the following IOCTL's: - MPU_SET_RAM - MPU_GET_RAM - MPU_READ_REGISTER - MPU_WRITE_REGISTER - MPU_READ_MEMORY - MPU_WRITE_MEMORY + MPU_READ + MPU_WRITE + MPU_READ_MEM + MPU_WRITE_MEM + MPU_READ_FIFO + MPU_WRITE_FIFO */ struct mpu_read_write { + /* Memory address or register address depending on ioctl */ unsigned short address; unsigned short length; unsigned char *data; }; +enum mpuirq_data_type { + MPUIRQ_DATA_TYPE_MPU_IRQ, + MPUIRQ_DATA_TYPE_SLAVE_IRQ, + MPUIRQ_DATA_TYPE_PM_EVENT, + MPUIRQ_DATA_TYPE_NUM_TYPES, +}; + +/* User space PM event notification */ +#define MPU_PM_EVENT_SUSPEND_PREPARE (3) +#define MPU_PM_EVENT_POST_SUSPEND (4) + +#define MAX_MPUIRQ_DATA_SIZE (32) + struct mpuirq_data { int interruptcount; unsigned long long irqtime; @@ -108,6 +106,7 @@ struct mpuirq_data { int data_size; void *data; }; + enum ext_slave_config_key { MPU_SLAVE_CONFIG_ODR_SUSPEND, MPU_SLAVE_CONFIG_ODR_RESUME, @@ -119,6 +118,8 @@ enum ext_slave_config_key { MPU_SLAVE_CONFIG_NMOT_DUR, MPU_SLAVE_CONFIG_IRQ_SUSPEND, MPU_SLAVE_CONFIG_IRQ_RESUME, + MPU_SLAVE_WRITE_REGISTERS, + MPU_SLAVE_READ_REGISTERS, MPU_SLAVE_CONFIG_NUM_CONFIG_KEYS, }; @@ -157,6 +158,7 @@ enum ext_slave_id { ACCEL_ID_LIS331, ACCEL_ID_LSM303, + ACCEL_ID_LIS3DH, ACCEL_ID_KXSD9, ACCEL_ID_KXTF9, ACCEL_ID_BMA150, @@ -165,11 +167,12 @@ enum ext_slave_id { ACCEL_ID_MMA8450, ACCEL_ID_MMA845X, ACCEL_ID_MPU6000, - ACCEL_ID_LIS3DH, COMPASS_ID_AKM, COMPASS_ID_AMI30X, + COMPASS_ID_AMI306, COMPASS_ID_YAS529, + COMPASS_ID_YAS530, COMPASS_ID_HMC5883, COMPASS_ID_LSM303, COMPASS_ID_MMC314X, @@ -397,12 +400,18 @@ struct ext_slave_descr *ak8975_get_slave_descr(void); #define get_compass_slave_descr ak8975_get_slave_descr #endif -#ifdef CONFIG_MPU_SENSORS_AMI30X /* AICHI Steel compass */ +#ifdef CONFIG_MPU_SENSORS_AMI30X /* AICHI Steel AMI304/305 compass */ struct ext_slave_descr *ami30x_get_slave_descr(void); #undef get_compass_slave_descr #define get_compass_slave_descr ami30x_get_slave_descr #endif +#ifdef CONFIG_MPU_SENSORS_AMI306 /* AICHI Steel AMI306 compass */ +struct ext_slave_descr *ami306_get_slave_descr(void); +#undef get_compass_slave_descr +#define get_compass_slave_descr ami306_get_slave_descr +#endif + #ifdef CONFIG_MPU_SENSORS_HMC5883 /* Honeywell compass */ struct ext_slave_descr *hmc5883_get_slave_descr(void); #undef get_compass_slave_descr @@ -427,6 +436,12 @@ struct ext_slave_descr *yas529_get_slave_descr(void); #define get_compass_slave_descr yas529_get_slave_descr #endif +#ifdef CONFIG_MPU_SENSORS_YAS530 /* Yamaha compass */ +struct ext_slave_descr *yas530_get_slave_descr(void); +#undef get_compass_slave_descr +#define get_compass_slave_descr yas530_get_slave_descr +#endif + #ifdef CONFIG_MPU_SENSORS_HSCDTD002B /* Alps HSCDTD002B compass */ struct ext_slave_descr *hscdtd002b_get_slave_descr(void); #undef get_compass_slave_descr |