summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorvikasr <vikasr@nvidia.com>2011-05-27 13:57:27 -0700
committerNiket Sirsi <nsirsi@nvidia.com>2011-06-13 20:11:53 -0700
commitdd099b1c66b041ebad00971074b10836def684d6 (patch)
tree962bf31fb9f6ff583ba6a77f34260f93a50b60ef
parentf0e3a012a36fc7a05e1d46605cb15a052f314048 (diff)
ARM: tegra: cardhu: Keypad Support
Made changes in the code to include PM269's Keypad Functionality Bug 833265 Change-Id: Iec996d9c0f8fe03a8f28278b0dfc80c699d14d26 Reviewed-on: http://git-master/r/34364 Reviewed-by: Niket Sirsi <nsirsi@nvidia.com> Tested-by: Niket Sirsi <nsirsi@nvidia.com>
-rw-r--r--arch/arm/mach-tegra/board-cardhu-kbc.c30
1 files changed, 24 insertions, 6 deletions
diff --git a/arch/arm/mach-tegra/board-cardhu-kbc.c b/arch/arm/mach-tegra/board-cardhu-kbc.c
index d5b5fbb2114b..52fe71e886f2 100644
--- a/arch/arm/mach-tegra/board-cardhu-kbc.c
+++ b/arch/arm/mach-tegra/board-cardhu-kbc.c
@@ -40,6 +40,9 @@
#define CARDHU_ROW_COUNT 4
#define CARDHU_COL_COUNT 2
+#define CARDHU_PM269_ROW_COUNT 2
+#define CARDHU_PM269_COL_COUNT 4
+
static int plain_kbd_keycode[] = {
KEY_POWER, KEY_RESERVED,
KEY_HOME, KEY_BACK,
@@ -47,6 +50,13 @@ static int plain_kbd_keycode[] = {
KEY_VOLUMEDOWN, KEY_VOLUMEUP
};
+static int plain_kbd_keycode_pm269[] = {
+ KEY_POWER, KEY_RESERVED,
+ KEY_VOLUMEUP, KEY_VOLUMEDOWN,
+ KEY_HOME, KEY_MENU,
+ KEY_BACK, KEY_SEARCH
+};
+
static struct tegra_kbc_wake_key cardhu_wake_cfg[] = {
[0] = {
.row = 0,
@@ -79,7 +89,6 @@ static struct resource cardhu_kbc_resources[] = {
},
};
-
struct platform_device cardhu_kbc_device = {
.name = "tegra-kbc",
.id = -1,
@@ -95,28 +104,37 @@ int __init cardhu_kbc_init(void)
struct tegra_kbc_platform_data *data = &cardhu_kbc_platform_data;
int i;
struct board_info board_info;
+ int row_count = CARDHU_ROW_COUNT, col_count = CARDHU_COL_COUNT;
tegra_get_board_info(&board_info);
+
if ((board_info.board_id == BOARD_E1198) ||
(board_info.board_id == BOARD_E1291))
return 0;
+ if (board_info.board_id == BOARD_PM269) {
+ cardhu_kbc_platform_data.plain_keycode = plain_kbd_keycode_pm269;
+ row_count = CARDHU_PM269_ROW_COUNT;
+ col_count = CARDHU_PM269_COL_COUNT;
+ }
+
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;
data->pin_cfg[i].pin_type = kbc_pin_unused;
}
- for (i = 0; i < CARDHU_ROW_COUNT; i++) {
+ for (i = 0; i < row_count; i++) {
data->pin_cfg[i].num = i;
data->pin_cfg[i].pin_type = kbc_pin_row;
}
-
- for (i = 0; i < CARDHU_COL_COUNT; i++) {
- data->pin_cfg[i + CARDHU_ROW_COUNT].num = i;
- data->pin_cfg[i + CARDHU_ROW_COUNT].pin_type = kbc_pin_col;
+ for (i = 0; i < col_count; i++) {
+ data->pin_cfg[i + row_count].num = i;
+ data->pin_cfg[i + row_count].pin_type = kbc_pin_col;
}
+
platform_device_register(&cardhu_kbc_device);
+
return 0;
}