diff options
author | vikasr <vikasr@nvidia.com> | 2011-05-27 13:57:27 -0700 |
---|---|---|
committer | Niket Sirsi <nsirsi@nvidia.com> | 2011-06-13 20:11:53 -0700 |
commit | dd099b1c66b041ebad00971074b10836def684d6 (patch) | |
tree | 962bf31fb9f6ff583ba6a77f34260f93a50b60ef | |
parent | f0e3a012a36fc7a05e1d46605cb15a052f314048 (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.c | 30 |
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; } |