diff options
| author | 2005-08-14 23:10:00 -0400 | |
|---|---|---|
| committer | 2005-08-14 23:10:00 -0400 | |
| commit | 4c0e176dd5e4c44dd60f398518f75eedbe1a65f3 (patch) | |
| tree | 07aea7539f78f221c6fc535a94a07befa2afdb63 /drivers/message/i2o/pci.c | |
| parent | [PATCH] ieee80211: Fix frame control pver mask (diff) | |
| parent | Revert PCIBIOS_MIN_IO changes for 2.6.13 (diff) | |
| download | linux-dev-4c0e176dd5e4c44dd60f398518f75eedbe1a65f3.tar.xz linux-dev-4c0e176dd5e4c44dd60f398518f75eedbe1a65f3.zip | |
Merge /spare/repo/linux-2.6/
Diffstat (limited to 'drivers/message/i2o/pci.c')
| -rw-r--r-- | drivers/message/i2o/pci.c | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/drivers/message/i2o/pci.c b/drivers/message/i2o/pci.c index 7a60fd7be8ad..66c03e882570 100644 --- a/drivers/message/i2o/pci.c +++ b/drivers/message/i2o/pci.c @@ -32,6 +32,8 @@ #include <linux/i2o.h> #include "core.h" +#define OSM_DESCRIPTION "I2O-subsystem" + /* PCI device id table for all I2O controllers */ static struct pci_device_id __devinitdata i2o_pci_ids[] = { {PCI_DEVICE_CLASS(PCI_CLASS_INTELLIGENT_I2O << 8, 0xffff00)}, @@ -66,6 +68,8 @@ static void i2o_pci_free(struct i2o_controller *c) if (c->base.virt) iounmap(c->base.virt); + + pci_release_regions(c->pdev); } /** @@ -84,6 +88,11 @@ static int __devinit i2o_pci_alloc(struct i2o_controller *c) struct device *dev = &pdev->dev; int i; + if (pci_request_regions(pdev, OSM_DESCRIPTION)) { + printk(KERN_ERR "%s: device already claimed\n", c->name); + return -ENODEV; + } + for (i = 0; i < 6; i++) { /* Skip I/O spaces */ if (!(pci_resource_flags(pdev, i) & IORESOURCE_IO)) { @@ -138,6 +147,7 @@ static int __devinit i2o_pci_alloc(struct i2o_controller *c) c->base.virt = ioremap_nocache(c->base.phys, c->base.len); if (!c->base.virt) { printk(KERN_ERR "%s: Unable to map controller.\n", c->name); + i2o_pci_free(c); return -ENOMEM; } |
