summaryrefslogtreecommitdiff
path: root/arch/arm/mach-ux500/board-mop500-stuib.c
diff options
context:
space:
mode:
authorPhilippe Langlais <philippe.langlais@linaro.org>2011-04-05 17:47:04 +0200
committerUlf Hansson <ulf.hansson@stericsson.com>2011-09-19 15:14:46 +0200
commit3284ed3f9f29222c3d559f64853c0f03df222012 (patch)
treea1e865c93144597ece6a07b192447e844a91e8be /arch/arm/mach-ux500/board-mop500-stuib.c
parent10419cd7d82d1e4c12f71d261b2795c0cbca4b0b (diff)
mach-ux500: Add platform data for LSM303DLH accelerometer + magnetometer & L3G4200D Gyroscope sensors
Signed-off-by: Philippe Langlais <philippe.langlais@linaro.org>
Diffstat (limited to 'arch/arm/mach-ux500/board-mop500-stuib.c')
-rw-r--r--arch/arm/mach-ux500/board-mop500-stuib.c40
1 files changed, 40 insertions, 0 deletions
diff --git a/arch/arm/mach-ux500/board-mop500-stuib.c b/arch/arm/mach-ux500/board-mop500-stuib.c
index 247cf226b9a..49fa11d323c 100644
--- a/arch/arm/mach-ux500/board-mop500-stuib.c
+++ b/arch/arm/mach-ux500/board-mop500-stuib.c
@@ -10,12 +10,40 @@
#include <linux/input/bu21013.h>
#include <linux/gpio.h>
#include <linux/interrupt.h>
+#include <linux/lsm303dlh.h>
#include <linux/i2c.h>
#include <linux/input/matrix_keypad.h>
#include <asm/mach-types.h>
#include "board-mop500.h"
+/*
+ * LSM303DLH accelerometer + magnetometer sensors
+ */
+static struct lsm303dlh_platform_data __initdata lsm303dlh_pdata= {
+ .name_a = "lsm303dlh.0",
+ .name_m = "lsm303dlh.1",
+ .axis_map_x = 0,
+ .axis_map_y = 1,
+ .axis_map_z = 2,
+ .negative_x = 1,
+ .negative_y = 1,
+ .negative_z = 0,
+};
+
+static struct i2c_board_info __initdata mop500_i2c2_devices[] = {
+ {
+ /* LSM303DLH Accelerometer */
+ I2C_BOARD_INFO("lsm303dlh_a", 0x18),
+ .platform_data = &lsm303dlh_pdata,
+ },
+ {
+ /* LSM303DLH Magnetometer */
+ I2C_BOARD_INFO("lsm303dlh_m", 0x1E),
+ .platform_data = &lsm303dlh_pdata,
+ },
+};
+
/* STMPE/SKE keypad use this key layout */
static const unsigned int mop500_keymap[] = {
KEY(2, 5, KEY_END),
@@ -202,4 +230,16 @@ void __init mop500_stuib_init(void)
mop500_uib_i2c_add(3, u8500_i2c3_devices_stuib,
ARRAY_SIZE(u8500_i2c3_devices_stuib));
+
+ if (machine_is_hrefv60()) {
+ lsm303dlh_pdata.irq_a1 = HREFV60_ACCEL_INT1_GPIO;
+ lsm303dlh_pdata.irq_a2 = HREFV60_ACCEL_INT2_GPIO;
+ lsm303dlh_pdata.irq_m = HREFV60_MAGNET_DRDY_GPIO;
+ } else {
+ lsm303dlh_pdata.irq_a1 = GPIO_ACCEL_INT1;
+ lsm303dlh_pdata.irq_a2 = GPIO_ACCEL_INT2;
+ lsm303dlh_pdata.irq_m = GPIO_MAGNET_DRDY;
+ }
+ mop500_uib_i2c_add(2, mop500_i2c2_devices,
+ ARRAY_SIZE(mop500_i2c2_devices));
}