diff options
author | Dima Zavin <dima@android.com> | 2011-06-08 22:50:23 -0700 |
---|---|---|
committer | Colin Cross <ccross@android.com> | 2011-06-14 11:49:21 -0700 |
commit | c7caea7cc86cd012341cabae458a83498d267bbb (patch) | |
tree | 2942020a53938630130a8baddafeb1eae687e173 /arch/arm/mach-omap2/board-tuna-input.c | |
parent | f8c40d73d2fb5e5784ad770d8ff81015a2838b59 (diff) | |
download | kernel_samsung_tuna-c7caea7cc86cd012341cabae458a83498d267bbb.zip kernel_samsung_tuna-c7caea7cc86cd012341cabae458a83498d267bbb.tar.gz kernel_samsung_tuna-c7caea7cc86cd012341cabae458a83498d267bbb.tar.bz2 |
ARM: omap4: tuna: update board support for touch fw reflash
Changed the way we dynamically mux the pins to make sure they
work after initialization is done (omap_mux_init_XXX get
discarded after init).
Change-Id: If810e3311a15d5a6a2caff59469b1f7c6cd092b4
Signed-off-by: Dima Zavin <dima@android.com>
Diffstat (limited to 'arch/arm/mach-omap2/board-tuna-input.c')
-rw-r--r-- | arch/arm/mach-omap2/board-tuna-input.c | 47 |
1 files changed, 34 insertions, 13 deletions
diff --git a/arch/arm/mach-omap2/board-tuna-input.c b/arch/arm/mach-omap2/board-tuna-input.c index 8787a23..9ee5834 100644 --- a/arch/arm/mach-omap2/board-tuna-input.c +++ b/arch/arm/mach-omap2/board-tuna-input.c @@ -29,6 +29,10 @@ #define GPIO_TOUCH_EN 19 #define GPIO_TOUCH_IRQ 46 +/* touch is on i2c3 */ +#define GPIO_TOUCH_SCL 130 +#define GPIO_TOUCH_SDA 131 + static const int tuna_keymap[] = { KEY(1, 1, KEY_VOLUMEDOWN), KEY(2, 1, KEY_VOLUMEUP), @@ -119,21 +123,34 @@ static struct i2c_board_info __initdata tuna_i2c3_boardinfo_pre_lunchbox[] = { static int melfas_mux_fw_flash(bool to_gpios) { + /* TOUCH_EN is always an output */ if (to_gpios) { - /* EN is always an output */ - gpio_direction_output(GPIO_TOUCH_EN, 0); gpio_direction_output(GPIO_TOUCH_IRQ, 0); - omap_mux_init_gpio(GPIO_TOUCH_IRQ, OMAP_PIN_INPUT); - gpio_direction_output(130, 0); - omap_mux_init_signal("i2c3_scl.gpio_130", OMAP_PIN_INPUT); - gpio_direction_output(131, 0); - omap_mux_init_signal("i2c3_sda.gpio_131", OMAP_PIN_INPUT); + omap_mux_set_gpio(OMAP_PIN_INPUT | OMAP_MUX_MODE3, + GPIO_TOUCH_IRQ); + + gpio_direction_output(GPIO_TOUCH_SCL, 0); + omap_mux_set_gpio(OMAP_PIN_INPUT | OMAP_MUX_MODE3, + GPIO_TOUCH_SCL); + + gpio_direction_output(GPIO_TOUCH_SDA, 0); + omap_mux_set_gpio(OMAP_PIN_INPUT | OMAP_MUX_MODE3, + GPIO_TOUCH_SDA); } else { + gpio_direction_output(GPIO_TOUCH_IRQ, 1); gpio_direction_input(GPIO_TOUCH_IRQ); - omap_mux_init_gpio(GPIO_TOUCH_IRQ, OMAP_PIN_INPUT_PULLUP); - omap_mux_init_signal("i2c3_scl.i2c3_scl", OMAP_PIN_INPUT); - omap_mux_init_signal("i2c3_sda.i2c3_sda", OMAP_PIN_INPUT); - gpio_direction_output(GPIO_TOUCH_EN, 1); + omap_mux_set_gpio(OMAP_PIN_INPUT_PULLUP | OMAP_MUX_MODE3, + GPIO_TOUCH_IRQ); + + gpio_direction_output(GPIO_TOUCH_SCL, 1); + gpio_direction_input(GPIO_TOUCH_SCL); + omap_mux_set_gpio(OMAP_PIN_INPUT | OMAP_MUX_MODE0, + GPIO_TOUCH_SCL); + + gpio_direction_output(GPIO_TOUCH_SDA, 1); + gpio_direction_input(GPIO_TOUCH_SDA); + omap_mux_set_gpio(OMAP_PIN_INPUT | OMAP_MUX_MODE0, + GPIO_TOUCH_SDA); } return 0; @@ -143,6 +160,10 @@ static struct mms_ts_platform_data mms_ts_pdata = { .max_x = 720, .max_y = 1280, .mux_fw_flash = melfas_mux_fw_flash, + .gpio_resetb = GPIO_TOUCH_IRQ, + .gpio_vdd_en = GPIO_TOUCH_EN, + .gpio_scl = GPIO_TOUCH_SCL, + .gpio_sda = GPIO_TOUCH_SDA, }; static struct i2c_board_info __initdata tuna_i2c3_boardinfo_final[] = { @@ -164,8 +185,8 @@ void __init omap4_tuna_input_init(void) gpio_request(GPIO_TOUCH_EN, "tsp_en"); gpio_direction_output(GPIO_TOUCH_EN, 1); omap_mux_init_gpio(GPIO_TOUCH_EN, OMAP_PIN_OUTPUT); - gpio_request(130, "ap_i2c3_scl"); - gpio_request(131, "ap_i2c3_sda"); + gpio_request(GPIO_TOUCH_SCL, "ap_i2c3_scl"); + gpio_request(GPIO_TOUCH_SDA, "ap_i2c3_sda"); i2c_register_board_info(3, tuna_i2c3_boardinfo_final, ARRAY_SIZE(tuna_i2c3_boardinfo_final)); |