* 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).