fedora core 6 1.2949 + vserver 2.2.0
[linux-2.6.git] / drivers / isdn / hardware / avm / c4.c
index 9e1285c..2a3eb38 100644 (file)
@@ -9,7 +9,6 @@
  *
  */
 
-#include <linux/config.h>
 #include <linux/module.h>
 #include <linux/kernel.h>
 #include <linux/skbuff.h>
@@ -50,7 +49,7 @@ MODULE_DEVICE_TABLE(pci, c4_pci_tbl);
 MODULE_DESCRIPTION("CAPI4Linux: Driver for AVM C2/C4 cards");
 MODULE_AUTHOR("Carsten Paeth");
 MODULE_LICENSE("GPL");
-MODULE_PARM(suppress_pollack, "0-1i");
+module_param(suppress_pollack, bool, 0);
 
 /* ------------------------------------------------------------- */
 
@@ -662,15 +661,16 @@ static void c4_handle_rx(avmcard *card)
 
 static irqreturn_t c4_handle_interrupt(avmcard *card)
 {
+       unsigned long flags;
        u32 status;
 
-       spin_lock(&card->lock);
+       spin_lock_irqsave(&card->lock, flags);
        status = c4inmeml(card->mbase+DOORBELL);
 
        if (status & DBELL_RESET_HOST) {
                u_int i;
                c4outmeml(card->mbase+PCI_OUT_INT_MASK, 0x0c);
-               spin_unlock(&card->lock);
+               spin_unlock_irqrestore(&card->lock, flags);
                if (card->nlogcontr == 0)
                        return IRQ_HANDLED;
                printk(KERN_ERR "%s: unexpected reset\n", card->name);
@@ -686,7 +686,7 @@ static irqreturn_t c4_handle_interrupt(avmcard *card)
 
        status &= (DBELL_UP_HOST | DBELL_DOWN_HOST);
        if (!status) {
-               spin_unlock(&card->lock);
+               spin_unlock_irqrestore(&card->lock, flags);
                return IRQ_HANDLED;
        }
        c4outmeml(card->mbase+DOORBELL, status);
@@ -709,11 +709,11 @@ static irqreturn_t c4_handle_interrupt(avmcard *card)
                        c4_dispatch_tx(card);
                }
        }
-       spin_unlock(&card->lock);
+       spin_unlock_irqrestore(&card->lock, flags);
        return IRQ_HANDLED;
 }
 
-static irqreturn_t c4_interrupt(int interrupt, void *devptr, struct pt_regs *regs)
+static irqreturn_t c4_interrupt(int interrupt, void *devptr)
 {
        avmcard *card = devptr;
 
@@ -884,7 +884,7 @@ static int c4_load_firmware(struct capi_ctr *ctrl, capiloaddata *data)
 }
 
 
-void c4_reset_ctr(struct capi_ctr *ctrl)
+static void c4_reset_ctr(struct capi_ctr *ctrl)
 {
        avmcard *card = ((avmctrl_info *)(ctrl->driverdata))->card;
        avmctrl_info *cinfo;
@@ -932,7 +932,7 @@ static void c4_remove(struct pci_dev *pdev)
 /* ------------------------------------------------------------- */
 
 
-void c4_register_appl(struct capi_ctr *ctrl,
+static void c4_register_appl(struct capi_ctr *ctrl,
                                u16 appl,
                                capi_register_params *rp)
 {
@@ -977,7 +977,7 @@ void c4_register_appl(struct capi_ctr *ctrl,
 
 /* ------------------------------------------------------------- */
 
-void c4_release_appl(struct capi_ctr *ctrl, u16 appl)
+static void c4_release_appl(struct capi_ctr *ctrl, u16 appl)
 {
        avmctrl_info *cinfo = (avmctrl_info *)(ctrl->driverdata);
        avmcard *card = cinfo->card;
@@ -1029,8 +1029,6 @@ static u16 c4_send_message(struct capi_ctr *ctrl, struct sk_buff *skb)
                spin_lock_irqsave(&card->lock, flags);
                c4_dispatch_tx(card);
                spin_unlock_irqrestore(&card->lock, flags);
-       } else {
-               dev_kfree_skb_any(skb);
        }
        return retval;
 }
@@ -1174,7 +1172,7 @@ static int c4_add_card(struct capicardparams *p, struct pci_dev *dev,
        }
        c4_reset(card);
 
-       retval = request_irq(card->irq, c4_interrupt, SA_SHIRQ, card->name, card);
+       retval = request_irq(card->irq, c4_interrupt, IRQF_SHARED, card->name, card);
        if (retval) {
                printk(KERN_ERR "c4: unable to get IRQ %d.\n",card->irq);
                retval = -EBUSY;
@@ -1289,7 +1287,7 @@ static int __init c4_init(void)
        } else
                strcpy(rev, "1.0");
 
-       err = pci_module_init(&c4_pci_driver);
+       err = pci_register_driver(&c4_pci_driver);
        if (!err) {
                strlcpy(capi_driver_c2.revision, rev, 32);
                register_capi_driver(&capi_driver_c2);