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-u8500uib.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-u8500uib.c')
-rw-r--r-- | arch/arm/mach-ux500/board-mop500-u8500uib.c | 56 |
1 files changed, 56 insertions, 0 deletions
diff --git a/arch/arm/mach-ux500/board-mop500-u8500uib.c b/arch/arm/mach-ux500/board-mop500-u8500uib.c index 1af72289303..6f30598fc74 100644 --- a/arch/arm/mach-ux500/board-mop500-u8500uib.c +++ b/arch/arm/mach-ux500/board-mop500-u8500uib.c @@ -10,16 +10,60 @@ #include <linux/i2c.h> #include <linux/gpio.h> #include <linux/interrupt.h> +#include <linux/lsm303dlh.h> +#include <linux/l3g4200d.h> #include <linux/mfd/tc3589x.h> #include <linux/input/matrix_keypad.h> #include <../drivers/staging/ste_rmi4/synaptics_i2c_rmi4.h> +#include <asm/mach-types.h> #include <mach/gpio.h> #include <mach/irqs.h> #include "board-mop500.h" /* + * LSM303DLH accelerometer + magnetometer & L3G4200D Gyroscope sensors + */ +static struct lsm303dlh_platform_data __initdata lsm303dlh_pdata_u8500 = { + .name_a = "lsm303dlh.0", + .name_m = "lsm303dlh.1", + .axis_map_x = 1, + .axis_map_y = 0, + .axis_map_z = 2, + .negative_x = 1, + .negative_y = 1, + .negative_z = 1, +}; + +static struct l3g4200d_gyr_platform_data __initdata l3g4200d_pdata_u8500 = { + .name_gyr = "l3g4200d", + .axis_map_x = 1, + .axis_map_y = 0, + .axis_map_z = 2, + .negative_x = 0, + .negative_y = 0, + .negative_z = 1, +}; +static struct i2c_board_info __initdata mop500_i2c2_devices_u8500[] = { + { + /* LSM303DLH Accelerometer */ + I2C_BOARD_INFO("lsm303dlh_a", 0x18), + .platform_data = &lsm303dlh_pdata_u8500, + }, + { + /* LSM303DLH Magnetometer */ + I2C_BOARD_INFO("lsm303dlh_m", 0x1E), + .platform_data = &lsm303dlh_pdata_u8500, + }, + { + /* L3G4200D Gyroscope */ + I2C_BOARD_INFO("l3g4200d", 0x68), + .platform_data = &l3g4200d_pdata_u8500, + }, +}; + +/* * Synaptics RMI4 touchscreen interface on the U8500 UIB */ @@ -107,4 +151,16 @@ void __init mop500_u8500uib_init(void) mop500_uib_i2c_add(0, mop500_i2c0_devices_u8500, ARRAY_SIZE(mop500_i2c0_devices_u8500)); + if (machine_is_hrefv60()) { + lsm303dlh_pdata_u8500.irq_a1 = HREFV60_ACCEL_INT1_GPIO; + lsm303dlh_pdata_u8500.irq_a2 = HREFV60_ACCEL_INT2_GPIO; + lsm303dlh_pdata_u8500.irq_m = HREFV60_MAGNET_DRDY_GPIO; + } else { + lsm303dlh_pdata_u8500.irq_a1 = GPIO_ACCEL_INT1; + lsm303dlh_pdata_u8500.irq_a2 = GPIO_ACCEL_INT2; + lsm303dlh_pdata_u8500.irq_m = GPIO_MAGNET_DRDY; + } + + mop500_uib_i2c_add(2, mop500_i2c2_devices_u8500, + ARRAY_SIZE(mop500_i2c2_devices_u8500)); } |