*/
sc_adapter[cinst]->interrupt = irq[b];
if (request_irq(sc_adapter[cinst]->interrupt, interrupt_handler,
- IRQF_DISABLED, interface->id, NULL))
+ IRQF_DISABLED, interface->id,
+ (void *)(unsigned long) cinst))
{
kfree(sc_adapter[cinst]->channel);
indicate_status(cinst, ISDN_STAT_UNLOAD, 0, NULL); /* Fix me */
#include "card.h"
#include <linux/interrupt.h>
-static int get_card_from_irq(int irq)
-{
- int i;
-
- for(i = 0 ; i < cinst ; i++) {
- if(sc_adapter[i]->interrupt == irq)
- return i;
- }
- return -1;
-}
-
/*
*
*/
-irqreturn_t interrupt_handler(int interrupt, void *cardptr)
+irqreturn_t interrupt_handler(int dummy, void *card_inst)
{
RspMessage rcvmsg;
int channel;
- int card;
-
- card = get_card_from_irq(interrupt);
+ int card = (int)(unsigned long) card_inst;
if(!IS_VALID_CARD(card)) {
pr_debug("Invalid param: %d is not a valid card id\n", card);