diff options
author | Bill Huang <bilhuang@nvidia.com> | 2011-12-15 02:53:20 -0800 |
---|---|---|
committer | Varun Wadekar <vwadekar@nvidia.com> | 2011-12-21 12:06:28 +0530 |
commit | 99ab157903a3eaa10cbb368b50eac55193d6285e (patch) | |
tree | 736dca1b38841de4c64f742cfd5bc14182c4e2b6 /arch/arm/mach-tegra/board-harmony.c | |
parent | 98eea29d638070c6ff1ee276096836b1155be766 (diff) |
arm: tegra: harmony: enable power key to wake up the system
enable power button for waking up harmony
bug 911107
Change-Id: Id69204a904cafa4186cbac201830ac6d1e5a81b1
Signed-off-by: Bill Huang <bilhuang@nvidia.com>
Reviewed-on: http://git-master/r/70274
Reviewed-by: Simone Willett <swillett@nvidia.com>
Tested-by: Simone Willett <swillett@nvidia.com>
Diffstat (limited to 'arch/arm/mach-tegra/board-harmony.c')
-rw-r--r-- | arch/arm/mach-tegra/board-harmony.c | 37 |
1 files changed, 37 insertions, 0 deletions
diff --git a/arch/arm/mach-tegra/board-harmony.c b/arch/arm/mach-tegra/board-harmony.c index 217728d0ccb5..5ad6097cc2dd 100644 --- a/arch/arm/mach-tegra/board-harmony.c +++ b/arch/arm/mach-tegra/board-harmony.c @@ -24,8 +24,10 @@ #include <linux/mtd/partitions.h> #include <linux/dma-mapping.h> #include <linux/pda_power.h> +#include <linux/input.h> #include <linux/io.h> #include <linux/gpio.h> +#include <linux/gpio_keys.h> #include <linux/i2c.h> #include <linux/i2c-tegra.h> #include <linux/memblock.h> @@ -174,6 +176,30 @@ static struct plat_serial8250_port debug_uart_platform_data[] = { } }; +static struct gpio_keys_button harmony_gpio_keys_buttons[] = { + { + .code = KEY_POWER, + .gpio = TEGRA_GPIO_POWERKEY, + .active_low = 1, + .desc = "Power", + .type = EV_KEY, + .wakeup = 1, + }, +}; + +static struct gpio_keys_platform_data harmony_gpio_keys = { + .buttons = harmony_gpio_keys_buttons, + .nbuttons = ARRAY_SIZE(harmony_gpio_keys_buttons), +}; + +static struct platform_device harmony_gpio_keys_device = { + .name = "gpio-keys", + .id = -1, + .dev = { + .platform_data = &harmony_gpio_keys, + } +}; + static struct platform_device debug_uart = { .name = "serial8250", .id = PLAT8250_DEV_PLATFORM, @@ -182,6 +208,14 @@ static struct platform_device debug_uart = { }, }; +static void harmony_keys_init(void) +{ + int i; + + for (i = 0; i < ARRAY_SIZE(harmony_gpio_keys_buttons); i++) + tegra_gpio_enable(harmony_gpio_keys_buttons[i].gpio); +} + static struct tegra_wm8903_platform_data harmony_audio_pdata = { .gpio_spkr_en = TEGRA_GPIO_SPKR_EN, .gpio_hp_det = TEGRA_GPIO_HP_DET, @@ -328,6 +362,7 @@ static struct platform_device *harmony_devices[] __initdata = { &tegra_pmu_device, &tegra_nand_device, &tegra_udc_device, + &harmony_gpio_keys_device, &pda_power_device, &tegra_ehci3_device, &tegra_spi_device1, @@ -420,6 +455,8 @@ static void __init tegra_harmony_init(void) harmony_pinmux_init(); + harmony_keys_init(); + tegra_sdhci_device1.dev.platform_data = &sdhci_pdata1; tegra_sdhci_device2.dev.platform_data = &sdhci_pdata2; tegra_sdhci_device4.dev.platform_data = &sdhci_pdata4; |