MPC8272: Edge triggered IRQ

Laurent Pinchart laurent.pinchart at tbox.biz
Tue Dec 12 19:02:47 EST 2006


> Found solution:
>
> immap->im_intctl.ic_siexr |= (1 << (14 - (irq - SIU_INT_IRQ1)));
>
> Makes it trigger on falling edge

Don't forget to set

        irq_desc[SIU_INT_IRQ1].status &= ~IRQ_LEVEL;

That should be done in the IRQ initialization function referenced by 
ppc_md.init_IRQ.

> > I have pretty simple code that I did a long time ago
> >
> > irqreturn_t irq_handler(int irq, void *dev_id, struct pt_regs *regs)
> > {
> >   ..
> >  return IRQ_HANDLED;
> > }
> >
> >
> > request_irq(irq,
> >             &irq_handler,
> >             SA_INTERRUPT,
> >             "irq handler",
> >              NULL);
> >
> > That code runs on MPC8272 and 2.6.18 kernel.
> > It triggers IRQ on low level (I thought it was falling edge by default).
> > So, as long as I have input low level I have hundreds of calls. Pretty
> > much it keeps calling IRQ handling routine.
> > How do I make it to trigger on falling edge?

Laurent Pinchart



More information about the Linuxppc-embedded mailing list