diff options
-rw-r--r-- | arch/sparc/kernel/pci.c | 24 |
1 files changed, 23 insertions, 1 deletions
diff --git a/arch/sparc/kernel/pci.c b/arch/sparc/kernel/pci.c index 539babf00bb2..da24fb6deb03 100644 --- a/arch/sparc/kernel/pci.c +++ b/arch/sparc/kernel/pci.c | |||
@@ -432,6 +432,11 @@ static void of_scan_pci_bridge(struct pci_pbm_info *pbm, | |||
432 | node->full_name); | 432 | node->full_name); |
433 | return; | 433 | return; |
434 | } | 434 | } |
435 | |||
436 | if (ofpci_verbose) | ||
437 | printk(" Bridge bus range [%u --> %u]\n", | ||
438 | busrange[0], busrange[1]); | ||
439 | |||
435 | ranges = of_get_property(node, "ranges", &len); | 440 | ranges = of_get_property(node, "ranges", &len); |
436 | simba = 0; | 441 | simba = 0; |
437 | if (ranges == NULL) { | 442 | if (ranges == NULL) { |
@@ -451,6 +456,10 @@ static void of_scan_pci_bridge(struct pci_pbm_info *pbm, | |||
451 | pci_bus_insert_busn_res(bus, busrange[0], busrange[1]); | 456 | pci_bus_insert_busn_res(bus, busrange[0], busrange[1]); |
452 | bus->bridge_ctl = 0; | 457 | bus->bridge_ctl = 0; |
453 | 458 | ||
459 | if (ofpci_verbose) | ||
460 | printk(" Bridge ranges[%p] simba[%d]\n", | ||
461 | ranges, simba); | ||
462 | |||
454 | /* parse ranges property, or cook one up by hand for Simba */ | 463 | /* parse ranges property, or cook one up by hand for Simba */ |
455 | /* PCI #address-cells == 3 and #size-cells == 2 always */ | 464 | /* PCI #address-cells == 3 and #size-cells == 2 always */ |
456 | res = &dev->resource[PCI_BRIDGE_RESOURCES]; | 465 | res = &dev->resource[PCI_BRIDGE_RESOURCES]; |
@@ -468,6 +477,14 @@ static void of_scan_pci_bridge(struct pci_pbm_info *pbm, | |||
468 | } | 477 | } |
469 | i = 1; | 478 | i = 1; |
470 | for (; len >= 32; len -= 32, ranges += 8) { | 479 | for (; len >= 32; len -= 32, ranges += 8) { |
480 | u64 start; | ||
481 | |||
482 | if (ofpci_verbose) | ||
483 | printk(" RAW Range[%08x:%08x:%08x:%08x:%08x:%08x:" | ||
484 | "%08x:%08x]\n", | ||
485 | ranges[0], ranges[1], ranges[2], ranges[3], | ||
486 | ranges[4], ranges[5], ranges[6], ranges[7]); | ||
487 | |||
471 | flags = pci_parse_of_flags(ranges[0]); | 488 | flags = pci_parse_of_flags(ranges[0]); |
472 | size = GET_64BIT(ranges, 6); | 489 | size = GET_64BIT(ranges, 6); |
473 | if (flags == 0 || size == 0) | 490 | if (flags == 0 || size == 0) |
@@ -490,8 +507,13 @@ static void of_scan_pci_bridge(struct pci_pbm_info *pbm, | |||
490 | } | 507 | } |
491 | 508 | ||
492 | res->flags = flags; | 509 | res->flags = flags; |
493 | region.start = GET_64BIT(ranges, 1); | 510 | region.start = start = GET_64BIT(ranges, 1); |
494 | region.end = region.start + size - 1; | 511 | region.end = region.start + size - 1; |
512 | |||
513 | if (ofpci_verbose) | ||
514 | printk(" Using flags[%08x] start[%016llx] size[%016llx]\n", | ||
515 | flags, start, size); | ||
516 | |||
495 | pcibios_bus_to_resource(dev->bus, res, ®ion); | 517 | pcibios_bus_to_resource(dev->bus, res, ®ion); |
496 | } | 518 | } |
497 | after_ranges: | 519 | after_ranges: |