diff options
Diffstat (limited to 'arch/arm/mach-tegra/board-colibri_t20.c')
-rw-r--r-- | arch/arm/mach-tegra/board-colibri_t20.c | 41 |
1 files changed, 15 insertions, 26 deletions
diff --git a/arch/arm/mach-tegra/board-colibri_t20.c b/arch/arm/mach-tegra/board-colibri_t20.c index f7153ab6a50b..470cc004165a 100644 --- a/arch/arm/mach-tegra/board-colibri_t20.c +++ b/arch/arm/mach-tegra/board-colibri_t20.c @@ -43,6 +43,7 @@ #include <media/soc_camera.h> #include <media/tegra_v4l2_camera.h> +#include <linux/input/fusion_F0710A.h> #include "board-colibri_t20.h" #include "board.h" @@ -351,10 +352,8 @@ static struct gpio colibri_t20_gpios[] = { {TEGRA_GPIO_PK6, GPIOF_IN, "SODIMM pin 135"}, #endif #ifndef COLIBRI_T20_VI -#ifndef CONFIG_TOUCHSCREEN_FUSION_F0710A {TEGRA_GPIO_PL0, GPIOF_IN, "SOD-101, Iris X16-16"}, {TEGRA_GPIO_PL1, GPIOF_IN, "SOD-103, Iris X16-15"}, -#endif /* !CONFIG_TOUCHSCREEN_FUSION_F0710A */ //conflicts with Ethernet interrupt on Protea {TEGRA_GPIO_PL2, GPIOF_IN, "SODI-79, Iris X16-19"}, {TEGRA_GPIO_PL3, GPIOF_IN, "SODI-97, Iris X16-17"}, @@ -445,6 +444,19 @@ static void colibri_t20_gpio_init(void) } } +/* + * Fusion touch screen GPIOs (using Toradex display/touch adapater) + * Iris X16-38, SODIMM pin 28 (PWM B), pen down interrupt + * Iris X16-39, SODIMM pin 30 (PWM C), reset + * gpio_request muxes the GPIO function automatically, we only have to make + * sure input/output muxing is done here... + */ +static struct fusion_f0710a_init_data colibri_fusion_pdata = { + .pinmux_fusion_pins = NULL, + .gpio_int = TEGRA_GPIO_PB5, /* SO-DIMM 28: Pen down interrupt */ + .gpio_reset = TEGRA_GPIO_PA6, /* SO-DIMM 30: Reset interrupt */ +}; + /* I2C */ /* GEN1_I2C: I2C_SDA/SCL on SODIMM pin 194/196 (e.g. RTC on carrier board) */ @@ -454,12 +466,11 @@ static struct i2c_board_info colibri_t20_i2c_bus1_board_info[] __initdata = { I2C_BOARD_INFO("rtc-ds1307", 0x68), .type = "m41t00", }, -#ifdef CONFIG_TOUCHSCREEN_FUSION_F0710A { /* TouchRevolution Fusion 7 and 10 multi-touch controller */ I2C_BOARD_INFO("fusion_F0710A", 0x10), + .platform_data = &colibri_fusion_pdata, }, -#endif /* CONFIG_TOUCHSCREEN_FUSION_F0710A */ }; static struct tegra_i2c_platform_data colibri_t20_i2c1_platform_data = { @@ -525,28 +536,6 @@ static void colibri_t20_i2c_init(void) platform_device_register(&tegra_i2c_device2); platform_device_register(&tegra_i2c_device4); -#ifdef CONFIG_TOUCHSCREEN_FUSION_F0710A - if ((gpio_request(FUSION_PEN_DOWN, "103, Iris X16-15 Pen") == 0) && - (gpio_direction_input(FUSION_PEN_DOWN) == 0)) { - gpio_export(FUSION_PEN_DOWN, 0); - } else { - printk(KERN_ERR "Could not obtain GPIO for Fusion pen down\n"); - return; - } - - if ((gpio_request(FUSION_RESET, "101, Iris X16-16 RST") == 0) && - (gpio_direction_output(FUSION_RESET, 1) == 0)) { - gpio_direction_output(FUSION_RESET, 0); - mdelay(10); - gpio_direction_output(FUSION_RESET, 1); - } else { - printk(KERN_ERR "Could not obtain GPIO for Fusion reset\n"); - return; - } - - colibri_t20_i2c_bus1_board_info[1].irq = gpio_to_irq(FUSION_PEN_DOWN); -#endif /* CONFIG_TOUCHSCREEN_FUSION_F0710A */ - i2c_register_board_info(0, colibri_t20_i2c_bus1_board_info, ARRAY_SIZE(colibri_t20_i2c_bus1_board_info)); i2c_register_board_info(4, colibri_t20_i2c_bus4_board_info, |