diff options
author | Bill Huang <bilhuang@nvidia.com> | 2011-12-15 02:53:20 -0800 |
---|---|---|
committer | Dan Willemsen <dwillemsen@nvidia.com> | 2012-03-23 21:01:33 -0700 |
commit | afca07a691db593768c11342ec58b97e02aa28b2 (patch) | |
tree | 38771ba49b3d6af754469786e6a8da085a595f33 /arch/arm/mach-tegra/board-harmony.c | |
parent | 088e74436206fd35bfc6cb2060b8c6675975e4c3 (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>
Rebase-Id: Rf4865d89bf0a2ee24fb598512dfa63ee8737a96d
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 d865ff8204dc..3691f1ad1a0a 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/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, @@ -329,6 +363,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, @@ -387,6 +422,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; |