Messages in this thread | | | Date | Tue, 31 Aug 2010 12:53:12 +0800 | Subject | Re: [PATCH 4/5] ARM: pxa168: added special case handler for keypad interrupts | From | Haojian Zhuang <> |
| |
On Thu, Aug 26, 2010 at 5:18 PM, Mark F. Brown <mark.brown314@gmail.com> wrote: > Signed-off-by: Mark F. Brown <mark.brown314@gmail.com> > --- > arch/arm/mach-mmp/irq-pxa168.c | 23 ++++++++++++++++++++++- > 1 files changed, 22 insertions(+), 1 deletions(-) > > diff --git a/arch/arm/mach-mmp/irq-pxa168.c b/arch/arm/mach-mmp/irq-pxa168.c > index 52ff2f0..bfb0984 100644 > --- a/arch/arm/mach-mmp/irq-pxa168.c > +++ b/arch/arm/mach-mmp/irq-pxa168.c > @@ -17,6 +17,8 @@ > #include <linux/io.h> > > #include <mach/regs-icu.h> > +#include <mach/regs-apmu.h> > +#include <mach/cputype.h> > > #include "common.h" > > @@ -42,6 +44,19 @@ static struct irq_chip icu_irq_chip = { > .unmask = icu_unmask_irq, > }; > > +void handle_pxa168_keypad_irq(unsigned int irq, struct irq_desc *desc) > +{ > + uint32_t val; > + uint32_t mask = APMU_PXA168_KP_WAKE_CLR; > + > + /* clear keypad wake event */ > + val = __raw_readl(APMU_WAKE_CLR); > + __raw_writel(val | mask, APMU_WAKE_CLR); > + > + /* handle irq */ > + handle_level_irq(irq, desc); > +} > +
Why should you clear wakeup event status in IRQ handler? If system is resumed by keypad event, you should clear this wakeup source in resume code. I think that IRQ code should not be binded with wakeup event at here.
> void __init icu_init_irq(void) > { > int irq; > @@ -49,7 +64,13 @@ void __init icu_init_irq(void) > for (irq = 0; irq < 64; irq++) { > icu_mask_irq(irq); > set_irq_chip(irq, &icu_irq_chip); > - set_irq_handler(irq, handle_level_irq); > + > + /* special handler for keypad */ > + if (cpu_is_pxa168() && irq == IRQ_PXA168_KEYPAD) > + set_irq_handler(irq, handle_pxa168_keypad_irq); > + else > + set_irq_handler(irq, handle_level_irq); > + > set_irq_flags(irq, IRQF_VALID); > } > } > -- > 1.7.0.4 > > -- > To unsubscribe from this list: send the line "unsubscribe linux-kernel" in > the body of a message to majordomo@vger.kernel.org > More majordomo info at http://vger.kernel.org/majordomo-info.html > Please read the FAQ at http://www.tux.org/lkml/ > -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
| |