diff options
author | Laxman Dewangan <ldewangan@nvidia.com> | 2011-02-04 14:31:12 +0530 |
---|---|---|
committer | Dan Willemsen <dwillemsen@nvidia.com> | 2011-11-30 21:45:34 -0800 |
commit | 2b47f9cb12b723bf32d67d01faafbdc8632679cc (patch) | |
tree | 3c0e8d4d81dd1914d245f81e34e3af83eb7ddd3c /arch/arm/mach-tegra/board-cardhu-kbc.c | |
parent | 3d6cb169b3e0520655de3906174b6217b2ccfa4d (diff) |
arm: tegra: cadhu: Enabling all possible keys
Enabling gpio based and tegra kbc based keyboard and registering the
corresponding driver based on board Id.
Original-Change-Id: Ibe36c04f9b5212963fe1dad1c5113c65aead48b7
Reviewed-on: http://git-master/r/18334
Reviewed-by: Laxman Dewangan <ldewangan@nvidia.com>
Tested-by: Laxman Dewangan <ldewangan@nvidia.com>
Reviewed-by: Suresh Mangipudi <smangipudi@nvidia.com>
Reviewed-by: Ramachandrudu Kandhala <rkandhala@nvidia.com>
Original-Change-Id: Ie682401ba3c938d30f065e2cf4e1f86f71160dae
Rebase-Id: R4f71995e3a06e5c23655939129ab7e6f87aba1ae
Diffstat (limited to 'arch/arm/mach-tegra/board-cardhu-kbc.c')
-rw-r--r-- | arch/arm/mach-tegra/board-cardhu-kbc.c | 63 |
1 files changed, 47 insertions, 16 deletions
diff --git a/arch/arm/mach-tegra/board-cardhu-kbc.c b/arch/arm/mach-tegra/board-cardhu-kbc.c index 2671e6cc586b..85db24080726 100644 --- a/arch/arm/mach-tegra/board-cardhu-kbc.c +++ b/arch/arm/mach-tegra/board-cardhu-kbc.c @@ -31,9 +31,16 @@ #include <mach/io.h> #include <mach/iomap.h> #include <mach/kbc.h> +#include "board.h" #include "gpio-names.h" +#define BOARD_E1187 0x0B57 +#define BOARD_E1186 0x0B56 +#define BOARD_E1198 0x0B62 +#define BOARD_E1291 0x0C5B + + #ifdef CONFIG_KEYBOARD_TEGRA #ifdef CONFIG_INPUT_ALPS_GPIO_SCROLLWHEEL #define CARDHU_ROW_COUNT 3 @@ -110,9 +117,14 @@ int __init cardhu_kbc_init(void) { struct tegra_kbc_platform_data *data = &cardhu_kbc_platform_data; int i; + struct board_info board_info; - pr_info("KBC: cardhu_kbc_init\n"); + tegra_get_board_info(&board_info); + if ((board_info.board_id == BOARD_E1198) || + (board_info.board_id == BOARD_E1291)) + return 0; + pr_info("Registering tegra-kbc\n"); /* Setup the pin configuration information. */ for (i = 0; i < KBC_MAX_GPIO; i++) { data->pin_cfg[i].num = 0; @@ -169,6 +181,15 @@ static struct platform_device cardhu_scroll_device = { int __init cardhu_scroll_init(void) { int i; + struct board_info board_info; + + tegra_get_board_info(&board_info); + if ((board_info.board_id == BOARD_E1198) || + (board_info.board_id == BOARD_E1291)) + return 0; + + pr_info("Registering alps scroll wheel\n"); + /* Setting pins to gpio mode */ for (i = 0; i < ARRAY_SIZE(scroll_keys); i++) tegra_gpio_enable(scroll_keys[i].gpio); @@ -197,9 +218,9 @@ int __init cardhu_scroll_init(void) static struct gpio_keys_button cardhu_keys[] = { [0] = GPIO_KEY(KEY_HOME, PQ0, 0), - [1] = GPIO_KEY(KEY_MENU, PQ1, 0), - [2] = GPIO_KEY(KEY_SEARCH, PQ2, 0), - [3] = GPIO_KEY(KEY_BACK, PQ3, 0), + [1] = GPIO_KEY(KEY_BACK, PQ1, 0), + [2] = GPIO_KEY(KEY_MENU, PQ2, 0), + [3] = GPIO_KEY(KEY_SEARCH, PQ3, 0), [4] = GPIO_KEY(KEY_VOLUMEUP, PR0, 0), [5] = GPIO_KEY(KEY_VOLUMEDOWN, PR1, 0), [6] = GPIO_KEY(KEY_POWER, PV0, 1), @@ -222,23 +243,33 @@ int __init cardhu_keys_init(void) { int i; int ret; + struct board_info board_info; + + tegra_get_board_info(&board_info); + if (!((board_info.board_id == BOARD_E1198) || + (board_info.board_id == BOARD_E1291))) + return 0; + + pr_info("Registering gpio keys\n"); /* Set KB_ROW2 to 0 for capcitive switch to be in scan mode */ - ret = gpio_request(TEGRA_GPIO_PR2, "cap_sw_sl_scan"); - if (ret < 0) { - pr_err("%s: gpio_request failed #%d\n", + if (board_info.board_id == BOARD_E1291) { + ret = gpio_request(TEGRA_GPIO_PR2, "cap_sw_sl_scan"); + if (ret < 0) { + pr_err("%s: gpio_request failed #%d\n", __func__, TEGRA_GPIO_PR2); - return ret; - } - ret = gpio_direction_output(TEGRA_GPIO_PR2, 0); - if (ret < 0) { - pr_err("%s: gpio_direction_output failed #%d\n", + return ret; + } + ret = gpio_direction_output(TEGRA_GPIO_PR2, 0); + if (ret < 0) { + pr_err("%s: gpio_direction_output failed #%d\n", __func__, TEGRA_GPIO_PR2); - gpio_free(TEGRA_GPIO_PR2); - return ret; - } + gpio_free(TEGRA_GPIO_PR2); + return ret; + } - tegra_gpio_enable(TEGRA_GPIO_PR2); + tegra_gpio_enable(TEGRA_GPIO_PR2); + } /* Enable gpio mode for other pins */ for (i = 0; i < ARRAY_SIZE(cardhu_keys); i++) |