Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/linville/wirel...
[pandora-kernel.git] / arch / arm / mach-davinci / board-tnetv107x-evm.c
index b4de35b..a6db854 100644 (file)
@@ -23,6 +23,9 @@
 #include <linux/ratelimit.h>
 #include <linux/mtd/mtd.h>
 #include <linux/mtd/partitions.h>
+#include <linux/input.h>
+#include <linux/input/matrix_keypad.h>
+
 #include <asm/mach/arch.h>
 #include <asm/mach-types.h>
 
@@ -141,10 +144,63 @@ static struct davinci_uart_config serial_config __initconst = {
        .enabled_uarts  = BIT(1),
 };
 
+static const uint32_t keymap[] = {
+       KEY(0, 0, KEY_NUMERIC_1),
+       KEY(0, 1, KEY_NUMERIC_2),
+       KEY(0, 2, KEY_NUMERIC_3),
+       KEY(0, 3, KEY_FN_F1),
+       KEY(0, 4, KEY_MENU),
+
+       KEY(1, 0, KEY_NUMERIC_4),
+       KEY(1, 1, KEY_NUMERIC_5),
+       KEY(1, 2, KEY_NUMERIC_6),
+       KEY(1, 3, KEY_UP),
+       KEY(1, 4, KEY_FN_F2),
+
+       KEY(2, 0, KEY_NUMERIC_7),
+       KEY(2, 1, KEY_NUMERIC_8),
+       KEY(2, 2, KEY_NUMERIC_9),
+       KEY(2, 3, KEY_LEFT),
+       KEY(2, 4, KEY_ENTER),
+
+       KEY(3, 0, KEY_NUMERIC_STAR),
+       KEY(3, 1, KEY_NUMERIC_0),
+       KEY(3, 2, KEY_NUMERIC_POUND),
+       KEY(3, 3, KEY_DOWN),
+       KEY(3, 4, KEY_RIGHT),
+
+       KEY(4, 0, KEY_FN_F3),
+       KEY(4, 1, KEY_FN_F4),
+       KEY(4, 2, KEY_MUTE),
+       KEY(4, 3, KEY_HOME),
+       KEY(4, 4, KEY_BACK),
+
+       KEY(5, 0, KEY_VOLUMEDOWN),
+       KEY(5, 1, KEY_VOLUMEUP),
+       KEY(5, 2, KEY_F1),
+       KEY(5, 3, KEY_F2),
+       KEY(5, 4, KEY_F3),
+};
+
+static const struct matrix_keymap_data keymap_data = {
+       .keymap         = keymap,
+       .keymap_size    = ARRAY_SIZE(keymap),
+};
+
+static struct matrix_keypad_platform_data keypad_config = {
+       .keymap_data    = &keymap_data,
+       .num_row_gpios  = 6,
+       .num_col_gpios  = 5,
+       .debounce_ms    = 0, /* minimum */
+       .active_low     = 0, /* pull up realization */
+       .no_autorepeat  = 0,
+};
+
 static struct tnetv107x_device_info evm_device_info __initconst = {
        .serial_config          = &serial_config,
        .mmc_config[1]          = &mmc_config,  /* controller 1 */
        .nand_config[0]         = &nand_config, /* chip select 0 */
+       .keypad_config          = &keypad_config,
 };
 
 static __init void tnetv107x_evm_board_init(void)