summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJin Park <jinyoungp@nvidia.com>2011-10-27 17:59:26 +0900
committerLokesh Pathak <lpathak@nvidia.com>2011-10-27 23:48:42 -0700
commit733e3c5dd9b8748c2431eb28accb9b3638919c48 (patch)
tree60ee8b8f8aea6634ec20fd5f9088943f509cae6f
parent3c095de4dd225079258c1a848e1391ca6f55f26f (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.c15
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) ||