From 42bf2af50673e411848d8f8383b43f5c42cd56ab Mon Sep 17 00:00:00 2001 From: Praveen Bharathi Date: Mon, 7 Jun 2010 14:28:54 -0500 Subject: [PATCH] [ARM] tegra: stingray: Add akm8975 magnetometer data Signed-off-by: Praveen Bharathi Change-Id: If3fa5e2b624dd164252df8dd73c1063306637734 --- arch/arm/mach-tegra/board-stingray-sensors.c | 59 ++++++++++++++++++++ 1 file changed, 59 insertions(+) diff --git a/arch/arm/mach-tegra/board-stingray-sensors.c b/arch/arm/mach-tegra/board-stingray-sensors.c index 5a8770810b60..7681db795506 100755 --- a/arch/arm/mach-tegra/board-stingray-sensors.c +++ b/arch/arm/mach-tegra/board-stingray-sensors.c @@ -25,6 +25,7 @@ #include #include #include +#include #include #include @@ -37,6 +38,7 @@ #define MAX9635_IRQ_GPIO TEGRA_GPIO_PV1 #define BMP085_IRQ_GPIO TEGRA_GPIO_PW0 #define L3G4200D_IRQ_GPIO TEGRA_GPIO_PH2 +#define AKM8975_IRQ_GPIO TEGRA_GPIO_PQ2 static struct regulator *stingray_bmp085_regulator; static int stingray_bmp085_init(void) @@ -153,6 +155,7 @@ struct kxtf9_platform_data stingray_kxtf9_pdata = { .negate_y = 0, .negate_z = 1, + .data_odr_init = ODR12_5, .ctrl_reg1_init = RES_12BIT | KXTF9_G_2G | TPE | WUFE | TDTE, .int_ctrl_init = IEA | IEN, @@ -308,7 +311,62 @@ struct l3g4200d_platform_data stingray_gyro_pdata = { .power_off = stingray_l3g4200d_power_off, }; + +static struct regulator *stingray_akm8975_regulator; + +static int stingray_akm8975_init(void) +{ + /*struct regulator *reg;*/ + + tegra_gpio_enable(AKM8975_IRQ_GPIO); + gpio_request(AKM8975_IRQ_GPIO, "akm8975"); + gpio_direction_input(AKM8975_IRQ_GPIO); + +/*TO DO: add regulator calls later + reg = regulator_get(NULL, "vhvio"); + if (IS_ERR(reg)) + return PTR_ERR(reg); + stingray_akm8975_regulator = reg;*/ + stingray_akm8975_regulator = NULL; + + return 0; +} + +static void stingray_akm8975_exit(void) +{ + if (stingray_akm8975_regulator) + regulator_put(stingray_akm8975_regulator); + gpio_free(AKM8975_IRQ_GPIO); + return; +} + +static int stingray_akm8975_power_on(void) +{ + if (stingray_akm8975_regulator) + regulator_put(stingray_akm8975_regulator); + return 0; +} + +static int stingray_akm8975_power_off(void) +{ + if (stingray_akm8975_regulator) + regulator_put(stingray_akm8975_regulator); + return 0; +} + +struct akm8975_platform_data stingray_akm8975_pdata = { + .init = stingray_akm8975_init, + .exit = stingray_akm8975_exit, + .power_on = stingray_akm8975_power_on, + .power_off = stingray_akm8975_power_off, +}; + static struct i2c_board_info __initdata stingray_i2c_bus4_sensor_info[] = { + { + I2C_BOARD_INFO("akm8975", 0x0C), + .platform_data = &stingray_akm8975_pdata, + .irq = TEGRA_GPIO_TO_IRQ(AKM8975_IRQ_GPIO), + }, { I2C_BOARD_INFO("kxtf9", 0x0F), .platform_data = &stingray_kxtf9_pdata, @@ -342,6 +400,7 @@ int __init stingray_sensors_init(void) stingray_kxtf9_init(); stingray_max9635_init(); stingray_l3g4200d_init(); + stingray_akm8975_init(); i2c_register_board_info(3, stingray_i2c_bus4_sensor_info, ARRAY_SIZE(stingray_i2c_bus4_sensor_info)); -- 2.34.1