This patch adds support for power key button of the efika mx. It's connected on GPIO 3 31. Signed-off-by: Arnaud Patard Index: linux-2.6/arch/arm/mach-mx5/board-mx51_efikamx.c =================================================================== --- linux-2.6.orig/arch/arm/mach-mx5/board-mx51_efikamx.c 2010-10-15 23:11:51.000000000 +0200 +++ linux-2.6/arch/arm/mach-mx5/board-mx51_efikamx.c 2010-10-15 23:12:01.000000000 +0200 @@ -19,6 +19,8 @@ #include #include #include +#include +#include #include #include #include @@ -48,10 +50,13 @@ #define EFIKAMX_GREEN_LED (2*32+14) #define EFIKAMX_RED_LED (2*32+15) +#define EFIKAMX_POWER_KEY (1*32+31) + /* the pci ids pin have pull up. they're driven low according to board id */ #define MX51_PAD_PCBID0 IOMUX_PAD(0x518, 0x130, 3, 0x0, 0, PAD_CTL_PUS_100K_UP) #define MX51_PAD_PCBID1 IOMUX_PAD(0x51C, 0x134, 3, 0x0, 0, PAD_CTL_PUS_100K_UP) #define MX51_PAD_PCBID2 IOMUX_PAD(0x504, 0x128, 3, 0x0, 0, PAD_CTL_PUS_100K_UP) +#define MX51_PAD_PWRKEY IOMUX_PAD(0x48c, 0x0f8, 1, 0x0, 0, PAD_CTL_PUS_100K_UP | PAD_CTL_PKE) static struct pad_desc mx51efikamx_pads[] = { /* UART1 */ @@ -91,6 +96,9 @@ MX51_PAD_CSI1_D9__GPIO_3_13, MX51_PAD_CSI1_VSYNC__GPIO_3_14, MX51_PAD_CSI1_HSYNC__GPIO_3_15, + + /* power key */ + MX51_PAD_PWRKEY, }; /* Serial ports */ @@ -220,6 +228,30 @@ }, }; +static struct gpio_keys_button mx51_efikamx_powerkey[] = { + { + .code = KEY_POWER, + .gpio = EFIKAMX_POWER_KEY, + .type = EV_PWR, + .desc = "Power Button (CM)", + .wakeup = 1, + .debounce_interval = 10, /* ms */ + }, +}; + +static struct gpio_keys_platform_data mx51_efikamx_powerkey_data = { + .buttons = mx51_efikamx_powerkey, + .nbuttons = ARRAY_SIZE(mx51_efikamx_powerkey), +}; + +static struct platform_device mx51_efikamx_powerkey_device = { + .name = "gpio-keys", + .id = -1, + .dev = { + .platform_data = &mx51_efikamx_powerkey_data, + }, +}; + static void __init mxc_board_init(void) { mxc_iomux_v3_setup_multiple_pads(mx51efikamx_pads, @@ -236,6 +268,7 @@ mx51_efikamx_leds[2].default_trigger = "mmc0"; platform_device_register(&mx51_efikamx_leds_device); + platform_device_register(&mx51_efikamx_powerkey_device); } static void __init mx51_efikamx_timer_init(void)