]> pilppa.org Git - linux-2.6-omap-h63xx.git/blobdiff - drivers/isdn/hisax/hisax_fcpcipnp.c
Merge git://git.kernel.org/pub/scm/linux/kernel/git/bart/ide-2.6
[linux-2.6-omap-h63xx.git] / drivers / isdn / hisax / hisax_fcpcipnp.c
index dc7ef957e89708903b5620d175b8a110119091de..1925118122f877bdb2313d64f7fc8478e678e141 100644 (file)
@@ -68,7 +68,7 @@ static struct pci_device_id fcpci_ids[] = {
 
 MODULE_DEVICE_TABLE(pci, fcpci_ids);
 
-#ifdef __ISAPNP__
+#ifdef CONFIG_PNP
 static struct pnp_device_id fcpnp_ids[] __devinitdata = {
        { 
                .id             = "AVM0900",
@@ -387,8 +387,7 @@ static void hdlc_fill_fifo(struct fritz_bcs *bcs)
 
        DBG(0x40, "hdlc_fill_fifo");
 
-       if (skb->len == 0)
-               BUG();
+       BUG_ON(skb->len == 0);
 
        bcs->ctrl.sr.cmd &= ~HDLC_CMD_XME;
        if (bcs->tx_skb->len > bcs->fifo_size) {
@@ -547,7 +546,7 @@ static inline void hdlc_xpr_irq(struct fritz_bcs *bcs)
        }
        bcs->tx_cnt = 0;
        bcs->tx_skb = NULL;
-       B_L1L2(bcs, PH_DATA | CONFIRM, (void *) skb->truesize);
+       B_L1L2(bcs, PH_DATA | CONFIRM, (void *)(unsigned long)skb->truesize);
        dev_kfree_skb_irq(skb);
 }
 
@@ -630,15 +629,13 @@ static void fritz_b_l2l1(struct hisax_if *ifc, int pr, void *arg)
 
        switch (pr) {
        case PH_DATA | REQUEST:
-               if (bcs->tx_skb)
-                       BUG();
-               
+               BUG_ON(bcs->tx_skb);
                bcs->tx_skb = skb;
                DBG_SKB(1, skb);
                hdlc_fill_fifo(bcs);
                break;
        case PH_ACTIVATE | REQUEST:
-               mode = (int) arg;
+               mode = (long) arg;
                DBG(4,"B%d,PH_ACTIVATE_REQUEST %d", bcs->channel + 1, mode);
                modehdlc(bcs, mode);
                B_L1L2(bcs, PH_ACTIVATE | INDICATION, NULL);
@@ -654,7 +651,7 @@ static void fritz_b_l2l1(struct hisax_if *ifc, int pr, void *arg)
 // ----------------------------------------------------------------------
 
 static irqreturn_t
-fcpci2_irq(int intno, void *dev, struct pt_regs *regs)
+fcpci2_irq(int intno, void *dev)
 {
        struct fritz_adapter *adapter = dev;
        unsigned char val;
@@ -674,7 +671,7 @@ fcpci2_irq(int intno, void *dev, struct pt_regs *regs)
 }
 
 static irqreturn_t
-fcpci_irq(int intno, void *dev, struct pt_regs *regs)
+fcpci_irq(int intno, void *dev)
 {
        struct fritz_adapter *adapter = dev;
        unsigned char sval;
@@ -726,23 +723,6 @@ static int __devinit fcpcipnp_setup(struct fritz_adapter *adapter)
        if (!request_region(adapter->io, 32, "fcpcipnp"))
                goto err;
 
-       switch (adapter->type) {
-       case AVM_FRITZ_PCIV2:
-               retval = request_irq(adapter->irq, fcpci2_irq, SA_SHIRQ, 
-                                    "fcpcipnp", adapter);
-               break;
-       case AVM_FRITZ_PCI:
-               retval = request_irq(adapter->irq, fcpci_irq, SA_SHIRQ,
-                                    "fcpcipnp", adapter);
-               break;
-       case AVM_FRITZ_PNP:
-               retval = request_irq(adapter->irq, fcpci_irq, 0,
-                                    "fcpcipnp", adapter);
-               break;
-       }
-       if (retval)
-               goto err_region;
-
        switch (adapter->type) {
        case AVM_FRITZ_PCIV2:
        case AVM_FRITZ_PCI:
@@ -797,6 +777,23 @@ static int __devinit fcpcipnp_setup(struct fritz_adapter *adapter)
        outb(0, adapter->io + AVM_STATUS0);
        mdelay(10);
 
+       switch (adapter->type) {
+       case AVM_FRITZ_PCIV2:
+               retval = request_irq(adapter->irq, fcpci2_irq, IRQF_SHARED,
+                                    "fcpcipnp", adapter);
+               break;
+       case AVM_FRITZ_PCI:
+               retval = request_irq(adapter->irq, fcpci_irq, IRQF_SHARED,
+                                    "fcpcipnp", adapter);
+               break;
+       case AVM_FRITZ_PNP:
+               retval = request_irq(adapter->irq, fcpci_irq, 0,
+                                    "fcpcipnp", adapter);
+               break;
+       }
+       if (retval)
+               goto err_region;
+
        switch (adapter->type) {
        case AVM_FRITZ_PCIV2:
                fcpci2_init(adapter);
@@ -844,12 +841,10 @@ new_adapter(void)
        struct hisax_b_if *b_if[2];
        int i;
 
-       adapter = kmalloc(sizeof(struct fritz_adapter), GFP_KERNEL);
+       adapter = kzalloc(sizeof(struct fritz_adapter), GFP_KERNEL);
        if (!adapter)
                return NULL;
 
-       memset(adapter, 0, sizeof(struct fritz_adapter));
-
        adapter->isac.hisax_d_if.owner = THIS_MODULE;
        adapter->isac.hisax_d_if.ifc.priv = &adapter->isac;
        adapter->isac.hisax_d_if.ifc.l2l1 = isac_d_l2l1;
@@ -864,7 +859,11 @@ new_adapter(void)
        for (i = 0; i < 2; i++)
                b_if[i] = &adapter->bcs[i].b_if;
 
-       hisax_register(&adapter->isac.hisax_d_if, b_if, "fcpcipnp", protocol);
+       if (hisax_register(&adapter->isac.hisax_d_if, b_if, "fcpcipnp",
+                       protocol) != 0) {
+               kfree(adapter);
+               adapter = NULL;
+       }
 
        return adapter;
 }
@@ -915,7 +914,7 @@ static int __devinit fcpci_probe(struct pci_dev *pdev,
        return retval;
 }
 
-#ifdef __ISAPNP__
+#ifdef CONFIG_PNP
 static int __devinit fcpnp_probe(struct pnp_dev *pdev, const struct pnp_device_id *dev_id)
 {
        struct fritz_adapter *adapter;
@@ -936,7 +935,7 @@ static int __devinit fcpnp_probe(struct pnp_dev *pdev, const struct pnp_device_i
        pnp_disable_dev(pdev);
        retval = pnp_activate_dev(pdev);
        if (retval < 0) {
-               printk(KERN_WARNING "%s: pnp_activate_dev(%s) ret(%d)\n", __FUNCTION__,
+               printk(KERN_WARNING "%s: pnp_activate_dev(%s) ret(%d)\n", __func__,
                        (char *)dev_id->driver_data, retval);
                goto err_free;
        }
@@ -1001,23 +1000,20 @@ static int __init hisax_fcpcipnp_init(void)
 
        retval = pci_register_driver(&fcpci_driver);
        if (retval)
-               goto out;
-#ifdef __ISAPNP__
+               return retval;
+#ifdef CONFIG_PNP
        retval = pnp_register_driver(&fcpnp_driver);
-       if (retval < 0)
-               goto out_unregister_pci;
+       if (retval < 0) {
+               pci_unregister_driver(&fcpci_driver);
+               return retval;
+       }
 #endif
        return 0;
-
- out_unregister_pci:
-       pci_unregister_driver(&fcpci_driver);
- out:
-       return retval;
 }
 
 static void __exit hisax_fcpcipnp_exit(void)
 {
-#ifdef __ISAPNP__
+#ifdef CONFIG_PNP
        pnp_unregister_driver(&fcpnp_driver);
 #endif
        pci_unregister_driver(&fcpci_driver);