summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--drivers/message/i2o/iop.c16
1 files changed, 6 insertions, 10 deletions
diff --git a/drivers/message/i2o/iop.c b/drivers/message/i2o/iop.c
index bd971b1b88e3..92752fb5b2d3 100644
--- a/drivers/message/i2o/iop.c
+++ b/drivers/message/i2o/iop.c
@@ -655,8 +655,8 @@ static int i2o_iop_activate(struct i2o_controller *c)
static void i2o_res_alloc(struct i2o_controller *c, unsigned long flags)
{
i2o_status_block *sb = c->status_block.virt;
- struct resource *root, *res = &c->mem_resource;
- resource_size_t size, min, max, align;
+ struct resource *res = &c->mem_resource;
+ resource_size_t size, align;
int err;
res->name = c->pdev->bus->name;
@@ -664,21 +664,17 @@ static void i2o_res_alloc(struct i2o_controller *c, unsigned long flags)
res->start = 0;
res->end = 0;
osm_info("%s: requires private memory resources.\n", c->name);
- root = pci_find_parent_resource(c->pdev, res);
- if (root == NULL) {
- osm_warn("%s: Can't find parent resource!\n", c->name);
- return;
- }
if (flags & IORESOURCE_MEM) {
- size = min = max = sb->desired_mem_size;
+ size = sb->desired_mem_size;
align = 1 << 20; /* unspecified, use 1Mb and play safe */
} else {
- size = min = max = sb->desired_io_size;
+ size = sb->desired_io_size;
align = 1 << 12; /* unspecified, use 4Kb and play safe */
}
- err = allocate_resource(root, res, size, min, max, align, NULL, NULL);
+ err = pci_bus_alloc_resource(c->pdev->bus, res, size, align, 0, 0,
+ NULL, NULL);
if (err < 0)
return;