linuxppc-dev.lists.ozlabs.org archive mirror
 help / color / mirror / Atom feed
* MPC8272: Edge triggered IRQ
@ 2006-12-12  1:59 Dmytro Bablinyuk
  2006-12-12  2:48 ` Dmytro Bablinyuk
  0 siblings, 1 reply; 3+ messages in thread
From: Dmytro Bablinyuk @ 2006-12-12  1:59 UTC (permalink / raw)
  To: linuxppc-embedded

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?

Thank you,

Dmytro

^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: MPC8272: Edge triggered IRQ
  2006-12-12  1:59 MPC8272: Edge triggered IRQ Dmytro Bablinyuk
@ 2006-12-12  2:48 ` Dmytro Bablinyuk
  2006-12-12  8:02   ` Laurent Pinchart
  0 siblings, 1 reply; 3+ messages in thread
From: Dmytro Bablinyuk @ 2006-12-12  2:48 UTC (permalink / raw)
  To: linuxppc-embedded

Found solution:

immap->im_intctl.ic_siexr |= (1 << (14 - (irq - SIU_INT_IRQ1)));

Makes it trigger on falling edge

Dmytro Bablinyuk wrote:
> 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?

^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: MPC8272: Edge triggered IRQ
  2006-12-12  2:48 ` Dmytro Bablinyuk
@ 2006-12-12  8:02   ` Laurent Pinchart
  0 siblings, 0 replies; 3+ messages in thread
From: Laurent Pinchart @ 2006-12-12  8:02 UTC (permalink / raw)
  To: linuxppc-embedded

> 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

^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2006-12-12  8:03 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2006-12-12  1:59 MPC8272: Edge triggered IRQ Dmytro Bablinyuk
2006-12-12  2:48 ` Dmytro Bablinyuk
2006-12-12  8:02   ` Laurent Pinchart

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).