diff options
Diffstat (limited to 'arch/powerpc/kernel/pci-common.c')
-rw-r--r-- | arch/powerpc/kernel/pci-common.c | 24 |
1 files changed, 10 insertions, 14 deletions
diff --git a/arch/powerpc/kernel/pci-common.c b/arch/powerpc/kernel/pci-common.c index cadbed679fbb..2597f9545d8a 100644 --- a/arch/powerpc/kernel/pci-common.c +++ b/arch/powerpc/kernel/pci-common.c | |||
@@ -1047,10 +1047,8 @@ static void __devinit pcibios_fixup_bridge(struct pci_bus *bus) | |||
1047 | 1047 | ||
1048 | struct pci_dev *dev = bus->self; | 1048 | struct pci_dev *dev = bus->self; |
1049 | 1049 | ||
1050 | for (i = 0; i < PCI_BUS_NUM_RESOURCES; ++i) { | 1050 | pci_bus_for_each_resource(bus, res, i) { |
1051 | if ((res = bus->resource[i]) == NULL) | 1051 | if (!res || !res->flags) |
1052 | continue; | ||
1053 | if (!res->flags) | ||
1054 | continue; | 1052 | continue; |
1055 | if (i >= 3 && bus->self->transparent) | 1053 | if (i >= 3 && bus->self->transparent) |
1056 | continue; | 1054 | continue; |
@@ -1181,21 +1179,20 @@ static int skip_isa_ioresource_align(struct pci_dev *dev) | |||
1181 | * but we want to try to avoid allocating at 0x2900-0x2bff | 1179 | * but we want to try to avoid allocating at 0x2900-0x2bff |
1182 | * which might have be mirrored at 0x0100-0x03ff.. | 1180 | * which might have be mirrored at 0x0100-0x03ff.. |
1183 | */ | 1181 | */ |
1184 | void pcibios_align_resource(void *data, struct resource *res, | 1182 | resource_size_t pcibios_align_resource(void *data, const struct resource *res, |
1185 | resource_size_t size, resource_size_t align) | 1183 | resource_size_t size, resource_size_t align) |
1186 | { | 1184 | { |
1187 | struct pci_dev *dev = data; | 1185 | struct pci_dev *dev = data; |
1186 | resource_size_t start = res->start; | ||
1188 | 1187 | ||
1189 | if (res->flags & IORESOURCE_IO) { | 1188 | if (res->flags & IORESOURCE_IO) { |
1190 | resource_size_t start = res->start; | ||
1191 | |||
1192 | if (skip_isa_ioresource_align(dev)) | 1189 | if (skip_isa_ioresource_align(dev)) |
1193 | return; | 1190 | return start; |
1194 | if (start & 0x300) { | 1191 | if (start & 0x300) |
1195 | start = (start + 0x3ff) & ~0x3ff; | 1192 | start = (start + 0x3ff) & ~0x3ff; |
1196 | res->start = start; | ||
1197 | } | ||
1198 | } | 1193 | } |
1194 | |||
1195 | return start; | ||
1199 | } | 1196 | } |
1200 | EXPORT_SYMBOL(pcibios_align_resource); | 1197 | EXPORT_SYMBOL(pcibios_align_resource); |
1201 | 1198 | ||
@@ -1278,9 +1275,8 @@ void pcibios_allocate_bus_resources(struct pci_bus *bus) | |||
1278 | pr_debug("PCI: Allocating bus resources for %04x:%02x...\n", | 1275 | pr_debug("PCI: Allocating bus resources for %04x:%02x...\n", |
1279 | pci_domain_nr(bus), bus->number); | 1276 | pci_domain_nr(bus), bus->number); |
1280 | 1277 | ||
1281 | for (i = 0; i < PCI_BUS_NUM_RESOURCES; ++i) { | 1278 | pci_bus_for_each_resource(bus, res, i) { |
1282 | if ((res = bus->resource[i]) == NULL || !res->flags | 1279 | if (!res || !res->flags || res->start > res->end || res->parent) |
1283 | || res->start > res->end || res->parent) | ||
1284 | continue; | 1280 | continue; |
1285 | if (bus->parent == NULL) | 1281 | if (bus->parent == NULL) |
1286 | pr = (res->flags & IORESOURCE_IO) ? | 1282 | pr = (res->flags & IORESOURCE_IO) ? |