Mike, This code is part of DSPLink isr.c. Are you trying to register an ISR for shared or non-shared interrupt? If you are registering for shared interrupt (such as PCI), you should use the SA_SHIRQ version, otherwise use 0. But the define for DM642_PCI is very DSPLink-specific, so you should remove that if you are doing your own thing.
Regards, Mugdha ________________________________ From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] On Behalf Of Mike Gao Sent: Saturday, June 07, 2008 10:34 PM To: [email protected] Subject: why request_irq() return -16 on Davinci EVM? 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
