mpu6050: Motion Libraries: Board files for Invensense MPU6050.
Robert Collins [Fri, 2 Dec 2011 00:19:20 +0000 (16:19 -0800)]
Invensense board files for MPU6050. MPL version 4.1.1.

Bug 825602

Signed-off-by: Robert Collins <rcollins@nvidia.com>
Reviewed-on: http://git-master/r/70373
(cherry picked from commit 2839895906a9c822e5c9f8abab68e33e9982c5a9)

Change-Id: I97eb4dcc075ab8b6f2bb583756dd10128924f10a
Signed-off-by: Pritesh Raithatha <praithatha@nvidia.com>
Reviewed-on: http://git-master/r/82717
Reviewed-by: Automatic_Commit_Validation_User
Reviewed-by: Varun Wadekar <vwadekar@nvidia.com>
Tested-by: Varun Wadekar <vwadekar@nvidia.com>
Reviewed-by: Robert Collins <rcollins@nvidia.com>

Rebase-Id: R2309f6c496cd642457025b133e862ea902e5bbcb

arch/arm/mach-tegra/board-cardhu-sensors.c
arch/arm/mach-tegra/board-cardhu.h
arch/arm/mach-tegra/board-enterprise-sensors.c
arch/arm/mach-tegra/board-enterprise.h

index 2fd8647..0f7d2f9 100644 (file)
@@ -745,20 +745,28 @@ static int __init cam_tca6416_init(void)
 }
 #endif
 
-#ifdef CONFIG_MPU_SENSORS_MPU3050
-static struct mpu_platform_data mpu3050_data = {
+/* MPU board file definition   */
+#if (MPU_GYRO_TYPE == MPU_TYPE_MPU3050)
+#define MPU_GYRO_NAME          "mpu3050"
+#endif
+#if (MPU_GYRO_TYPE == MPU_TYPE_MPU6050)
+#define MPU_GYRO_NAME          "mpu6050"
+#endif
+static struct mpu_platform_data mpu_gyro_data = {
        .int_config     = 0x10,
        .level_shifter  = 0,
        .orientation    = MPU_GYRO_ORIENTATION, /* Located in board_[platformname].h    */
 };
 
-static struct ext_slave_platform_data mpu3050_accel_data = {
+#if (MPU_GYRO_TYPE == MPU_TYPE_MPU3050)
+static struct ext_slave_platform_data mpu_accel_data = {
        .address        = MPU_ACCEL_ADDR,
        .irq            = 0,
        .adapt_num      = MPU_ACCEL_BUS_NUM,
        .bus            = EXT_SLAVE_BUS_SECONDARY,
        .orientation    = MPU_ACCEL_ORIENTATION,        /* Located in board_[platformname].h    */
 };
+#endif
 
 static struct ext_slave_platform_data mpu_compass_data = {
        .address        = MPU_COMPASS_ADDR,
@@ -772,15 +780,17 @@ static struct i2c_board_info __initdata inv_mpu_i2c2_board_info[] = {
        {
                I2C_BOARD_INFO(MPU_GYRO_NAME, MPU_GYRO_ADDR),
                .irq = TEGRA_GPIO_TO_IRQ(MPU_GYRO_IRQ_GPIO),
-               .platform_data = &mpu3050_data,
+               .platform_data = &mpu_gyro_data,
        },
+#if (MPU_GYRO_TYPE == MPU_TYPE_MPU3050)
        {
                I2C_BOARD_INFO(MPU_ACCEL_NAME, MPU_ACCEL_ADDR),
 #if    MPU_ACCEL_IRQ_GPIO
                .irq = TEGRA_GPIO_TO_IRQ(MPU_ACCEL_IRQ_GPIO),
 #endif
-               .platform_data = &mpu3050_accel_data,
+               .platform_data = &mpu_accel_data,
        },
+#endif
        {
                I2C_BOARD_INFO(MPU_COMPASS_NAME, MPU_COMPASS_ADDR),
 #if    MPU_COMPASS_IRQ_GPIO
@@ -796,6 +806,7 @@ static void mpuirq_init(void)
 
        pr_info("*** MPU START *** mpuirq_init...\n");
 
+#if (MPU_GYRO_TYPE == MPU_TYPE_MPU3050)
 #if    MPU_ACCEL_IRQ_GPIO
        /* ACCEL-IRQ assignment */
        tegra_gpio_enable(MPU_ACCEL_IRQ_GPIO);
@@ -812,6 +823,7 @@ static void mpuirq_init(void)
                return;
        }
 #endif
+#endif
 
        /* MPU-IRQ assignment */
        tegra_gpio_enable(MPU_GYRO_IRQ_GPIO);
@@ -832,7 +844,6 @@ static void mpuirq_init(void)
        i2c_register_board_info(MPU_GYRO_BUS_NUM, inv_mpu_i2c2_board_info,
                ARRAY_SIZE(inv_mpu_i2c2_board_info));
 }
-#endif
 
 static struct i2c_board_info cardhu_i2c2_isl_board_info[] = {
        {
@@ -913,9 +924,7 @@ int __init cardhu_sensors_init(void)
        i2c_register_board_info(4, cardhu_i2c4_nct1008_board_info,
                ARRAY_SIZE(cardhu_i2c4_nct1008_board_info));
 
-#ifdef CONFIG_MPU_SENSORS_MPU3050
        mpuirq_init();
-#endif
        return 0;
 }
 
index df41630..ba2a0d0 100644 (file)
@@ -216,8 +216,9 @@ int cardhu_pm298_regulator_init(void);
 int cardhu_pm299_gpio_switch_regulator_init(void);
 int cardhu_pm299_regulator_init(void);
 
-/* Invensense MPU Definitions */
-#define MPU_GYRO_NAME          "mpu3050"
+#define MPU_TYPE_MPU3050       1
+#define MPU_TYPE_MPU6050       2
+#define MPU_GYRO_TYPE          MPU_TYPE_MPU3050
 #define MPU_GYRO_IRQ_GPIO      TEGRA_GPIO_PX1
 #define MPU_GYRO_ADDR          0x68
 #define MPU_GYRO_BUS_NUM       2
index 69e0b18..f775c2b 100644 (file)
@@ -149,19 +149,28 @@ static void enterprise_nct1008_init(void)
                                ARRAY_SIZE(enterprise_i2c4_nct1008_board_info));
 }
 
-static struct mpu_platform_data mpu3050_data = {
+/* MPU board file definition   */
+#if (MPU_GYRO_TYPE == MPU_TYPE_MPU3050)
+#define MPU_GYRO_NAME          "mpu3050"
+#endif
+#if (MPU_GYRO_TYPE == MPU_TYPE_MPU6050)
+#define MPU_GYRO_NAME          "mpu6050"
+#endif
+static struct mpu_platform_data mpu_gyro_data = {
        .int_config     = 0x10,
        .level_shifter  = 0,
        .orientation    = MPU_GYRO_ORIENTATION, /* Located in board_[platformname].h    */
 };
 
-static struct ext_slave_platform_data mpu3050_accel_data = {
+#if (MPU_GYRO_TYPE == MPU_TYPE_MPU3050)
+static struct ext_slave_platform_data mpu_accel_data = {
        .address        = MPU_ACCEL_ADDR,
        .irq            = 0,
        .adapt_num      = MPU_ACCEL_BUS_NUM,
        .bus            = EXT_SLAVE_BUS_SECONDARY,
        .orientation    = MPU_ACCEL_ORIENTATION,        /* Located in board_[platformname].h    */
 };
+#endif
 
 static struct ext_slave_platform_data mpu_compass_data = {
        .address        = MPU_COMPASS_ADDR,
@@ -175,15 +184,17 @@ static struct i2c_board_info __initdata inv_mpu_i2c2_board_info[] = {
        {
                I2C_BOARD_INFO(MPU_GYRO_NAME, MPU_GYRO_ADDR),
                .irq = TEGRA_GPIO_TO_IRQ(MPU_GYRO_IRQ_GPIO),
-               .platform_data = &mpu3050_data,
+               .platform_data = &mpu_gyro_data,
        },
+#if (MPU_GYRO_TYPE == MPU_TYPE_MPU3050)
        {
                I2C_BOARD_INFO(MPU_ACCEL_NAME, MPU_ACCEL_ADDR),
 #if    MPU_ACCEL_IRQ_GPIO
                .irq = TEGRA_GPIO_TO_IRQ(MPU_ACCEL_IRQ_GPIO),
 #endif
-               .platform_data = &mpu3050_accel_data,
+               .platform_data = &mpu_accel_data,
        },
+#endif
        {
                I2C_BOARD_INFO(MPU_COMPASS_NAME, MPU_COMPASS_ADDR),
 #if    MPU_COMPASS_IRQ_GPIO
@@ -199,6 +210,7 @@ static void mpuirq_init(void)
 
        pr_info("*** MPU START *** mpuirq_init...\n");
 
+#if (MPU_GYRO_TYPE == MPU_TYPE_MPU3050)
 #if    MPU_ACCEL_IRQ_GPIO
        /* ACCEL-IRQ assignment */
        tegra_gpio_enable(MPU_ACCEL_IRQ_GPIO);
@@ -215,6 +227,7 @@ static void mpuirq_init(void)
                return;
        }
 #endif
+#endif
 
        /* MPU-IRQ assignment */
        tegra_gpio_enable(MPU_GYRO_IRQ_GPIO);
index 2e40890..d652acf 100644 (file)
@@ -53,7 +53,9 @@ int enterprise_edp_init(void);
 void enterprise_bpc_mgmt_init(void);
 
 /* Invensense MPU Definitions */
-#define MPU_GYRO_NAME          "mpu3050"
+#define MPU_TYPE_MPU3050       1
+#define MPU_TYPE_MPU6050       2
+#define MPU_GYRO_TYPE          MPU_TYPE_MPU3050
 #define MPU_GYRO_IRQ_GPIO      TEGRA_GPIO_PH4
 #define MPU_GYRO_ADDR          0x68
 #define MPU_GYRO_BUS_NUM       0