From mboxrd@z Thu Jan 1 00:00:00 1970 From: martinez.javier@gmail.com (Javier Martinez Canillas) Date: Mon, 15 Aug 2011 17:10:02 +0200 Subject: question in request_threaded_irq In-Reply-To: References: Message-ID: <1313421002.3908.7.camel@sauron> To: kernelnewbies@lists.kernelnewbies.org List-Id: kernelnewbies.lists.kernelnewbies.org 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