Hi,
I met this issue when I try to setup a IRQ. It works before but stop working
without any change on kernel.
osStatus = request_irq (isrObj->irq,
ISR_Callback,
#if defined (DM642_PCI)
SA_SHIRQ,
"DSPLINK",
#else /* if defined (DM642_PCI) */
0, /* non shared, non-fiq
*/
"DSP/BIOS LINK",
#endif /* if defined (DM642_PCI) */
isrObj) ;
go to the kernel code in irq.c to see the setup_irq(), some code like this,
/*
* The following block of code has to be executed atomically
*/
desc = irq_desc + irq;
#ifdef CONFIG_PREEMPT_HARDIRQS
if (!(new->flags & SA_NODELAY)) {
if (start_irq_thread(irq, desc))
return -ENOMEM;
}
#endif
spin_lock_irqsave(&irq_controller_lock, flags);
p = &desc->action;
if ((old = *p) != NULL) {
/* Can't share interrupts unless both agree to */
if (!(old->flags & new->flags & SA_SHIRQ)) {
spin_unlock_irqrestore(&irq_controller_lock, flags);
return -EBUSY;
}
Anybody can help me figure out what this means?
Thanks very much in advance!
Mike
_______________________________________________
Davinci-linux-open-source mailing list
[email protected]
http://linux.davincidsp.com/mailman/listinfo/davinci-linux-open-source