summaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
authorRobert Collins <rcollins@nvidia.com>2011-04-20 13:23:12 -0700
committerNiket Sirsi <nsirsi@nvidia.com>2011-06-06 18:17:46 -0700
commit4ddc3879e18e0241734e827f2a72aa8243009a11 (patch)
tree71351e7dd62ec5cd43160f543e9ab0575f3269a5 /include
parenta07178355f6db85827d44e2d7158f0fcf992293f (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.h131
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