summaryrefslogtreecommitdiff
path: root/arch/arm/mach-tegra/wakeups-t3.c
diff options
context:
space:
mode:
authorBitan Biswas <bbiswas@nvidia.com>2012-05-29 22:19:09 +0530
committerRohan Somvanshi <rsomvanshi@nvidia.com>2012-07-11 06:07:32 -0700
commit48651d264bdb2ff90624e965b8a68b011077ca7c (patch)
tree3b02c2fd3122e6a6b35d0c2049d4b290b37ae2d2 /arch/arm/mach-tegra/wakeups-t3.c
parent25a4796d13bfd8ae0e7618e573ab0aad6f928a6d (diff)
ARM: tegra: support multiple wake sources with same irq
Earlier implementation only allowed single wake source for a particular irq in wake table. Changed implementation to support multiple wake sources ==> single irq mapping. bug 980993 Change-Id: Iacb00487531129ef19c53128824aba802e80350e Signed-off-by: Bitan Biswas <bbiswas@nvidia.com> Reviewed-on: http://git-master/r/103140 Reviewed-by: Automatic_Commit_Validation_User Reviewed-by: Laxman Dewangan <ldewangan@nvidia.com>
Diffstat (limited to 'arch/arm/mach-tegra/wakeups-t3.c')
-rw-r--r--arch/arm/mach-tegra/wakeups-t3.c91
1 files changed, 46 insertions, 45 deletions
diff --git a/arch/arm/mach-tegra/wakeups-t3.c b/arch/arm/mach-tegra/wakeups-t3.c
index 33dfb12f7211..ef471cb035db 100644
--- a/arch/arm/mach-tegra/wakeups-t3.c
+++ b/arch/arm/mach-tegra/wakeups-t3.c
@@ -24,50 +24,51 @@
#include "gpio-names.h"
#include "wakeups.h"
-static int tegra_wake_event_irq_t3[] = {
- TEGRA_GPIO_TO_IRQ(TEGRA_GPIO_PO5), /* wake0 */
- TEGRA_GPIO_TO_IRQ(TEGRA_GPIO_PV1), /* wake1 */
- TEGRA_GPIO_TO_IRQ(TEGRA_GPIO_PL1), /* wake2 */
- TEGRA_GPIO_TO_IRQ(TEGRA_GPIO_PB6), /* wake3 */
- TEGRA_GPIO_TO_IRQ(TEGRA_GPIO_PN7), /* wake4 */
- TEGRA_GPIO_TO_IRQ(TEGRA_GPIO_PBB6), /* wake5 */
- TEGRA_GPIO_TO_IRQ(TEGRA_GPIO_PU5), /* wake6 */
- TEGRA_GPIO_TO_IRQ(TEGRA_GPIO_PU6), /* wake7 */
- TEGRA_GPIO_TO_IRQ(TEGRA_GPIO_PC7), /* wake8 */
- TEGRA_GPIO_TO_IRQ(TEGRA_GPIO_PS2), /* wake9 */
- TEGRA_GPIO_TO_IRQ(TEGRA_GPIO_PAA1), /* wake10 */
- TEGRA_GPIO_TO_IRQ(TEGRA_GPIO_PW3), /* wake11 */
- TEGRA_GPIO_TO_IRQ(TEGRA_GPIO_PW2), /* wake12 */
- TEGRA_GPIO_TO_IRQ(TEGRA_GPIO_PY6), /* wake13 */
- TEGRA_GPIO_TO_IRQ(TEGRA_GPIO_PDD3), /* wake14 */
- TEGRA_GPIO_TO_IRQ(TEGRA_GPIO_PJ2), /* wake15 */
- INT_RTC, /* wake16 */
- INT_KBC, /* wake17 */
- INT_EXTERNAL_PMU, /* wake18 */
- -EINVAL, /* TEGRA_USB1_VBUS, */ /* wake19 */
- -EINVAL, /* TEGRA_USB2_VBUS, */ /* wake20 */
- -EINVAL, /* TEGRA_USB1_ID, */ /* wake21 */
- -EINVAL, /* TEGRA_USB2_ID, */ /* wake22 */
- TEGRA_GPIO_TO_IRQ(TEGRA_GPIO_PI5), /* wake23 */
- TEGRA_GPIO_TO_IRQ(TEGRA_GPIO_PV0), /* wake24 */
- TEGRA_GPIO_TO_IRQ(TEGRA_GPIO_PS4), /* wake25 */
- TEGRA_GPIO_TO_IRQ(TEGRA_GPIO_PS5), /* wake26 */
- TEGRA_GPIO_TO_IRQ(TEGRA_GPIO_PS0), /* wake27 */
- TEGRA_GPIO_TO_IRQ(TEGRA_GPIO_PS6), /* wake28 */
- TEGRA_GPIO_TO_IRQ(TEGRA_GPIO_PS7), /* wake29 */
- TEGRA_GPIO_TO_IRQ(TEGRA_GPIO_PN2), /* wake30 */
- -EINVAL, /* not used */ /* wake31 */
- TEGRA_GPIO_TO_IRQ(TEGRA_GPIO_PO4), /* wake32 */
- TEGRA_GPIO_TO_IRQ(TEGRA_GPIO_PJ0), /* wake33 */
- TEGRA_GPIO_TO_IRQ(TEGRA_GPIO_PK2), /* wake34 */
- TEGRA_GPIO_TO_IRQ(TEGRA_GPIO_PI6), /* wake35 */
- TEGRA_GPIO_TO_IRQ(TEGRA_GPIO_PBB1), /* wake36 */
- -EINVAL, /* TEGRA_USB3_VBUS, */ /* wake37 */
- -EINVAL, /* TEGRA_USB3_ID, */ /* wake38 */
- INT_USB, /* TEGRA_USB1_UTMIP, */ /* wake39 */
- INT_USB2, /* TEGRA_USB2_UTMIP, */ /* wake40 */
- INT_USB3, /* TEGRA_USB3_UTMIP, */ /* wake41 */
+static struct tegra_wake_info tegra_wake_event_data_t3[] = {
+ {TEGRA_GPIO_TO_IRQ(TEGRA_GPIO_PO5), POLARITY_NONE}, /* wake0 */
+ {TEGRA_GPIO_TO_IRQ(TEGRA_GPIO_PV1), POLARITY_NONE}, /* wake1 */
+ {TEGRA_GPIO_TO_IRQ(TEGRA_GPIO_PL1), POLARITY_NONE}, /* wake2 */
+ {TEGRA_GPIO_TO_IRQ(TEGRA_GPIO_PB6), POLARITY_NONE}, /* wake3 */
+ {TEGRA_GPIO_TO_IRQ(TEGRA_GPIO_PN7), POLARITY_NONE}, /* wake4 */
+ {TEGRA_GPIO_TO_IRQ(TEGRA_GPIO_PBB6), POLARITY_NONE}, /* wake5 */
+ {TEGRA_GPIO_TO_IRQ(TEGRA_GPIO_PU5), POLARITY_NONE}, /* wake6 */
+ {TEGRA_GPIO_TO_IRQ(TEGRA_GPIO_PU6), POLARITY_NONE}, /* wake7 */
+ {TEGRA_GPIO_TO_IRQ(TEGRA_GPIO_PC7), POLARITY_NONE}, /* wake8 */
+ {TEGRA_GPIO_TO_IRQ(TEGRA_GPIO_PS2), POLARITY_NONE}, /* wake9 */
+ {TEGRA_GPIO_TO_IRQ(TEGRA_GPIO_PAA1), POLARITY_NONE}, /* wake10 */
+ {TEGRA_GPIO_TO_IRQ(TEGRA_GPIO_PW3), POLARITY_NONE}, /* wake11 */
+ {TEGRA_GPIO_TO_IRQ(TEGRA_GPIO_PW2), POLARITY_NONE}, /* wake12 */
+ {TEGRA_GPIO_TO_IRQ(TEGRA_GPIO_PY6), POLARITY_NONE}, /* wake13 */
+ {TEGRA_GPIO_TO_IRQ(TEGRA_GPIO_PDD3), POLARITY_NONE}, /* wake14 */
+ {TEGRA_GPIO_TO_IRQ(TEGRA_GPIO_PJ2), POLARITY_NONE}, /* wake15 */
+ {INT_RTC, POLARITY_NONE}, /* wake16 */
+ {INT_KBC, POLARITY_NONE}, /* wake17 */
+ {INT_EXTERNAL_PMU, POLARITY_NONE}, /* wake18 */
+ {INT_USB, POLARITY_EDGE_ANY}, /* TEGRA_USB1_VBUS, */ /* wake19 */
+ {-EINVAL, POLARITY_EDGE_ANY}, /* TEGRA_USB2_VBUS, */ /* wake20 */
+ {INT_USB, POLARITY_EDGE_ANY}, /* TEGRA_USB1_ID, */ /* wake21 */
+ {-EINVAL, POLARITY_EDGE_ANY}, /* TEGRA_USB2_ID, */ /* wake22 */
+ {TEGRA_GPIO_TO_IRQ(TEGRA_GPIO_PI5), POLARITY_NONE}, /* wake23 */
+ {TEGRA_GPIO_TO_IRQ(TEGRA_GPIO_PV0), POLARITY_NONE}, /* wake24 */
+ {TEGRA_GPIO_TO_IRQ(TEGRA_GPIO_PS4), POLARITY_NONE}, /* wake25 */
+ {TEGRA_GPIO_TO_IRQ(TEGRA_GPIO_PS5), POLARITY_NONE}, /* wake26 */
+ {TEGRA_GPIO_TO_IRQ(TEGRA_GPIO_PS0), POLARITY_NONE}, /* wake27 */
+ {TEGRA_GPIO_TO_IRQ(TEGRA_GPIO_PS6), POLARITY_NONE}, /* wake28 */
+ {TEGRA_GPIO_TO_IRQ(TEGRA_GPIO_PS7), POLARITY_NONE}, /* wake29 */
+ {TEGRA_GPIO_TO_IRQ(TEGRA_GPIO_PN2), POLARITY_NONE}, /* wake30 */
+ {-EINVAL, POLARITY_NONE}, /* not used */ /* wake31 */
+ {TEGRA_GPIO_TO_IRQ(TEGRA_GPIO_PO4), POLARITY_NONE}, /* wake32 */
+ {TEGRA_GPIO_TO_IRQ(TEGRA_GPIO_PJ0), POLARITY_NONE}, /* wake33 */
+ {TEGRA_GPIO_TO_IRQ(TEGRA_GPIO_PK2), POLARITY_NONE}, /* wake34 */
+ {TEGRA_GPIO_TO_IRQ(TEGRA_GPIO_PI6), POLARITY_NONE}, /* wake35 */
+ {TEGRA_GPIO_TO_IRQ(TEGRA_GPIO_PBB1), POLARITY_NONE}, /* wake36 */
+ {-EINVAL, POLARITY_NONE}, /* TEGRA_USB3_VBUS, */ /* wake37 */
+ {-EINVAL, POLARITY_NONE}, /* TEGRA_USB3_ID, */ /* wake38 */
+ {INT_USB, POLARITY_LEVEL_HI}, /* TEGRA_USB1_UTMIP, */ /* wake39 */
+ {INT_USB2, POLARITY_LEVEL_HI}, /* TEGRA_USB2_UTMIP, */ /* wake40 */
+ {INT_USB3, POLARITY_LEVEL_HI} /* TEGRA_USB3_UTMIP, */ /* wake41 */
};
-int *tegra_wake_event_irq = tegra_wake_event_irq_t3;
-unsigned int tegra_wake_event_irq_size = ARRAY_SIZE(tegra_wake_event_irq_t3);
+struct tegra_wake_info *tegra_wake_event_data = tegra_wake_event_data_t3;
+unsigned int tegra_wake_event_data_size = ARRAY_SIZE(tegra_wake_event_data_t3);
+