diff options
author | Philippe Langlais <philippe.langlais@linaro.org> | 2011-04-05 17:47:04 +0200 |
---|---|---|
committer | Ulf Hansson <ulf.hansson@stericsson.com> | 2011-09-19 15:14:46 +0200 |
commit | 3284ed3f9f29222c3d559f64853c0f03df222012 (patch) | |
tree | a1e865c93144597ece6a07b192447e844a91e8be /arch/arm/mach-ux500/board-mop500-stuib.c | |
parent | 10419cd7d82d1e4c12f71d261b2795c0cbca4b0b (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.c | 40 |
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)); } |