From: Dan Murphy Date: Tue, 25 May 2010 14:12:55 +0000 (-0500) Subject: [ARM] tegra: stingray: Add KXTF9 data to sensor board file X-Git-Tag: firefly_0821_release~9834^2~891 X-Git-Url: http://demsky.eecs.uci.edu/git/?a=commitdiff_plain;h=4d6006bb58a1b8ff1e2da4fb3478abf47f59dc0e;p=firefly-linux-kernel-4.4.55.git [ARM] tegra: stingray: Add KXTF9 data to sensor board file Change-Id: I583d1fb2ae20262c3ee9f0d6d9adb36d9f99bc70 Signed-off-by: Dan Murphy --- diff --git a/arch/arm/mach-tegra/board-stingray-sensors.c b/arch/arm/mach-tegra/board-stingray-sensors.c index 758561795b28..9458d9e3b26f 100755 --- a/arch/arm/mach-tegra/board-stingray-sensors.c +++ b/arch/arm/mach-tegra/board-stingray-sensors.c @@ -22,6 +22,7 @@ #include #include #include +#include #include #include @@ -32,6 +33,8 @@ static struct regulator *stingray_bmp085_regulator; +#define KXTF9_IRQ_GPIO TEGRA_GPIO_PV3 + static int stingray_bmp085_init(void) { /*struct regulator *reg;*/ @@ -76,6 +79,105 @@ struct bmp085_platform_data stingray_barom_pdata = { .power_off = stingray_bmp085_power_off, }; +static struct regulator *stingray_kxtf9_regulator; +static int stingray_kxtf9_regulator_init(void) +{ +/* TO DO: Update regulator functions + struct regulator *reg; + reg = regulator_get(NULL, "vhvio"); + if (IS_ERR(reg)) + return PTR_ERR(reg); + stingray_kxtf9_regulator = reg; +*/ + return 0; +} + +static void stingray_kxtf9_regulator_exit(void) +{ + /*regulator_put(stingray_kxtf9_regulator);*/ +} + +static int stingray_kxtf9_power_on(void) +{ + /*return regulator_enable(stingray_kxtf9_regulator);*/ + return 0; +} + +static int stingray_kxtf9_power_off(void) +{ +/* + if (stingray_kxtf9_regulator) + return regulator_disable(stingray_kxtf9_regulator); +*/ + return 0; +} + +static int stingray_kxtf9_gpio_level(void) +{ + /* TO DO: Fill in with GPIO level check functions */ + return 0; +} + + +struct kxtf9_platform_data stingray_kxtf9_pdata = { + .init = stingray_kxtf9_regulator_init, + .exit = stingray_kxtf9_regulator_exit, + .power_on = stingray_kxtf9_power_on, + .power_off = stingray_kxtf9_power_off, + + .min_interval = 2, + .poll_interval = 200, + + .g_range = KXTF9_G_8G, + + .axis_map_x = 1, + .axis_map_y = 0, + .axis_map_z = 2, + + .negate_x = 0, + .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, + .tilt_timer_init = 0x03, + .engine_odr_init = OTP12_5 | OWUF50 | OTDT400, + .wuf_timer_init = 0x0A, + .wuf_thresh_init = 0x20, + .tdt_timer_init = 0x78, + .tdt_h_thresh_init = 0xB6, + .tdt_l_thresh_init = 0x1A, + .tdt_tap_timer_init = 0xA2, + .tdt_total_timer_init = 0x24, + .tdt_latency_timer_init = 0x28, + .tdt_window_timer_init = 0xA0, + + .gpio = stingray_kxtf9_gpio_level, + .gesture = 0, + .sensitivity_low = { + 0x50, 0xFF, 0xB8, 0x32, 0x09, 0x0A, 0xA0, + }, + .sensitivity_medium = { + 0x50, 0xFF, 0x68, 0x32, 0x09, 0x0A, 0xA0, + }, + .sensitivity_high = { + 0x78, 0xB6, 0x1A, 0xA2, 0x24, 0x28, 0xA0, + }, +}; +static void stingray_kxtf9_init(void) +{ + tegra_gpio_enable(KXTF9_IRQ_GPIO); + gpio_request(KXTF9_IRQ_GPIO, "kxtf9_irq"); + gpio_direction_input(KXTF9_IRQ_GPIO); +} +static struct i2c_board_info __initdata stingray_i2c_bus4_sensor_info[] = { + { + I2C_BOARD_INFO("kxtf9", 0x0F), + .platform_data = &stingray_kxtf9_pdata, + .irq = TEGRA_GPIO_TO_IRQ(KXTF9_IRQ_GPIO), + }, +}; static struct i2c_board_info __initdata stingray_i2c_bus1_sensor_info[] = { { @@ -88,6 +190,9 @@ static struct i2c_board_info __initdata stingray_i2c_bus1_sensor_info[] = { int __init stingray_sensors_init(void) { stingray_bmp085_init(); + stingray_kxtf9_init(); + i2c_register_board_info(3, stingray_i2c_bus4_sensor_info, + ARRAY_SIZE(stingray_i2c_bus4_sensor_info)); return i2c_register_board_info(0, stingray_i2c_bus1_sensor_info, ARRAY_SIZE(stingray_i2c_bus1_sensor_info)); }