summaryrefslogtreecommitdiff
path: root/arch/arm/mach-tegra/board-cardhu-kbc.c
diff options
context:
space:
mode:
authorLaxman Dewangan <ldewangan@nvidia.com>2011-02-04 14:31:12 +0530
committerDan Willemsen <dwillemsen@nvidia.com>2011-11-30 21:45:34 -0800
commit2b47f9cb12b723bf32d67d01faafbdc8632679cc (patch)
tree3c0e8d4d81dd1914d245f81e34e3af83eb7ddd3c /arch/arm/mach-tegra/board-cardhu-kbc.c
parent3d6cb169b3e0520655de3906174b6217b2ccfa4d (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.c63
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++)