X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=drivers%2Fisdn%2Fhardware%2Favm%2Fc4.c;h=2a3eb38f0ebb34b84da227a339ab5d78755a2187;hb=refs%2Fheads%2Fvserver;hp=9e1285ca57fe090d281e963d562ced65d24ddc7d;hpb=5273a3df6485dc2ad6aa7ddd441b9a21970f003b;p=linux-2.6.git diff --git a/drivers/isdn/hardware/avm/c4.c b/drivers/isdn/hardware/avm/c4.c index 9e1285ca5..2a3eb38f0 100644 --- a/drivers/isdn/hardware/avm/c4.c +++ b/drivers/isdn/hardware/avm/c4.c @@ -9,7 +9,6 @@ * */ -#include #include #include #include @@ -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);