diff options
author | Jin Park <jinyoungp@nvidia.com> | 2011-10-27 17:59:26 +0900 |
---|---|---|
committer | Lokesh Pathak <lpathak@nvidia.com> | 2011-10-27 23:48:42 -0700 |
commit | 733e3c5dd9b8748c2431eb28accb9b3638919c48 (patch) | |
tree | 60ee8b8f8aea6634ec20fd5f9088943f509cae6f | |
parent | 3c095de4dd225079258c1a848e1391ca6f55f26f (diff) |
arm: tegra: cardhu: KEY_POWER event through ONKEY for PM298
ONKEY is connected with PMU and PMU generates power-on interrupt.
PM298's power-on interrupt was handled as KEY_POWER event using
interrupt keys driver.
Bug 849360
Change-Id: I822e540e3f82b81b41dc0a582b3a63f54bf5762b
Signed-off-by: Jin Park <jinyoungp@nvidia.com>
Reviewed-on: http://git-master/r/60654
Tested-by: Gerrit_Virtual_Submit
Reviewed-by: Laxman Dewangan <ldewangan@nvidia.com>
-rw-r--r-- | arch/arm/mach-tegra/board-cardhu-kbc.c | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/arch/arm/mach-tegra/board-cardhu-kbc.c b/arch/arm/mach-tegra/board-cardhu-kbc.c index 94d52f1a3f15..2bc592864dc2 100644 --- a/arch/arm/mach-tegra/board-cardhu-kbc.c +++ b/arch/arm/mach-tegra/board-cardhu-kbc.c @@ -26,6 +26,7 @@ #include <linux/gpio.h> #include <linux/gpio_keys.h> #include <linux/mfd/tps6591x.h> +#include <linux/mfd/max77663-core.h> #include <linux/interrupt_keys.h> #include <linux/gpio_scrollwheel.h> @@ -217,6 +218,11 @@ static struct interrupt_keys_button cardhu_int_keys[] = { [1] = INT_KEY(KEY_POWER, TPS6591X_IRQ_BASE + TPS6591X_INT_PWRON_LP, 0, 8000), }; +static struct interrupt_keys_button cardhu_pm298_int_keys[] = { + [0] = INT_KEY(KEY_POWER, MAX77663_IRQ_BASE + MAX77663_IRQ_ONOFF_EN0_FALLING, 0, 100), + [1] = INT_KEY(KEY_POWER, MAX77663_IRQ_BASE + MAX77663_IRQ_ONOFF_EN0_1SEC, 0, 3000), +}; + static struct interrupt_keys_platform_data cardhu_int_keys_pdata = { .int_buttons = cardhu_int_keys, .nbuttons = ARRAY_SIZE(cardhu_int_keys), @@ -234,6 +240,7 @@ int __init cardhu_keys_init(void) { int i; struct board_info board_info; + struct board_info pmu_board_info; tegra_get_board_info(&board_info); if (!((board_info.board_id == BOARD_E1198) || @@ -261,6 +268,14 @@ int __init cardhu_keys_init(void) } /* Register on-key through pmu interrupt */ + tegra_get_pmu_board_info(&pmu_board_info); + + if (pmu_board_info.board_id == BOARD_PMU_PM298) { + cardhu_int_keys_pdata.int_buttons = cardhu_pm298_int_keys; + cardhu_int_keys_pdata.nbuttons = + ARRAY_SIZE(cardhu_pm298_int_keys); + } + if ((board_info.board_id == BOARD_E1291) || (board_info.board_id == BOARD_E1257) || (board_info.board_id == BOARD_PM305) || |