patch-2.4.4 linux/drivers/isdn/avmb1/t1pci.c
Next file: linux/drivers/isdn/eicon/eicon_idi.c
Previous file: linux/drivers/isdn/avmb1/capidrv.c
Back to the patch index
Back to the overall index
- Lines: 131
- Date:
Wed Apr 18 11:49:13 2001
- Orig file:
v2.4.3/linux/drivers/isdn/avmb1/t1pci.c
- Orig date:
Sun Mar 25 18:20:44 2001
diff -u --recursive --new-file v2.4.3/linux/drivers/isdn/avmb1/t1pci.c linux/drivers/isdn/avmb1/t1pci.c
@@ -124,7 +124,7 @@
di->detach_ctr(ctrl);
free_irq(card->irq, card);
- iounmap((void *) (((unsigned long) card->mbase) & PAGE_MASK));
+ iounmap(card->mbase);
release_region(card->port, AVMB1_PORTLEN);
ctrl->driverdata = 0;
kfree(card->ctrlinfo);
@@ -138,7 +138,6 @@
static int t1pci_add_card(struct capi_driver *driver, struct capicardparams *p)
{
- unsigned long base, page_offset;
avmcard *card;
avmctrl_info *cinfo;
int retval;
@@ -189,12 +188,8 @@
return -EBUSY;
}
- base = card->membase & PAGE_MASK;
- page_offset = card->membase - base;
- card->mbase = ioremap_nocache(base, page_offset + 64);
- if (card->mbase) {
- card->mbase += page_offset;
- } else {
+ card->mbase = ioremap_nocache(card->membase, 64);
+ if (!card->mbase) {
printk(KERN_NOTICE "%s: can't remap memory at 0x%lx\n",
driver->name, card->membase);
kfree(card->ctrlinfo);
@@ -213,7 +208,7 @@
else
printk(KERN_NOTICE "%s: card at 0x%x, but cabel not connected or T1 has no power (%d)\n",
driver->name, card->port, retval);
- iounmap((void *) (((unsigned long) card->mbase) & PAGE_MASK));
+ iounmap(card->mbase);
kfree(card->ctrlinfo);
kfree(card->dma);
kfree(card);
@@ -228,7 +223,7 @@
if (retval) {
printk(KERN_ERR "%s: unable to get IRQ %d.\n",
driver->name, card->irq);
- iounmap((void *) (((unsigned long) card->mbase) & PAGE_MASK));
+ iounmap(card->mbase);
release_region(card->port, AVMB1_PORTLEN);
kfree(card->ctrlinfo);
kfree(card->dma);
@@ -240,7 +235,7 @@
cinfo->capi_ctrl = di->attach_ctr(driver, card->name, cinfo);
if (!cinfo->capi_ctrl) {
printk(KERN_ERR "%s: attach controller failed.\n", driver->name);
- iounmap((void *) (((unsigned long) card->mbase) & PAGE_MASK));
+ iounmap(card->mbase);
free_irq(card->irq, card);
release_region(card->port, AVMB1_PORTLEN);
kfree(card->ctrlinfo);
@@ -318,7 +313,6 @@
printk(KERN_INFO "%s: revision %s\n", driver->name, driver->revision);
di = attach_capi_driver(driver);
-
if (!di) {
printk(KERN_ERR "%s: failed to attach capi_driver\n",
driver->name);
@@ -326,31 +320,20 @@
return -EIO;
}
-#ifdef CONFIG_PCI
- if (!pci_present()) {
- printk(KERN_ERR "%s: no PCI bus present\n", driver->name);
- detach_capi_driver(driver);
- MOD_DEC_USE_COUNT;
- return -EIO;
- }
-
while ((dev = pci_find_device(PCI_VENDOR_ID_AVM, PCI_DEVICE_ID_AVM_T1, dev))) {
struct capicardparams param;
+ if (pci_enable_device(dev) < 0) {
+ printk(KERN_ERR "%s: failed to enable AVM-T1-PCI\n",
+ driver->name);
+ continue;
+ }
+ pci_set_master(dev);
+
param.port = pci_resource_start(dev, 1);
param.irq = dev->irq;
param.membase = pci_resource_start(dev, 0);
- retval = pci_enable_device (dev);
- if (retval != 0) {
- printk(KERN_ERR
- "%s: failed to enable AVM-T1-PCI at i/o %#x, irq %d, mem %#x err=%d\n",
- driver->name, param.port, param.irq, param.membase, retval);
- detach_capi_driver(&t1pci_driver);
- MOD_DEC_USE_COUNT;
- return -EIO;
- }
-
printk(KERN_INFO
"%s: PCI BIOS reports AVM-T1-PCI at i/o %#x, irq %d, mem %#x\n",
driver->name, param.port, param.irq, param.membase);
@@ -359,9 +342,7 @@
printk(KERN_ERR
"%s: no AVM-T1-PCI at i/o %#x, irq %d detected, mem %#x\n",
driver->name, param.port, param.irq, param.membase);
- detach_capi_driver(&t1pci_driver);
- MOD_DEC_USE_COUNT;
- return retval;
+ continue;
}
ncards++;
}
@@ -374,12 +355,7 @@
printk(KERN_ERR "%s: NO T1-PCI card detected\n", driver->name);
detach_capi_driver(&t1pci_driver);
MOD_DEC_USE_COUNT;
- return -ESRCH;
-#else
- printk(KERN_ERR "%s: kernel not compiled with PCI.\n", driver->name);
- MOD_DEC_USE_COUNT;
- return -EIO;
-#endif
+ return -ENODEV;
}
static void __exit t1pci_exit(void)
FUNET's LINUX-ADM group, linux-adm@nic.funet.fi
TCL-scripts by Sam Shen (who was at: slshen@lbl.gov)