From: 김규원 Date: Tue, 6 Jan 2009 02:59:42 +0000 (+0900) Subject: ARM: OMAP3: Mask interrupts when disabling interrupts X-Git-Tag: v2.6.28-omap1~2 X-Git-Url: http://pilppa.com/gitweb/?a=commitdiff_plain;h=023ae898bbbed8c2bc4d38bfbd05d2fee91c3468;p=linux-2.6-omap-h63xx.git ARM: OMAP3: Mask interrupts when disabling interrupts By Ingo Molnar, interrupts are not masked by default. (refer to 76d2160147f43f982dfe881404cfde9fd0a9da21) But if interrupts are not masked, the processor can wake up while in Suspend-to-RAM state by an external interrupt. For example, if an OMAP3 board is connected to Host PC by USB and entered to Suspend-to-RAM state, it wake up automatically by M_IRQ_92. The disable_irq() function can't disable the interrupt in H/W level, So I modified arch/arm/mach-omap2/irq.c Signed-off-by: Kim Kyuwon Signed-off-by: Tony Lindgren --- diff --git a/arch/arm/mach-omap2/irq.c b/arch/arm/mach-omap2/irq.c index 110acb9bce4..b44dcaeef73 100644 --- a/arch/arm/mach-omap2/irq.c +++ b/arch/arm/mach-omap2/irq.c @@ -123,6 +123,11 @@ static void omap_unmask_irq(unsigned int irq) intc_bank_write_reg(1 << irq, &irq_banks[0], INTC_MIR_CLEAR0 + offset); } +static void omap_disable_irq(unsigned int irq) +{ + omap_mask_irq(irq); +} + static void omap_mask_ack_irq(unsigned int irq) { omap_mask_irq(irq); @@ -134,6 +139,7 @@ static struct irq_chip omap_irq_chip = { .ack = omap_mask_ack_irq, .mask = omap_mask_irq, .unmask = omap_unmask_irq, + .disable = omap_disable_irq, }; static void __init omap_irq_bank_init_one(struct omap_irq_bank *bank)