|
@@ -801,6 +801,16 @@ static void closecard(int cardnr)
|
|
ll_unload(csta);
|
|
ll_unload(csta);
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+static irqreturn_t card_irq(int intno, void *dev_id)
|
|
|
|
+{
|
|
|
|
+ struct IsdnCardState *cs = dev_id;
|
|
|
|
+ irqreturn_t ret = cs->irq_func(intno, cs);
|
|
|
|
+
|
|
|
|
+ if (ret == IRQ_HANDLED)
|
|
|
|
+ cs->irq_cnt++;
|
|
|
|
+ return ret;
|
|
|
|
+}
|
|
|
|
+
|
|
static int init_card(struct IsdnCardState *cs)
|
|
static int init_card(struct IsdnCardState *cs)
|
|
{
|
|
{
|
|
int irq_cnt, cnt = 3, ret;
|
|
int irq_cnt, cnt = 3, ret;
|
|
@@ -809,10 +819,10 @@ static int init_card(struct IsdnCardState *cs)
|
|
ret = cs->cardmsg(cs, CARD_INIT, NULL);
|
|
ret = cs->cardmsg(cs, CARD_INIT, NULL);
|
|
return(ret);
|
|
return(ret);
|
|
}
|
|
}
|
|
- irq_cnt = kstat_irqs(cs->irq);
|
|
|
|
|
|
+ irq_cnt = cs->irq_cnt = 0;
|
|
printk(KERN_INFO "%s: IRQ %d count %d\n", CardType[cs->typ],
|
|
printk(KERN_INFO "%s: IRQ %d count %d\n", CardType[cs->typ],
|
|
cs->irq, irq_cnt);
|
|
cs->irq, irq_cnt);
|
|
- if (request_irq(cs->irq, cs->irq_func, cs->irq_flags, "HiSax", cs)) {
|
|
|
|
|
|
+ if (request_irq(cs->irq, card_irq, cs->irq_flags, "HiSax", cs)) {
|
|
printk(KERN_WARNING "HiSax: couldn't get interrupt %d\n",
|
|
printk(KERN_WARNING "HiSax: couldn't get interrupt %d\n",
|
|
cs->irq);
|
|
cs->irq);
|
|
return 1;
|
|
return 1;
|
|
@@ -822,8 +832,8 @@ static int init_card(struct IsdnCardState *cs)
|
|
/* Timeout 10ms */
|
|
/* Timeout 10ms */
|
|
msleep(10);
|
|
msleep(10);
|
|
printk(KERN_INFO "%s: IRQ %d count %d\n",
|
|
printk(KERN_INFO "%s: IRQ %d count %d\n",
|
|
- CardType[cs->typ], cs->irq, kstat_irqs(cs->irq));
|
|
|
|
- if (kstat_irqs(cs->irq) == irq_cnt) {
|
|
|
|
|
|
+ CardType[cs->typ], cs->irq, cs->irq_cnt);
|
|
|
|
+ if (cs->irq_cnt == irq_cnt) {
|
|
printk(KERN_WARNING
|
|
printk(KERN_WARNING
|
|
"%s: IRQ(%d) getting no interrupts during init %d\n",
|
|
"%s: IRQ(%d) getting no interrupts during init %d\n",
|
|
CardType[cs->typ], cs->irq, 4 - cnt);
|
|
CardType[cs->typ], cs->irq, 4 - cnt);
|