summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--arch/arm/mach-tegra/board-cardhu-sensors.c110
-rw-r--r--arch/arm/mach-tegra/board-cardhu.h17
-rw-r--r--arch/arm/mach-tegra/board-enterprise-sensors.c118
-rw-r--r--arch/arm/mach-tegra/board-enterprise.h17
-rw-r--r--arch/arm/mach-tegra/board-ventana-sensors.c123
-rw-r--r--arch/arm/mach-tegra/board-ventana.h17
6 files changed, 283 insertions, 119 deletions
diff --git a/arch/arm/mach-tegra/board-cardhu-sensors.c b/arch/arm/mach-tegra/board-cardhu-sensors.c
index 41a57071620c..c7b56583a88a 100644
--- a/arch/arm/mach-tegra/board-cardhu-sensors.c
+++ b/arch/arm/mach-tegra/board-cardhu-sensors.c
@@ -744,47 +744,91 @@ static int __init cam_tca6416_init(void)
#endif
#ifdef CONFIG_MPU_SENSORS_MPU3050
-#define SENSOR_MPU_NAME "mpu3050"
-static struct mpu3050_platform_data mpu3050_data = {
- .int_config = 0x10,
- .orientation = { 0, -1, 0, -1, 0, 0, 0, 0, -1 }, /* Orientation matrix for MPU on cardhu */
- .level_shifter = 0,
-
- .accel = {
- .get_slave_descr = get_accel_slave_descr,
- .adapt_num = 2,
- .bus = EXT_SLAVE_BUS_SECONDARY,
- .address = 0x0F,
- .orientation = { 0, -1, 0, -1, 0, 0, 0, 0, -1 }, /* Orientation matrix for Kionix on cardhu */
- },
+static struct mpu_platform_data mpu3050_data = {
+ .int_config = 0x10,
+ .level_shifter = 0,
+ .orientation = MPU_GYRO_ORIENTATION, /* Located in board_[platformname].h */
+};
- .compass = {
- .get_slave_descr = get_compass_slave_descr,
- .adapt_num = 2,
- .bus = EXT_SLAVE_BUS_PRIMARY,
- .address = 0x0C,
- .orientation = { 1, 0, 0, 0, 1, 0, 0, 0, 1 }, /* Orientation matrix for AKM on cardhu */
- },
+static struct ext_slave_platform_data mpu3050_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 */
};
-static struct i2c_board_info __initdata mpu3050_i2c0_boardinfo[] = {
+static struct ext_slave_platform_data mpu_compass_data = {
+ .address = MPU_COMPASS_ADDR,
+ .irq = 0,
+ .adapt_num = MPU_COMPASS_BUS_NUM,
+ .bus = EXT_SLAVE_BUS_PRIMARY,
+ .orientation = MPU_COMPASS_ORIENTATION, /* Located in board_[platformname].h */
+};
+
+static struct i2c_board_info __initdata inv_mpu_i2c2_board_info[] = {
{
- I2C_BOARD_INFO(SENSOR_MPU_NAME, 0x68),
- .irq = TEGRA_GPIO_TO_IRQ(TEGRA_GPIO_PX1),
+ I2C_BOARD_INFO(MPU_GYRO_NAME, MPU_GYRO_ADDR),
+ .irq = TEGRA_GPIO_TO_IRQ(MPU_GYRO_IRQ_GPIO),
.platform_data = &mpu3050_data,
},
+ {
+ 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,
+ },
+ {
+ I2C_BOARD_INFO(MPU_COMPASS_NAME, MPU_COMPASS_ADDR),
+#if MPU_COMPASS_IRQ_GPIO
+ .irq = TEGRA_GPIO_TO_IRQ(MPU_COMPASS_IRQ_GPIO),
+#endif
+ .platform_data = &mpu_compass_data,
+ },
};
-static void cardhu_mpuirq_init(void)
+static void mpuirq_init(void)
{
- pr_info("*** MPU START *** cardhu_mpuirq_init...\n");
- tegra_gpio_enable(TEGRA_GPIO_PX1);
- gpio_request(TEGRA_GPIO_PX1, SENSOR_MPU_NAME);
- gpio_direction_input(TEGRA_GPIO_PX1);
- pr_info("*** MPU END *** cardhu_mpuirq_init...\n");
-
- i2c_register_board_info(2, mpu3050_i2c0_boardinfo,
- ARRAY_SIZE(mpu3050_i2c0_boardinfo));
+ int ret = 0;
+
+ pr_info("*** MPU START *** mpuirq_init...\n");
+
+#if MPU_ACCEL_IRQ_GPIO
+ /* ACCEL-IRQ assignment */
+ tegra_gpio_enable(MPU_ACCEL_IRQ_GPIO);
+ ret = gpio_request(MPU_ACCEL_IRQ_GPIO, MPU_ACCEL_NAME);
+ if (ret < 0) {
+ pr_err("%s: gpio_request failed %d\n", __func__, ret);
+ return;
+ }
+
+ ret = gpio_direction_input(MPU_ACCEL_IRQ_GPIO);
+ if (ret < 0) {
+ pr_err("%s: gpio_direction_input failed %d\n", __func__, ret);
+ gpio_free(MPU_ACCEL_IRQ_GPIO);
+ return;
+ }
+#endif
+
+ /* MPU-IRQ assignment */
+ tegra_gpio_enable(MPU_GYRO_IRQ_GPIO);
+ ret = gpio_request(MPU_GYRO_IRQ_GPIO, MPU_GYRO_NAME);
+ if (ret < 0) {
+ pr_err("%s: gpio_request failed %d\n", __func__, ret);
+ return;
+ }
+
+ ret = gpio_direction_input(MPU_GYRO_IRQ_GPIO);
+ if (ret < 0) {
+ pr_err("%s: gpio_direction_input failed %d\n", __func__, ret);
+ gpio_free(MPU_GYRO_IRQ_GPIO);
+ return;
+ }
+ pr_info("*** MPU END *** mpuirq_init...\n");
+
+ i2c_register_board_info(MPU_GYRO_BUS_NUM, inv_mpu_i2c2_board_info,
+ ARRAY_SIZE(inv_mpu_i2c2_board_info));
}
#endif
@@ -848,7 +892,7 @@ int __init cardhu_sensors_init(void)
ARRAY_SIZE(cardhu_i2c4_nct1008_board_info));
#ifdef CONFIG_MPU_SENSORS_MPU3050
- cardhu_mpuirq_init();
+ mpuirq_init();
#endif
return 0;
}
diff --git a/arch/arm/mach-tegra/board-cardhu.h b/arch/arm/mach-tegra/board-cardhu.h
index 5c8dcb4aab34..cacbd65dea0d 100644
--- a/arch/arm/mach-tegra/board-cardhu.h
+++ b/arch/arm/mach-tegra/board-cardhu.h
@@ -211,6 +211,23 @@ int cardhu_pm299_gpio_switch_regulator_init(void);
int cardhu_pm299_regulator_init(void);
void __init cardhu_tsensor_init(void);
+/* Invensense MPU Definitions */
+#define MPU_GYRO_NAME "mpu3050"
+#define MPU_GYRO_IRQ_GPIO TEGRA_GPIO_PX1
+#define MPU_GYRO_ADDR 0x68
+#define MPU_GYRO_BUS_NUM 2
+#define MPU_GYRO_ORIENTATION { 0, -1, 0, -1, 0, 0, 0, 0, -1 }
+#define MPU_ACCEL_NAME "kxtf9"
+#define MPU_ACCEL_IRQ_GPIO TEGRA_GPIO_PL1
+#define MPU_ACCEL_ADDR 0x0F
+#define MPU_ACCEL_BUS_NUM 2
+#define MPU_ACCEL_ORIENTATION { 0, -1, 0, -1, 0, 0, 0, 0, -1 }
+#define MPU_COMPASS_NAME "ak8975"
+#define MPU_COMPASS_IRQ_GPIO 0
+#define MPU_COMPASS_ADDR 0x0C
+#define MPU_COMPASS_BUS_NUM 2
+#define MPU_COMPASS_ORIENTATION { 1, 0, 0, 0, 1, 0, 0, 0, 1 }
+
/* Baseband GPIO addresses */
#define BB_GPIO_BB_EN TEGRA_GPIO_PR5
#define BB_GPIO_BB_RST TEGRA_GPIO_PS4
diff --git a/arch/arm/mach-tegra/board-enterprise-sensors.c b/arch/arm/mach-tegra/board-enterprise-sensors.c
index f6149a33c1b4..7d71d1b1e228 100644
--- a/arch/arm/mach-tegra/board-enterprise-sensors.c
+++ b/arch/arm/mach-tegra/board-enterprise-sensors.c
@@ -144,71 +144,101 @@ static void enterprise_nct1008_init(void)
ARRAY_SIZE(enterprise_i2c4_nct1008_board_info));
}
-#define SENSOR_MPU_NAME "mpu3050"
-static struct mpu3050_platform_data mpu3050_data = {
- .int_config = 0x10,
- /* Orientation matrix for MPU on enterprise */
- .orientation = { -1, 0, 0, 0, -1, 0, 0, 0, 1 },
- .level_shifter = 0,
-
- .accel = {
- .get_slave_descr = get_accel_slave_descr,
- .adapt_num = 0,
- .bus = EXT_SLAVE_BUS_SECONDARY,
- .address = 0x0F,
- /* Orientation matrix for Kionix on enterprise */
- .orientation = { 0, 1, 0, -1, 0, 0, 0, 0, 1 },
+static struct mpu_platform_data mpu3050_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 = {
+ .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 */
+};
- .compass = {
- .get_slave_descr = get_compass_slave_descr,
- .adapt_num = 0,
- .bus = EXT_SLAVE_BUS_PRIMARY,
- .address = 0x0C,
- /* Orientation matrix for AKM on enterprise */
- .orientation = { 0, 1, 0, -1, 0, 0, 0, 0, 1 },
- },
+static struct ext_slave_platform_data mpu_compass_data = {
+ .address = MPU_COMPASS_ADDR,
+ .irq = 0,
+ .adapt_num = MPU_COMPASS_BUS_NUM,
+ .bus = EXT_SLAVE_BUS_PRIMARY,
+ .orientation = MPU_COMPASS_ORIENTATION, /* Located in board_[platformname].h */
};
-static struct i2c_board_info __initdata mpu3050_i2c0_boardinfo[] = {
+static struct i2c_board_info __initdata inv_mpu_i2c2_board_info[] = {
{
- I2C_BOARD_INFO(SENSOR_MPU_NAME, 0x68),
- .irq = TEGRA_GPIO_TO_IRQ(TEGRA_GPIO_PH4),
+ I2C_BOARD_INFO(MPU_GYRO_NAME, MPU_GYRO_ADDR),
+ .irq = TEGRA_GPIO_TO_IRQ(MPU_GYRO_IRQ_GPIO),
.platform_data = &mpu3050_data,
},
+ {
+ 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,
+ },
+ {
+ I2C_BOARD_INFO(MPU_COMPASS_NAME, MPU_COMPASS_ADDR),
+#if MPU_COMPASS_IRQ_GPIO
+ .irq = TEGRA_GPIO_TO_IRQ(MPU_COMPASS_IRQ_GPIO),
+#endif
+ .platform_data = &mpu_compass_data,
+ },
};
-static inline void enterprise_msleep(u32 t)
-{
- /*
- If timer value is between ( 10us - 20ms),
- usleep_range() is recommended.
- Please read Documentation/timers/timers-howto.txt.
- */
- usleep_range(t*1000, t*1000 + 500);
-}
-
-static void enterprise_mpuirq_init(void)
+static void mpuirq_init(void)
{
int ret = 0;
- tegra_gpio_enable(TEGRA_GPIO_PH4);
- ret = gpio_request(TEGRA_GPIO_PH4, SENSOR_MPU_NAME);
+ pr_info("*** MPU START *** mpuirq_init...\n");
+
+#if MPU_ACCEL_IRQ_GPIO
+ /* ACCEL-IRQ assignment */
+ tegra_gpio_enable(MPU_ACCEL_IRQ_GPIO);
+ ret = gpio_request(MPU_ACCEL_IRQ_GPIO, MPU_ACCEL_NAME);
if (ret < 0) {
pr_err("%s: gpio_request failed %d\n", __func__, ret);
return;
}
- ret = gpio_direction_input(TEGRA_GPIO_PH4);
+ ret = gpio_direction_input(MPU_ACCEL_IRQ_GPIO);
if (ret < 0) {
pr_err("%s: gpio_direction_input failed %d\n", __func__, ret);
- gpio_free(TEGRA_GPIO_PH4);
+ gpio_free(MPU_ACCEL_IRQ_GPIO);
return;
}
+#endif
+
+ /* MPU-IRQ assignment */
+ tegra_gpio_enable(MPU_GYRO_IRQ_GPIO);
+ ret = gpio_request(MPU_GYRO_IRQ_GPIO, MPU_GYRO_NAME);
+ if (ret < 0) {
+ pr_err("%s: gpio_request failed %d\n", __func__, ret);
+ return;
+ }
+
+ ret = gpio_direction_input(MPU_GYRO_IRQ_GPIO);
+ if (ret < 0) {
+ pr_err("%s: gpio_direction_input failed %d\n", __func__, ret);
+ gpio_free(MPU_GYRO_IRQ_GPIO);
+ return;
+ }
+ pr_info("*** MPU END *** mpuirq_init...\n");
- i2c_register_board_info(0, mpu3050_i2c0_boardinfo,
- ARRAY_SIZE(mpu3050_i2c0_boardinfo));
+ i2c_register_board_info(MPU_GYRO_BUS_NUM, inv_mpu_i2c2_board_info,
+ ARRAY_SIZE(inv_mpu_i2c2_board_info));
+}
+
+static inline void enterprise_msleep(u32 t)
+{
+ /*
+ If timer value is between ( 10us - 20ms),
+ usleep_range() is recommended.
+ Please read Documentation/timers/timers-howto.txt.
+ */
+ usleep_range(t*1000, t*1000 + 500);
}
static struct i2c_board_info enterprise_i2c0_isl_board_info[] = {
@@ -623,7 +653,7 @@ int __init enterprise_sensors_init(void)
enterprise_isl_init();
enterprise_nct1008_init();
- enterprise_mpuirq_init();
+ mpuirq_init();
ret = enterprise_cam_init();
return ret;
diff --git a/arch/arm/mach-tegra/board-enterprise.h b/arch/arm/mach-tegra/board-enterprise.h
index 8c86093a3ca8..80fad492834b 100644
--- a/arch/arm/mach-tegra/board-enterprise.h
+++ b/arch/arm/mach-tegra/board-enterprise.h
@@ -52,6 +52,23 @@ int enterprise_suspend_init(void);
int enterprise_edp_init(void);
void __init enterprise_tsensor_init(void);
+/* Invensense MPU Definitions */
+#define MPU_GYRO_NAME "mpu3050"
+#define MPU_GYRO_IRQ_GPIO TEGRA_GPIO_PH4
+#define MPU_GYRO_ADDR 0x68
+#define MPU_GYRO_BUS_NUM 0
+#define MPU_GYRO_ORIENTATION { -1, 0, 0, 0, -1, 0, 0, 0, 1 }
+#define MPU_ACCEL_NAME "kxtf9"
+#define MPU_ACCEL_IRQ_GPIO 0 /* DISABLE ACCELIRQ: TEGRA_GPIO_PJ2 */
+#define MPU_ACCEL_ADDR 0x0F
+#define MPU_ACCEL_BUS_NUM 0
+#define MPU_ACCEL_ORIENTATION { 0, 1, 0, -1, 0, 0, 0, 0, 1 }
+#define MPU_COMPASS_NAME "ak8975"
+#define MPU_COMPASS_IRQ_GPIO 0
+#define MPU_COMPASS_ADDR 0x0C
+#define MPU_COMPASS_BUS_NUM 0
+#define MPU_COMPASS_ORIENTATION { 0, 1, 0, -1, 0, 0, 0, 0, 1 }
+
/* PCA954x I2C bus expander bus addresses */
#define PCA954x_I2C_BUS_BASE 6
#define PCA954x_I2C_BUS0 (PCA954x_I2C_BUS_BASE + 0)
diff --git a/arch/arm/mach-tegra/board-ventana-sensors.c b/arch/arm/mach-tegra/board-ventana-sensors.c
index 5d1c73f65fef..c9c2f5441612 100644
--- a/arch/arm/mach-tegra/board-ventana-sensors.c
+++ b/arch/arm/mach-tegra/board-ventana-sensors.c
@@ -334,51 +334,96 @@ static struct i2c_board_info ventana_i2c8_board_info[] = {
};
#ifdef CONFIG_MPU_SENSORS_MPU3050
-#define SENSOR_MPU_NAME "mpu3050"
-static struct mpu3050_platform_data mpu3050_data = {
- .int_config = 0x10,
- .orientation = { 0, -1, 0, -1, 0, 0, 0, 0, -1 }, /* Orientation matrix for MPU on ventana */
- .level_shifter = 0,
- .accel = {
-#ifdef CONFIG_MPU_SENSORS_KXTF9
- .get_slave_descr = get_accel_slave_descr,
-#else
- .get_slave_descr = NULL,
-#endif
- .adapt_num = 0,
- .bus = EXT_SLAVE_BUS_SECONDARY,
- .address = 0x0F,
- .orientation = { 0, -1, 0, -1, 0, 0, 0, 0, -1 }, /* Orientation matrix for Kionix on ventana */
- },
+static struct mpu_platform_data mpu3050_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 = {
+ .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 */
+};
+
+static struct ext_slave_platform_data mpu_compass_data = {
+ .address = MPU_COMPASS_ADDR,
+ .irq = 0,
+ .adapt_num = MPU_COMPASS_BUS_NUM,
+ .bus = EXT_SLAVE_BUS_PRIMARY,
+ .orientation = MPU_COMPASS_ORIENTATION, /* Located in board_[platformname].h */
+};
- .compass = {
-#ifdef CONFIG_MPU_SENSORS_AK8975
- .get_slave_descr = get_compass_slave_descr,
-#else
- .get_slave_descr = NULL,
+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,
+ },
+ {
+ I2C_BOARD_INFO(MPU_ACCEL_NAME, MPU_ACCEL_ADDR),
+#if MPU_ACCEL_IRQ_GPIO
+ .irq = TEGRA_GPIO_TO_IRQ(MPU_ACCEL_IRQ_GPIO),
#endif
- .adapt_num = 4, /* bus number 4 on ventana */
- .bus = EXT_SLAVE_BUS_PRIMARY,
- .address = 0x0C,
- .orientation = { 1, 0, 0, 0, -1, 0, 0, 0, -1 }, /* Orientation matrix for AKM on ventana */
+ .platform_data = &mpu3050_accel_data,
},
};
-static struct i2c_board_info __initdata mpu3050_i2c0_boardinfo[] = {
+static struct i2c_board_info __initdata inv_mpu_i2c4_board_info[] = {
{
- I2C_BOARD_INFO(SENSOR_MPU_NAME, 0x68),
- .irq = TEGRA_GPIO_TO_IRQ(TEGRA_GPIO_PZ4),
- .platform_data = &mpu3050_data,
+ I2C_BOARD_INFO(MPU_COMPASS_NAME, MPU_COMPASS_ADDR),
+#if MPU_COMPASS_IRQ_GPIO
+ .irq = TEGRA_GPIO_TO_IRQ(MPU_COMPASS_IRQ_GPIO),
+#endif
+ .platform_data = &mpu_compass_data,
},
};
-static void ventana_mpuirq_init(void)
+static void mpuirq_init(void)
{
- pr_info("*** MPU START *** ventana_mpuirq_init...\n");
- tegra_gpio_enable(TEGRA_GPIO_PZ4);
- gpio_request(TEGRA_GPIO_PZ4, SENSOR_MPU_NAME);
- gpio_direction_input(TEGRA_GPIO_PZ4);
- pr_info("*** MPU END *** ventana_mpuirq_init...\n");
+ int ret = 0;
+
+ pr_info("*** MPU START *** mpuirq_init...\n");
+
+#if MPU_ACCEL_IRQ_GPIO
+ /* ACCEL-IRQ assignment */
+ tegra_gpio_enable(MPU_ACCEL_IRQ_GPIO);
+ ret = gpio_request(MPU_ACCEL_IRQ_GPIO, MPU_ACCEL_NAME);
+ if (ret < 0) {
+ pr_err("%s: gpio_request failed %d\n", __func__, ret);
+ return;
+ }
+
+ ret = gpio_direction_input(MPU_ACCEL_IRQ_GPIO);
+ if (ret < 0) {
+ pr_err("%s: gpio_direction_input failed %d\n", __func__, ret);
+ gpio_free(MPU_ACCEL_IRQ_GPIO);
+ return;
+ }
+#endif
+
+ /* MPU-IRQ assignment */
+ tegra_gpio_enable(MPU_GYRO_IRQ_GPIO);
+ ret = gpio_request(MPU_GYRO_IRQ_GPIO, MPU_GYRO_NAME);
+ if (ret < 0) {
+ pr_err("%s: gpio_request failed %d\n", __func__, ret);
+ return;
+ }
+
+ ret = gpio_direction_input(MPU_GYRO_IRQ_GPIO);
+ if (ret < 0) {
+ pr_err("%s: gpio_direction_input failed %d\n", __func__, ret);
+ gpio_free(MPU_GYRO_IRQ_GPIO);
+ return;
+ }
+ pr_info("*** MPU END *** mpuirq_init...\n");
+
+ i2c_register_board_info(MPU_GYRO_BUS_NUM, inv_mpu_i2c2_board_info,
+ ARRAY_SIZE(inv_mpu_i2c2_board_info));
+ i2c_register_board_info(MPU_COMPASS_BUS_NUM, inv_mpu_i2c4_board_info,
+ ARRAY_SIZE(inv_mpu_i2c4_board_info));
}
#endif
@@ -391,7 +436,7 @@ int __init ventana_sensors_init(void)
ventana_akm8975_init();
#endif
#ifdef CONFIG_MPU_SENSORS_MPU3050
- ventana_mpuirq_init();
+ mpuirq_init();
#endif
ventana_camera_init();
ventana_nct1008_init();
@@ -425,12 +470,6 @@ int __init ventana_sensors_init(void)
i2c_register_board_info(8, ventana_i2c8_board_info,
ARRAY_SIZE(ventana_i2c8_board_info));
-
-#ifdef CONFIG_MPU_SENSORS_MPU3050
- i2c_register_board_info(0, mpu3050_i2c0_boardinfo,
- ARRAY_SIZE(mpu3050_i2c0_boardinfo));
-#endif
-
return 0;
}
diff --git a/arch/arm/mach-tegra/board-ventana.h b/arch/arm/mach-tegra/board-ventana.h
index 6e2a1221c757..61b75363a19c 100644
--- a/arch/arm/mach-tegra/board-ventana.h
+++ b/arch/arm/mach-tegra/board-ventana.h
@@ -69,4 +69,21 @@ int ventana_charger_init(void);
#define TPS6586X_INT_BASE TEGRA_NR_IRQS
#define TPS6586X_INT_END (TPS6586X_INT_BASE + 32)
+/* Invensense MPU Definitions */
+#define MPU_GYRO_NAME "mpu3050"
+#define MPU_GYRO_IRQ_GPIO TEGRA_GPIO_PZ4
+#define MPU_GYRO_ADDR 0x68
+#define MPU_GYRO_BUS_NUM 0
+#define MPU_GYRO_ORIENTATION { 0, -1, 0, -1, 0, 0, 0, 0, -1 }
+#define MPU_ACCEL_NAME "kxtf9"
+#define MPU_ACCEL_IRQ_GPIO 0 /* Disable ACCELIRQ: TEGRA_GPIO_PN4 */
+#define MPU_ACCEL_ADDR 0x0F
+#define MPU_ACCEL_BUS_NUM 0
+#define MPU_ACCEL_ORIENTATION { 0, -1, 0, -1, 0, 0, 0, 0, -1 }
+#define MPU_COMPASS_NAME "ak8975"
+#define MPU_COMPASS_IRQ_GPIO TEGRA_GPIO_PN5
+#define MPU_COMPASS_ADDR 0x0C
+#define MPU_COMPASS_BUS_NUM 4
+#define MPU_COMPASS_ORIENTATION { 1, 0, 0, 0, 1, 0, 0, 0, 1 }
+
#endif