diff -pNaur -X b/Documentation/dontdiff a/arch/arm/mach-omap1/board-palmte.c b/arch/arm/mach-omap1/board-palmte.c --- a/arch/arm/mach-omap1/board-palmte.c 2006-07-16 04:32:04.000000000 +0200 +++ b/arch/arm/mach-omap1/board-palmte.c 2006-07-16 04:39:27.000000000 +0200 @@ -20,6 +20,7 @@ #include #include #include +#include #include #include @@ -31,6 +32,7 @@ #include #include #include +#include static void __init omap_palmte_init_irq(void) { @@ -39,12 +41,52 @@ static void __init omap_palmte_init_irq( omap_gpio_init(); } +static int palmte_keymap[] = { + KEY(0, 0, KEY_F1), + KEY(0, 1, KEY_F2), + KEY(0, 2, KEY_F3), + KEY(0, 3, KEY_F4), + KEY(0, 4, KEY_POWER), + KEY(1, 0, KEY_LEFT), + KEY(1, 1, KEY_DOWN), + KEY(1, 2, KEY_UP), + KEY(1, 3, KEY_RIGHT), + KEY(1, 4, KEY_CENTER), + 0, +}; + +static struct omap_kp_platform_data palmte_kp_data = { + .rows = 8, + .cols = 8, + .keymap = palmte_keymap, + .rep = 1, +}; + +static struct resource palmte_kp_resources[] = { + [0] = { + .start = INT_KEYBOARD, + .end = INT_KEYBOARD, + .flags = IORESOURCE_IRQ, + }, +}; + +static struct platform_device palmte_kp_device = { + .name = "omap-keypad", + .id = -1, + .dev = { + .platform_data = &palmte_kp_data, + }, + .num_resources = ARRAY_SIZE(palmte_kp_resources), + .resource = palmte_kp_resources, +}; + static struct platform_device palmte_lcd_device = { .name = "lcd_palmte", .id = -1, }; static struct platform_device *devices[] __initdata = { + &palmte_kp_device, &palmte_lcd_device, }; diff -pNaur -X b/Documentation/dontdiff a/drivers/input/keyboard/omap-keypad.c b/drivers/input/keyboard/omap-keypad.c --- a/drivers/input/keyboard/omap-keypad.c 2006-07-16 02:32:15.000000000 +0200 +++ b/drivers/input/keyboard/omap-keypad.c 2006-07-16 04:41:18.000000000 +0200 @@ -140,6 +140,8 @@ static void omap_kp_scan_keypad(struct o if (machine_is_omap_osk() || machine_is_omap_h2() || machine_is_omap_h3()) { udelay(9); + } else if (machine_is_omap_palmte()) { + udelay(20); } else { udelay(4); }