Merge branch 'intx' of master.kernel.org:/pub/scm/linux/kernel/git/jgarzik/misc-2.6
[pandora-kernel.git] / drivers / isdn / hysdn / boardergo.c
index 8bbe33a..a120649 100644 (file)
@@ -71,8 +71,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;
@@ -403,7 +404,7 @@ ergo_releasehardware(hysdn_card * card)
        free_irq(card->irq, card);      /* release interrupt */
        release_region(card->iobase + PCI9050_INTR_REG, 1);     /* release all io ports */
        release_region(card->iobase + PCI9050_USER_IO, 1);
-       vfree(card->dpram);
+       iounmap(card->dpram);
        card->dpram = NULL;     /* release shared mem */
 }                              /* ergo_releasehardware */
 
@@ -442,7 +443,7 @@ 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);
+       INIT_WORK(&card->irq_queue, ergo_irq_bh);
        card->hysdn_lock = SPIN_LOCK_UNLOCKED;
 
        return (0);