diff options
author | Bitan Biswas <bbiswas@nvidia.com> | 2012-05-29 22:19:09 +0530 |
---|---|---|
committer | Rohan Somvanshi <rsomvanshi@nvidia.com> | 2012-07-11 06:07:32 -0700 |
commit | 48651d264bdb2ff90624e965b8a68b011077ca7c (patch) | |
tree | 3b02c2fd3122e6a6b35d0c2049d4b290b37ae2d2 /arch/arm/mach-tegra/wakeups-t3.c | |
parent | 25a4796d13bfd8ae0e7618e573ab0aad6f928a6d (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.c | 91 |
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); + |