fedora core 6 1.2949 + vserver 2.2.0
[linux-2.6.git] / drivers / isdn / hisax / avm_pci.c
index d7ba32f..b04a178 100644 (file)
@@ -12,7 +12,6 @@
  *
  */
 
-#include <linux/config.h>
 #include <linux/init.h>
 #include "hisax.h"
 #include "isac.h"
@@ -172,7 +171,7 @@ struct BCState *Sel_BCS(struct IsdnCardState *cs, int channel)
                return(NULL);
 }
 
-void
+static void
 write_ctrl(struct BCState *bcs, int which) {
 
        if (bcs->cs->debug & L1_DEB_HSCX)
@@ -193,7 +192,7 @@ write_ctrl(struct BCState *bcs, int which) {
        }
 }
 
-void
+static void
 modehdlc(struct BCState *bcs, int mode, int bc)
 {
        struct IsdnCardState *cs = bcs->cs;
@@ -358,7 +357,7 @@ hdlc_fill_fifo(struct BCState *bcs)
        }
 }
 
-static inline void
+static void
 HDLC_irq(struct BCState *bcs, u_int stat) {
        int len;
        struct sk_buff *skb;
@@ -451,7 +450,7 @@ HDLC_irq(struct BCState *bcs, u_int stat) {
        }
 }
 
-inline void
+static inline void
 HDLC_irq_main(struct IsdnCardState *cs)
 {
        u_int stat;
@@ -487,7 +486,7 @@ HDLC_irq_main(struct IsdnCardState *cs)
        }
 }
 
-void
+static void
 hdlc_l2l1(struct PStack *st, int pr, void *arg)
 {
        struct BCState *bcs = st->l1.bcs;
@@ -547,19 +546,15 @@ hdlc_l2l1(struct PStack *st, int pr, void *arg)
        }
 }
 
-void
+static void
 close_hdlcstate(struct BCState *bcs)
 {
        modehdlc(bcs, 0, 0);
        if (test_and_clear_bit(BC_FLG_INIT, &bcs->Flag)) {
-               if (bcs->hw.hdlc.rcvbuf) {
-                       kfree(bcs->hw.hdlc.rcvbuf);
-                       bcs->hw.hdlc.rcvbuf = NULL;
-               }
-               if (bcs->blog) {
-                       kfree(bcs->blog);
-                       bcs->blog = NULL;
-               }
+               kfree(bcs->hw.hdlc.rcvbuf);
+               bcs->hw.hdlc.rcvbuf = NULL;
+               kfree(bcs->blog);
+               bcs->blog = NULL;
                skb_queue_purge(&bcs->rqueue);
                skb_queue_purge(&bcs->squeue);
                if (bcs->tx_skb) {
@@ -570,7 +565,7 @@ close_hdlcstate(struct BCState *bcs)
        }
 }
 
-int
+static int
 open_hdlcstate(struct IsdnCardState *cs, struct BCState *bcs)
 {
        if (!test_and_set_bit(BC_FLG_INIT, &bcs->Flag)) {
@@ -598,7 +593,7 @@ open_hdlcstate(struct IsdnCardState *cs, struct BCState *bcs)
        return (0);
 }
 
-int
+static int
 setstack_hdlc(struct PStack *st, struct BCState *bcs)
 {
        bcs->channel = st->l1.bc;
@@ -612,6 +607,7 @@ setstack_hdlc(struct PStack *st, struct BCState *bcs)
        return (0);
 }
 
+#if 0
 void __init
 clear_pending_hdlc_ints(struct IsdnCardState *cs)
 {
@@ -641,8 +637,9 @@ clear_pending_hdlc_ints(struct IsdnCardState *cs)
                debugl1(cs, "HDLC 2 VIN %x", val);
        }
 }
+#endif  /*  0  */
 
-void __init
+static void
 inithdlc(struct IsdnCardState *cs)
 {
        cs->bcs[0].BC_SetStack = setstack_hdlc;
@@ -654,7 +651,7 @@ inithdlc(struct IsdnCardState *cs)
 }
 
 static irqreturn_t
-avm_pcipnp_interrupt(int intno, void *dev_id, struct pt_regs *regs)
+avm_pcipnp_interrupt(int intno, void *dev_id)
 {
        struct IsdnCardState *cs = dev_id;
        u_long flags;
@@ -729,12 +726,14 @@ AVM_card_msg(struct IsdnCardState *cs, int mt, void *arg)
        return(0);
 }
 
-static struct pci_dev *dev_avm __initdata = NULL;
+#ifdef CONFIG_PCI
+static struct pci_dev *dev_avm __devinitdata = NULL;
+#endif
 #ifdef __ISAPNP__
-static struct pnp_card *pnp_avm_c __initdata = NULL;
+static struct pnp_card *pnp_avm_c __devinitdata = NULL;
 #endif
 
-int __init
+int __devinit
 setup_avm_pcipnp(struct IsdnCard *card)
 {
        u_int val, ver;
@@ -750,70 +749,70 @@ setup_avm_pcipnp(struct IsdnCard *card)
                cs->hw.avm.cfg_reg = card->para[1];
                cs->irq = card->para[0];
                cs->subtyp = AVM_FRITZ_PNP;
-       } else {
+               goto ready;
+       }
 #ifdef __ISAPNP__
-               if (isapnp_present()) {
-                       struct pnp_dev *pnp_avm_d = NULL;
-                       if ((pnp_avm_c = pnp_find_card(
+       if (isapnp_present()) {
+               struct pnp_dev *pnp_avm_d = NULL;
+               if ((pnp_avm_c = pnp_find_card(
+                       ISAPNP_VENDOR('A', 'V', 'M'),
+                       ISAPNP_FUNCTION(0x0900), pnp_avm_c))) {
+                       if ((pnp_avm_d = pnp_find_dev(pnp_avm_c,
                                ISAPNP_VENDOR('A', 'V', 'M'),
-                               ISAPNP_FUNCTION(0x0900), pnp_avm_c))) {
-                               if ((pnp_avm_d = pnp_find_dev(pnp_avm_c,
-                                       ISAPNP_VENDOR('A', 'V', 'M'),
-                                       ISAPNP_FUNCTION(0x0900), pnp_avm_d))) {
-                                       int err;
-
-                                       pnp_disable_dev(pnp_avm_d);
-                                       err = pnp_activate_dev(pnp_avm_d);
-                                       if (err<0) {
-                                               printk(KERN_WARNING "%s: pnp_activate_dev ret(%d)\n",
-                                                       __FUNCTION__, err);
-                                               return(0);
-                                       }
-                                       cs->hw.avm.cfg_reg =
-                                               pnp_port_start(pnp_avm_d, 0);
-                                       cs->irq = pnp_irq(pnp_avm_d, 0);
-                                       if (!cs->irq) {
-                                               printk(KERN_ERR "FritzPnP:No IRQ\n");
-                                               return(0);
-                                       }
-                                       if (!cs->hw.avm.cfg_reg) {
-                                               printk(KERN_ERR "FritzPnP:No IO address\n");
-                                               return(0);
-                                       }
-                                       cs->subtyp = AVM_FRITZ_PNP;
-                                       goto ready;
+                               ISAPNP_FUNCTION(0x0900), pnp_avm_d))) {
+                               int err;
+
+                               pnp_disable_dev(pnp_avm_d);
+                               err = pnp_activate_dev(pnp_avm_d);
+                               if (err<0) {
+                                       printk(KERN_WARNING "%s: pnp_activate_dev ret(%d)\n",
+                                               __FUNCTION__, err);
+                                       return(0);
+                               }
+                               cs->hw.avm.cfg_reg =
+                                       pnp_port_start(pnp_avm_d, 0);
+                               cs->irq = pnp_irq(pnp_avm_d, 0);
+                               if (!cs->irq) {
+                                       printk(KERN_ERR "FritzPnP:No IRQ\n");
+                                       return(0);
                                }
+                               if (!cs->hw.avm.cfg_reg) {
+                                       printk(KERN_ERR "FritzPnP:No IO address\n");
+                                       return(0);
+                               }
+                               cs->subtyp = AVM_FRITZ_PNP;
+                               goto ready;
                        }
-               } else {
-                       printk(KERN_INFO "FritzPnP: no ISA PnP present\n");
                }
+       } else {
+               printk(KERN_INFO "FritzPnP: no ISA PnP present\n");
+       }
 #endif
-#if CONFIG_PCI
-               if ((dev_avm = pci_find_device(PCI_VENDOR_ID_AVM,
-                       PCI_DEVICE_ID_AVM_A1,  dev_avm))) {
-                       cs->irq = dev_avm->irq;
-                       if (!cs->irq) {
-                               printk(KERN_ERR "FritzPCI: No IRQ for PCI card found\n");
-                               return(0);
-                       }
-                       if (pci_enable_device(dev_avm))
-                               return(0);
-                       cs->hw.avm.cfg_reg = pci_resource_start(dev_avm, 1);
-                       if (!cs->hw.avm.cfg_reg) {
-                               printk(KERN_ERR "FritzPCI: No IO-Adr for PCI card found\n");
-                               return(0);
-                       }
-                       cs->subtyp = AVM_FRITZ_PCI;
-               } else {
-                       printk(KERN_WARNING "FritzPCI: No PCI card found\n");
+#ifdef CONFIG_PCI
+       if ((dev_avm = pci_find_device(PCI_VENDOR_ID_AVM,
+               PCI_DEVICE_ID_AVM_A1,  dev_avm))) {
+               if (pci_enable_device(dev_avm))
+                       return(0);
+               cs->irq = dev_avm->irq;
+               if (!cs->irq) {
+                       printk(KERN_ERR "FritzPCI: No IRQ for PCI card found\n");
                        return(0);
                }
-               cs->irq_flags |= SA_SHIRQ;
+               cs->hw.avm.cfg_reg = pci_resource_start(dev_avm, 1);
+               if (!cs->hw.avm.cfg_reg) {
+                       printk(KERN_ERR "FritzPCI: No IO-Adr for PCI card found\n");
+                       return(0);
+               }
+               cs->subtyp = AVM_FRITZ_PCI;
+       } else {
+               printk(KERN_WARNING "FritzPCI: No PCI card found\n");
+               return(0);
+       }
+       cs->irq_flags |= IRQF_SHARED;
 #else
-               printk(KERN_WARNING "FritzPCI: NO_PCI_BIOS\n");
-               return (0);
+       printk(KERN_WARNING "FritzPCI: NO_PCI_BIOS\n");
+       return (0);
 #endif /* CONFIG_PCI */
-       }
 ready:
        cs->hw.avm.isac = cs->hw.avm.cfg_reg + 0x10;
        if (!request_region(cs->hw.avm.cfg_reg, 32,