aboutsummaryrefslogtreecommitdiffstats
path: root/arch
diff options
context:
space:
mode:
authorPaul Walmsley <paul@pwsan.com>2009-07-22 13:18:07 -0400
committerKevin Hilman <khilman@deeprootsystems.com>2009-10-05 13:50:59 -0400
commit5d80597801ff0d7e6b184504c04e9c1b3b61d16d (patch)
tree1b17a5bfc20731c45da605993da37a0a57fa4ede /arch
parent77da2d910a17e1e6a7e949578723d5aab58568d5 (diff)
OMAP3: PM: PRCM interrupt: check MPUGRPSEL register
PM_WKST register contents should be ANDed with the contents of the MPUGRPSEL registers. Otherwise the MPU PRCM interrupt handler could wind up clearing wakeup events meant for the IVA PRCM interrupt handler. A future revision to this code should be to read a cached version of MPUGRPSEL from the powerdomain code, since PRM reads are relatively slow. Updated after Jon Hunter's PRCM IRQ change by Kevin Hilman Signed-off-by: Paul Walmsley <paul@pwsan.com> Signed-off-by: Kevin Hilman <khilman@deeprootsystems.com>
Diffstat (limited to 'arch')
-rw-r--r--arch/arm/mach-omap2/pm34xx.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/arch/arm/mach-omap2/pm34xx.c b/arch/arm/mach-omap2/pm34xx.c
index 1e7aae2ce5ed..0e7bd8e55f76 100644
--- a/arch/arm/mach-omap2/pm34xx.c
+++ b/arch/arm/mach-omap2/pm34xx.c
@@ -67,8 +67,11 @@ static void prcm_clear_mod_irqs(s16 module, u8 regs)
67 u16 wkst_off = (regs == 3) ? OMAP3430ES2_PM_WKST3 : PM_WKST1; 67 u16 wkst_off = (regs == 3) ? OMAP3430ES2_PM_WKST3 : PM_WKST1;
68 u16 fclk_off = (regs == 3) ? OMAP3430ES2_CM_FCLKEN3 : CM_FCLKEN1; 68 u16 fclk_off = (regs == 3) ? OMAP3430ES2_CM_FCLKEN3 : CM_FCLKEN1;
69 u16 iclk_off = (regs == 3) ? CM_ICLKEN3 : CM_ICLKEN1; 69 u16 iclk_off = (regs == 3) ? CM_ICLKEN3 : CM_ICLKEN1;
70 u16 grpsel_off = (regs == 3) ?
71 OMAP3430ES2_PM_MPUGRPSEL3 : OMAP3430_PM_MPUGRPSEL;
70 72
71 wkst = prm_read_mod_reg(module, wkst_off); 73 wkst = prm_read_mod_reg(module, wkst_off);
74 wkst &= prm_read_mod_reg(module, grpsel_off);
72 if (wkst) { 75 if (wkst) {
73 iclk = cm_read_mod_reg(module, iclk_off); 76 iclk = cm_read_mod_reg(module, iclk_off);
74 fclk = cm_read_mod_reg(module, fclk_off); 77 fclk = cm_read_mod_reg(module, fclk_off);