patch-2.2.15 linux/drivers/isdn/avmb1/b1isa.c
Next file: linux/drivers/isdn/avmb1/b1pci.c
Previous file: linux/drivers/isdn/avmb1/b1dma.c
Back to the patch index
Back to the overall index
- Lines: 148
- Date:
Fri Apr 21 12:46:07 2000
- Orig file:
v2.2.14/drivers/isdn/avmb1/b1isa.c
- Orig date:
Tue Jan 4 21:18:46 2000
diff -u --new-file --recursive --exclude-from ../../exclude v2.2.14/drivers/isdn/avmb1/b1isa.c linux/drivers/isdn/avmb1/b1isa.c
@@ -1,11 +1,19 @@
/*
- * $Id: b1isa.c,v 1.5 1999/11/05 16:38:01 calle Exp $
+ * $Id: b1isa.c,v 1.7 2000/02/02 18:36:03 calle Exp $
*
* Module for AVM B1 ISA-card.
*
* (c) Copyright 1999 by Carsten Paeth (calle@calle.in-berlin.de)
*
* $Log: b1isa.c,v $
+ * Revision 1.7 2000/02/02 18:36:03 calle
+ * - Modules are now locked while init_module is running
+ * - fixed problem with memory mapping if address is not aligned
+ *
+ * Revision 1.6 2000/01/25 14:37:39 calle
+ * new message after successfull detection including card revision and
+ * used resources.
+ *
* Revision 1.5 1999/11/05 16:38:01 calle
* Cleanups before kernel 2.4:
* - Changed all messages to use card->name or driver->name instead of
@@ -61,7 +69,7 @@
#include "capilli.h"
#include "avmcard.h"
-static char *revision = "$Revision: 1.5 $";
+static char *revision = "$Revision: 1.7 $";
/* ------------------------------------------------------------- */
@@ -69,10 +77,6 @@
/* ------------------------------------------------------------- */
-static struct capi_driver_interface *di;
-
-/* ------------------------------------------------------------- */
-
static void b1isa_interrupt(int interrupt, void *devptr, struct pt_regs *regs)
{
avmcard *card;
@@ -96,6 +100,10 @@
}
/* ------------------------------------------------------------- */
+static struct capi_driver_interface *di;
+
+/* ------------------------------------------------------------- */
+
static void b1isa_remove_ctr(struct capi_ctr *ctrl)
{
avmctrl_info *cinfo = (avmctrl_info *)(ctrl->driverdata);
@@ -122,10 +130,13 @@
avmcard *card;
int retval;
+ MOD_INC_USE_COUNT;
+
card = (avmcard *) kmalloc(sizeof(avmcard), GFP_ATOMIC);
if (!card) {
printk(KERN_WARNING "b1isa: no memory.\n");
+ MOD_DEC_USE_COUNT;
return -ENOMEM;
}
memset(card, 0, sizeof(avmcard));
@@ -133,6 +144,7 @@
if (!cinfo) {
printk(KERN_WARNING "b1isa: no memory.\n");
kfree(card);
+ MOD_DEC_USE_COUNT;
return -ENOMEM;
}
memset(cinfo, 0, sizeof(avmctrl_info));
@@ -149,12 +161,14 @@
card->port, card->port + AVMB1_PORTLEN);
kfree(card->ctrlinfo);
kfree(card);
+ MOD_DEC_USE_COUNT;
return -EBUSY;
}
if (b1_irq_table[card->irq & 0xf] == 0) {
printk(KERN_WARNING "b1isa: irq %d not valid.\n", card->irq);
kfree(card->ctrlinfo);
kfree(card);
+ MOD_DEC_USE_COUNT;
return -EINVAL;
}
if ( card->port != 0x150 && card->port != 0x250
@@ -162,6 +176,7 @@
printk(KERN_WARNING "b1isa: illegal port 0x%x.\n", card->port);
kfree(card->ctrlinfo);
kfree(card);
+ MOD_DEC_USE_COUNT;
return -EINVAL;
}
b1_reset(card->port);
@@ -170,9 +185,11 @@
card->port, retval);
kfree(card->ctrlinfo);
kfree(card);
+ MOD_DEC_USE_COUNT;
return -EIO;
}
b1_reset(card->port);
+ b1_getrevision(card);
request_region(p->port, AVMB1_PORTLEN, card->name);
@@ -182,6 +199,7 @@
release_region(card->port, AVMB1_PORTLEN);
kfree(card->ctrlinfo);
kfree(card);
+ MOD_DEC_USE_COUNT;
return -EBUSY;
}
@@ -192,10 +210,14 @@
release_region(card->port, AVMB1_PORTLEN);
kfree(card->ctrlinfo);
kfree(card);
+ MOD_DEC_USE_COUNT;
return -EBUSY;
}
- MOD_INC_USE_COUNT;
+ printk(KERN_INFO
+ "%s: AVM B1 ISA at i/o %#x, irq %d, revision %d\n",
+ driver->name, card->port, card->irq, card->revision);
+
return 0;
}
@@ -205,11 +227,12 @@
if (!cinfo)
return "";
- sprintf(cinfo->infobuf, "%s %s 0x%x %d",
+ sprintf(cinfo->infobuf, "%s %s 0x%x %d r%d",
cinfo->cardname[0] ? cinfo->cardname : "-",
cinfo->version[VER_DRIVER] ? cinfo->version[VER_DRIVER] : "-",
cinfo->card ? cinfo->card->port : 0x0,
- cinfo->card ? cinfo->card->irq : 0
+ cinfo->card ? cinfo->card->irq : 0,
+ cinfo->card ? cinfo->card->revision : 0
);
return cinfo->infobuf;
}
FUNET's LINUX-ADM group, linux-adm@nic.funet.fi
TCL-scripts by Sam Shen (who was at: slshen@lbl.gov)