summaryrefslogtreecommitdiff
path: root/src/devices/chip.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/devices/chip.c')
-rw-r--r--src/devices/chip.c11
1 files changed, 11 insertions, 0 deletions
diff --git a/src/devices/chip.c b/src/devices/chip.c
index c9e1ac5643..d8a59e3062 100644
--- a/src/devices/chip.c
+++ b/src/devices/chip.c
@@ -80,6 +80,7 @@ void chip_enumerate(struct chip *chip)
link += 1;
}
if (dev) {
+ struct chip_resource *res, *res_limit;
printk_spew("path (%p) %s %s", dev, dev_path(dev), identical_paths?"identical":"");
printk_spew(" parent: (%p) %s\n",dev->bus->dev, dev_path(dev->bus->dev));
dev->chip = chip;
@@ -90,6 +91,16 @@ void chip_enumerate(struct chip *chip)
child->bus = &dev->link[link];
}
}
+ res = &chip->path[i].resource[0];
+ res_limit = &chip->path[i].resource[MAX_RESOURCES];
+ for(; res < res_limit; res++) {
+ if (res->flags) {
+ struct resource *resource;
+ resource = get_resource(dev, res->index);
+ resource->flags = res->flags | IORESOURCE_FIXED | IORESOURCE_ASSIGNED;
+ resource->base = res->base;
+ }
+ }
}
if (dev && !chip->dev) {
chip->dev = dev;