x86_64 irq: use mask/unmask and proper locking in fixup_irqs()
[powerpc.git] / drivers / isdn / hysdn / boardergo.c
index 82e42a8..6cdbad3 100644 (file)
@@ -14,7 +14,6 @@
  *
  */
 
-#include <linux/sched.h>
 #include <linux/signal.h>
 #include <linux/kernel.h>
 #include <linux/ioport.h>
@@ -71,8 +70,9 @@ ergo_interrupt(int intno, void *dev_id)
 /* may be queued from everywhere (interrupts included).                       */
 /******************************************************************************/
 static void
-ergo_irq_bh(hysdn_card * card)
+ergo_irq_bh(struct work_struct *ugli_api)
 {
+       hysdn_card * card = container_of(ugli_api, hysdn_card, irq_queue);
        tErgDpram *dpr;
        int again;
        unsigned long flags;
@@ -442,8 +442,8 @@ ergo_inithardware(hysdn_card * card)
        card->writebootseq = ergo_writebootseq;
        card->waitpofready = ergo_waitpofready;
        card->set_errlog_state = ergo_set_errlog_state;
-       INIT_WORK(&card->irq_queue, (void *) (void *) ergo_irq_bh, card);
-       card->hysdn_lock = SPIN_LOCK_UNLOCKED;
+       INIT_WORK(&card->irq_queue, ergo_irq_bh);
+       spin_lock_init(&card->hysdn_lock);
 
        return (0);
 }                              /* ergo_inithardware */