summaryrefslogtreecommitdiff
path: root/arch/arm/mach-tegra/board-nvodm.c
diff options
context:
space:
mode:
Diffstat (limited to 'arch/arm/mach-tegra/board-nvodm.c')
-rw-r--r--arch/arm/mach-tegra/board-nvodm.c18
1 files changed, 17 insertions, 1 deletions
diff --git a/arch/arm/mach-tegra/board-nvodm.c b/arch/arm/mach-tegra/board-nvodm.c
index 19416f7da720..8d6a1b6b5b36 100644
--- a/arch/arm/mach-tegra/board-nvodm.c
+++ b/arch/arm/mach-tegra/board-nvodm.c
@@ -1320,10 +1320,26 @@ static void __init tegra_setup_suspend(void)
if (!w || !nr_wake)
goto do_register;
+ plat->wake_enb = 0;
+ plat->wake_low = 0;
+ plat->wake_high = 0;
+ plat->wake_any = 0;
+
while (nr_wake--) {
unsigned int pad = w->WakeupPadNumber;
if (pad < ARRAY_SIZE(wakepad_irq) && w->enable)
- enable_irq_wake(wakepad_irq[w->WakeupPadNumber]);
+ enable_irq_wake(wakepad_irq[pad]);
+
+ if (w->enable) {
+ plat->wake_enb |= (1 << pad);
+
+ if (w->Polarity == NvOdmWakeupPadPolarity_Low)
+ plat->wake_low |= (1 << pad);
+ else if (w->Polarity == NvOdmWakeupPadPolarity_High)
+ plat->wake_high |= (1 << pad);
+ else if (w->Polarity == NvOdmWakeupPadPolarity_AnyEdge)
+ plat->wake_any |= (1 << pad);
+ }
w++;
}