]> git.neil.brown.name Git - history.git/commitdiff
ISDN: AVM CAPI drivers: Common revision parsing
authorKai Germaschewski <kai@tp1.ruhr-uni-bochum.de>
Sat, 11 May 2002 15:36:24 +0000 (10:36 -0500)
committerKai Germaschewski <kai@tp1.ruhr-uni-bochum.de>
Sat, 11 May 2002 15:36:24 +0000 (10:36 -0500)
Use common function for setting the revision strings.

drivers/isdn/hardware/avm/avmcard.h
drivers/isdn/hardware/avm/b1.c
drivers/isdn/hardware/avm/b1isa.c
drivers/isdn/hardware/avm/b1pci.c
drivers/isdn/hardware/avm/b1pcmcia.c
drivers/isdn/hardware/avm/c4.c
drivers/isdn/hardware/avm/t1isa.c
drivers/isdn/hardware/avm/t1pci.c

index e20442093c64d7ee631a399a6ab4b597a1e16e09..4acd1c3faead4aaf64c420877afa9e4c9b7cb7fa 100644 (file)
@@ -537,6 +537,7 @@ static inline void b1_setinterrupt(unsigned int base, unsigned irq,
 }
 
 /* b1.c */
+void b1_set_revision(struct capi_driver *driver, char *rev);
 avmcard *b1_alloc_card(int nr_controllers);
 void b1_free_card(avmcard *card);
 int b1_detect(unsigned int base, enum avmcardtype cardtype);
@@ -561,7 +562,6 @@ avmcard_dmainfo *avmcard_dma_alloc(char *name, struct pci_dev *,
                                   long rsize, long ssize);
 void avmcard_dma_free(avmcard_dmainfo *);
 
-
 /* b1dma.c */
 int b1pciv4_detect(avmcard *card);
 int t1pci_detect(avmcard *card);
index 060dcb96901dca9b3906a438fefd7976857d4cc1..d44b7fe37ff112f38c3300d7215af84acaea628e 100644 (file)
@@ -59,6 +59,21 @@ int b1_irq_table[16] =
 
 /* ------------------------------------------------------------- */    
 
+void b1_set_revision(struct capi_driver *driver, char *rev)
+{
+       char *p;
+
+       if ((p = strchr(rev, ':')) != 0 && p[1]) {
+               strncpy(driver->revision, p + 2, sizeof(driver->revision));
+               driver->revision[sizeof(driver->revision)-1] = 0;
+               if ((p = strchr(driver->revision, '$')) != 0 && p > driver->revision)
+                       *(p-1) = 0;
+       }
+       printk(KERN_INFO "%s: revision %s\n", driver->name, driver->revision);
+}
+
+/* ------------------------------------------------------------- */    
+
 avmcard *b1_alloc_card(int nr_controllers)
 {
        avmcard *card;
@@ -763,6 +778,7 @@ EXPORT_SYMBOL(avmcard_dma_free);
 
 EXPORT_SYMBOL(b1_irq_table);
 
+EXPORT_SYMBOL(b1_set_revision);
 EXPORT_SYMBOL(b1_alloc_card);
 EXPORT_SYMBOL(b1_free_card);
 EXPORT_SYMBOL(b1_detect);
index 9e6aff0478b15c2e4d894add5903ca84da4c3151..b650299d29c9b771740e2f1f6ca04ffea5b95bf6 100644 (file)
@@ -164,21 +164,11 @@ static struct capi_driver b1isa_driver = {
 
 static int __init b1isa_init(void)
 {
-       struct capi_driver *driver = &b1isa_driver;
-       char *p;
-
        MOD_INC_USE_COUNT;
 
-       if ((p = strchr(revision, ':')) != 0 && p[1]) {
-               strncpy(driver->revision, p + 2, sizeof(driver->revision));
-               driver->revision[sizeof(driver->revision)-1] = 0;
-               if ((p = strchr(driver->revision, '$')) != 0 && p > driver->revision)
-                       *(p-1) = 0;
-       }
-
-       printk(KERN_INFO "%s: revision %s\n", driver->name, driver->revision);
+       b1_set_revision(&b1isa_driver, revision);
+        attach_capi_driver(&b1isa_driver);
 
-        attach_capi_driver(driver);
        MOD_DEC_USE_COUNT;
        return 0;
 }
index 0e6a018fd7761ab6108ed89e6dff253b8ee80182..d8b91f09569e41a94ae2cca38bb03e56163bffd9 100644 (file)
@@ -390,38 +390,16 @@ static struct pci_driver b1pci_pci_driver = {
 
 static int __init b1pci_init(void)
 {
-       struct capi_driver *driver = &b1pci_driver;
-#ifdef CONFIG_ISDN_DRV_AVMB1_B1PCIV4
-       struct capi_driver *driverv4 = &b1pciv4_driver;
-#endif
-       char *p;
        int retval;
 
        MOD_INC_USE_COUNT;
 
-       if ((p = strchr(revision, ':')) != 0 && p[1]) {
-               strncpy(driver->revision, p + 2, sizeof(driver->revision));
-               driver->revision[sizeof(driver->revision)-1] = 0;
-               if ((p = strchr(driver->revision, '$')) != 0 && p > driver->revision)
-                       *(p-1) = 0;
-       }
-#ifdef CONFIG_ISDN_DRV_AVMB1_B1PCIV4
-       if ((p = strchr(revision, ':')) != 0 && p[1]) {
-               strncpy(driverv4->revision, p + 2, sizeof(driverv4->revision));
-               driverv4->revision[sizeof(driverv4->revision)-1] = 0;
-               if ((p = strchr(driverv4->revision, '$')) != 0 && p > driverv4->revision)
-                       *(p-1) = 0;
-       }
-#endif
-
-       printk(KERN_INFO "%s: revision %s\n", driver->name, driver->revision);
-
-        attach_capi_driver(driver);
+       b1_set_revision(&b1pci_driver, revision);
+        attach_capi_driver(&b1pci_driver);
 
 #ifdef CONFIG_ISDN_DRV_AVMB1_B1PCIV4
-       printk(KERN_INFO "%s: revision %s\n", driverv4->name, driverv4->revision);
-
-        attach_capi_driver(driverv4);
+       b1_set_revision(&b1pciv4_driver, revision);
+        attach_capi_driver(&b1pciv4_driver);
 #endif
 
        retval = pci_module_init(&b1pci_pci_driver);
@@ -429,23 +407,24 @@ static int __init b1pci_init(void)
                goto err;
 
        printk(KERN_INFO "%s: %d B1-PCI card(s) detected\n",
-              driver->name, retval);
+              b1pci_driver.name, retval);
        retval = 0;
        goto out;
 
  err:
-       detach_capi_driver(driver);
+       detach_capi_driver(&b1pci_driver);
 #ifdef CONFIG_ISDN_DRV_AVMB1_B1PCIV4
-       detach_capi_driver(driverv4);
+       detach_capi_driver(&b1pciv4_driver);
 #endif
  out:
        MOD_DEC_USE_COUNT;
-       return -ENODEV;
+       return retval;
 }
 
 static void __exit b1pci_exit(void)
 {
        pci_unregister_driver(&b1pci_pci_driver);
+
        detach_capi_driver(&b1pci_driver);
 #ifdef CONFIG_ISDN_DRV_AVMB1_B1PCIV4
        detach_capi_driver(&b1pciv4_driver);
index 3d13f3745411b551337e34236eb69a109647e944..f98957c723d6f508e8073724de4dda5dd3ca640c 100644 (file)
@@ -203,25 +203,13 @@ EXPORT_SYMBOL(b1pcmcia_delcard);
 
 static int __init b1pcmcia_init(void)
 {
-       struct capi_driver *driver = &b1pcmcia_driver;
-       char *p;
-       int retval = 0;
-
        MOD_INC_USE_COUNT;
 
-       if ((p = strchr(revision, ':')) != 0 && p[1]) {
-               strncpy(driver->revision, p + 2, sizeof(driver->revision));
-               driver->revision[sizeof(driver->revision)-1] = 0;
-               if ((p = strchr(driver->revision, '$')) != 0 && p > driver->revision)
-                       *(p-1) = 0;
-       }
-
-       printk(KERN_INFO "%s: revision %s\n", driver->name, driver->revision);
-
-        attach_capi_driver(driver);
+       b1_set_revision(&b1pcmcia_driver, revision);
+        attach_capi_driver(&b1pcmcia_driver);
 
        MOD_DEC_USE_COUNT;
-       return retval;
+       return 0;
 }
 
 static void __exit b1pcmcia_exit(void)
index 0323ee83e6c66963b3616d0c1860e7ba161caca2..f612eb040e5ce29eb5e1930a7be6b5cd12db7f79 100644 (file)
@@ -1245,21 +1245,6 @@ static struct capi_driver c4_driver = {
        add_card: 0, /* no add_card function */
 };
 
-static void c4_attach_driver (struct capi_driver * driver)
-{
-       char *p;
-       if ((p = strchr(revision, ':')) != 0 && p[1]) {
-               strncpy(driver->revision, p + 2, sizeof(driver->revision));
-               driver->revision[sizeof(driver->revision)-1] = 0;
-               if ((p = strchr(driver->revision, '$')) != 0 && p > driver->revision)
-                       *(p-1) = 0;
-       }
-
-       printk(KERN_INFO "%s: revision %s\n", driver->name, driver->revision);
-
-        attach_capi_driver(driver);
-}
-
 static int __devinit c4_probe(struct pci_dev *dev,
                              const struct pci_device_id *ent)
 {
@@ -1305,8 +1290,11 @@ static int __init c4_init(void)
 
        MOD_INC_USE_COUNT;
 
-       c4_attach_driver (&c4_driver);
-       c4_attach_driver (&c2_driver);
+       b1_set_revision(&c2_driver, revision);
+        attach_capi_driver(&c2_driver);
+
+       b1_set_revision(&c4_driver, revision);
+        attach_capi_driver(&c4_driver);
 
        retval = pci_module_init(&c4_pci_driver);
        if (retval < 0)
index 7730d241cea0fbc570e3232d04a5ea9ef01a9360..a170ad31ee53c72451b58caee8000c0d932d54ec 100644 (file)
@@ -516,30 +516,18 @@ static struct capi_driver t1isa_driver = {
 
 static int __init t1isa_init(void)
 {
-       struct capi_driver *driver = &t1isa_driver;
-       char *p;
-       int retval = 0;
-
        MOD_INC_USE_COUNT;
 
-       if ((p = strchr(revision, ':')) != 0 && p[1]) {
-               strncpy(driver->revision, p + 2, sizeof(driver->revision));
-               driver->revision[sizeof(driver->revision)-1] = 0;
-               if ((p = strchr(driver->revision, '$')) != 0 && p > driver->revision)
-                       *(p-1) = 0;
-       }
-
-       printk(KERN_INFO "%s: revision %s\n", driver->name, driver->revision);
-
-        attach_capi_driver(driver);
+       b1_set_revision(&t1isa_driver, revision);
+        attach_capi_driver(&t1isa_driver);
 
        MOD_DEC_USE_COUNT;
-       return retval;
+       return 0;
 }
 
 static void __exit t1isa_exit(void)
 {
-    detach_capi_driver(&t1isa_driver);
+       detach_capi_driver(&t1isa_driver);
 }
 
 module_init(t1isa_init);
index c4c125c5891685c19797e4bf8b60ad498653248b..31e1ae2b64305f494a8b84869bb3afc10c48b662 100644 (file)
@@ -239,20 +239,11 @@ static struct pci_driver t1pci_pci_driver = {
 
 static int __init t1pci_init(void)
 {
-       struct capi_driver *driver = &t1pci_driver;
-       char *p;
        int retval;
 
        MOD_INC_USE_COUNT;
 
-       if ((p = strchr(revision, ':')) != 0 && p[1]) {
-               strncpy(driver->revision, p + 2, sizeof(driver->revision) - 1);
-               if ((p = strchr(driver->revision, '$')) != 0 && p > driver->revision)
-                       *(p-1) = 0;
-       }
-
-       printk(KERN_INFO "%s: revision %s\n", driver->name, driver->revision);
-
+       b1_set_revision(&t1pci_driver, revision);
         attach_capi_driver(&t1pci_driver);
 
        retval = pci_register_driver(&t1pci_pci_driver);
@@ -260,7 +251,7 @@ static int __init t1pci_init(void)
                goto err;
 
        printk(KERN_INFO "%s: %d T1-PCI card(s) detected\n",
-              driver->name, retval);
+              t1pci_driver.name, retval);
        retval = 0;
        goto out;