Merge branch 'intx' of master.kernel.org:/pub/scm/linux/kernel/git/jgarzik/misc-2.6
[pandora-kernel.git] / drivers / isdn / hisax / isac.c
index 85e063a..4e9f238 100644 (file)
@@ -81,8 +81,10 @@ isac_new_ph(struct IsdnCardState *cs)
 }
 
 static void
-isac_bh(struct IsdnCardState *cs)
+isac_bh(struct work_struct *work)
 {
+       struct IsdnCardState *cs =
+               container_of(work, struct IsdnCardState, tqueue);
        struct PStack *stptr;
        
        if (!cs)
@@ -570,15 +572,12 @@ setstack_isac(struct PStack *st, struct IsdnCardState *cs)
 }
 
 static void
-DC_Close_isac(struct IsdnCardState *cs) {
-       if (cs->dc.isac.mon_rx) {
-               kfree(cs->dc.isac.mon_rx);
-               cs->dc.isac.mon_rx = NULL;
-       }
-       if (cs->dc.isac.mon_tx) {
-               kfree(cs->dc.isac.mon_tx);
-               cs->dc.isac.mon_tx = NULL;
-       }
+DC_Close_isac(struct IsdnCardState *cs)
+{
+       kfree(cs->dc.isac.mon_rx);
+       cs->dc.isac.mon_rx = NULL;
+       kfree(cs->dc.isac.mon_tx);
+       cs->dc.isac.mon_tx = NULL;
 }
 
 static void
@@ -612,7 +611,7 @@ dbusy_timer_handler(struct IsdnCardState *cs)
                                debugl1(cs, "D-Channel Busy no skb");
                        }
                        cs->writeisac(cs, ISAC_CMDR, 0x01); /* Transmitter reset */
-                       cs->irq_func(cs->irq, cs, NULL);
+                       cs->irq_func(cs->irq, cs);
                }
        }
 }
@@ -677,7 +676,7 @@ clear_pending_isac_ints(struct IsdnCardState *cs)
 void __devinit
 setup_isac(struct IsdnCardState *cs)
 {
-       INIT_WORK(&cs->tqueue, (void *)(void *) isac_bh, cs);
+       INIT_WORK(&cs->tqueue, isac_bh);
        cs->dbusytimer.function = (void *) dbusy_timer_handler;
        cs->dbusytimer.data = (long) cs;
        init_timer(&cs->dbusytimer);