Index: linux-2.6.21/arch/arm/mach-pxa/ezx-e680.c =================================================================== --- linux-2.6.21.orig/arch/arm/mach-pxa/ezx-e680.c 2007-09-06 00:48:32.000000000 -0300 +++ linux-2.6.21/arch/arm/mach-pxa/ezx-e680.c 2007-09-06 00:49:23.000000000 -0300 @@ -16,6 +16,7 @@ #include #include #include +#include #include #include @@ -317,10 +318,32 @@ .resource = pcap_ts_resources, }; +static struct gpio_keys_button e680locksw_buttons[] = { + [0] = { + .keycode = KEY_SLEEP, + .gpio = GPIO_LOCK_SCREEN_PIN, + .desc = "E680 lockscreen sw", + }, +}; + +static struct gpio_keys_platform_data e680locksw_platform_data = { + .buttons = e680locksw_buttons, + .nbuttons = 1, +}; + +static struct platform_device e680locksw_device = { + .name = "gpio-keys", + .id = -1, + .dev = { + .platform_data = &e680locksw_platform_data, + }, +}; + static struct platform_device *devices[] __initdata = { &e680_pcap_device, &e680_emu_device, &pcap_ts_device, + &e680locksw_device, }; static void __init e680_init(void)