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

Reply via email to