Re: question in request_threaded_irq

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Mon, 2011-08-15 at 16:33 +0530, radhika bhaskaran wrote:

> 
> For my debugging purpose i tried to register two isr's on the same
> number IRQ no in  the same driver. But the isr which is registerd
> first is being hit.
> 

Since the kernel is monolithic is doesn't really matter where your ISR
functions are defined and where these handlers are assigned an IRQ line.

> 
> The other isr funciton which is registered after the first isr is
> never executed.
> 
> 
> Any more suggestions?
> 

Yes, does yours ISR function handlers look if they generated the interrupt and 
if not respond accordingly?
If your device didn't raised the interrupt then they have to return IRQ_NONE. 
If your hardware raised the interrupt then you have to do the processing and 
return IRQ_HANDLED.

So you have to do something like this:

static irqreturn_t my_interrupt(int irq, void *data)
{
        int result;
        struct my_device *my_dev = data;

        result = check_interrupt_raised(my_dev);

        if (!result)
           return IRQ_NONE;

	process_interrupt(my_dev);
        return IRQ_HANDLED;
}

Hope it helps,
Javier Martinez Canillas



_______________________________________________
Kernelnewbies mailing list
Kernelnewbies@xxxxxxxxxxxxxxxxx
http://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies


[Index of Archives]     [Newbies FAQ]     [Linux Kernel Mentors]     [Linux Kernel Development]     [IETF Annouce]     [Git]     [Networking]     [Security]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux RAID]     [Linux SCSI]     [Linux ACPI]
  Powered by Linux