]> git.proxmox.com Git - mirror_ubuntu-artful-kernel.git/blobdiff - arch/powerpc/kernel/pci-common.c
Merge branch 'linux-next' of git://git.kernel.org/pub/scm/linux/kernel/git/jbarnes/pci
[mirror_ubuntu-artful-kernel.git] / arch / powerpc / kernel / pci-common.c
index d0373bcb7c9dcebd42e0b8baddf48c881b375018..8e78e93c818536b4a33a1ae29f10b3d157b29e63 100644 (file)
@@ -49,9 +49,6 @@ static int global_phb_number;         /* Global phb counter */
 /* ISA Memory physical address */
 resource_size_t isa_mem_base;
 
-/* Default PCI flags is 0 on ppc32, modified at boot on ppc64 */
-unsigned int pci_flags = 0;
-
 
 static struct dma_map_ops *pci_dma_ops = &dma_direct_ops;
 
@@ -834,60 +831,6 @@ int pci_proc_domain(struct pci_bus *bus)
        return 1;
 }
 
-void pcibios_resource_to_bus(struct pci_dev *dev, struct pci_bus_region *region,
-                            struct resource *res)
-{
-       resource_size_t offset = 0, mask = (resource_size_t)-1;
-       struct pci_controller *hose = pci_bus_to_host(dev->bus);
-
-       if (!hose)
-               return;
-       if (res->flags & IORESOURCE_IO) {
-               offset = (unsigned long)hose->io_base_virt - _IO_BASE;
-               mask = 0xffffffffu;
-       } else if (res->flags & IORESOURCE_MEM)
-               offset = hose->pci_mem_offset;
-
-       region->start = (res->start - offset) & mask;
-       region->end = (res->end - offset) & mask;
-}
-EXPORT_SYMBOL(pcibios_resource_to_bus);
-
-void pcibios_bus_to_resource(struct pci_dev *dev, struct resource *res,
-                            struct pci_bus_region *region)
-{
-       resource_size_t offset = 0, mask = (resource_size_t)-1;
-       struct pci_controller *hose = pci_bus_to_host(dev->bus);
-
-       if (!hose)
-               return;
-       if (res->flags & IORESOURCE_IO) {
-               offset = (unsigned long)hose->io_base_virt - _IO_BASE;
-               mask = 0xffffffffu;
-       } else if (res->flags & IORESOURCE_MEM)
-               offset = hose->pci_mem_offset;
-       res->start = (region->start + offset) & mask;
-       res->end = (region->end + offset) & mask;
-}
-EXPORT_SYMBOL(pcibios_bus_to_resource);
-
-/* Fixup a bus resource into a linux resource */
-static void __devinit fixup_resource(struct resource *res, struct pci_dev *dev)
-{
-       struct pci_controller *hose = pci_bus_to_host(dev->bus);
-       resource_size_t offset = 0, mask = (resource_size_t)-1;
-
-       if (res->flags & IORESOURCE_IO) {
-               offset = (unsigned long)hose->io_base_virt - _IO_BASE;
-               mask = 0xffffffffu;
-       } else if (res->flags & IORESOURCE_MEM)
-               offset = hose->pci_mem_offset;
-
-       res->start = (res->start + offset) & mask;
-       res->end = (res->end + offset) & mask;
-}
-
-
 /* This header fixup will do the resource fixup for all devices as they are
  * probed, but not for bridge ranges
  */
@@ -927,18 +870,11 @@ static void __devinit pcibios_fixup_resources(struct pci_dev *dev)
                        continue;
                }
 
-               pr_debug("PCI:%s Resource %d %016llx-%016llx [%x] fixup...\n",
+               pr_debug("PCI:%s Resource %d %016llx-%016llx [%x]\n",
                         pci_name(dev), i,
                         (unsigned long long)res->start,\
                         (unsigned long long)res->end,
                         (unsigned int)res->flags);
-
-               fixup_resource(res, dev);
-
-               pr_debug("PCI:%s            %016llx-%016llx\n",
-                        pci_name(dev),
-                        (unsigned long long)res->start,
-                        (unsigned long long)res->end);
        }
 
        /* Call machine specific resource fixup */
@@ -1040,27 +976,18 @@ static void __devinit pcibios_fixup_bridge(struct pci_bus *bus)
                        continue;
                }
 
-               pr_debug("PCI:%s Bus rsrc %d %016llx-%016llx [%x] fixup...\n",
+               pr_debug("PCI:%s Bus rsrc %d %016llx-%016llx [%x]\n",
                         pci_name(dev), i,
                         (unsigned long long)res->start,\
                         (unsigned long long)res->end,
                         (unsigned int)res->flags);
 
-               /* Perform fixup */
-               fixup_resource(res, dev);
-
                /* Try to detect uninitialized P2P bridge resources,
                 * and clear them out so they get re-assigned later
                 */
                if (pcibios_uninitialized_bridge_resource(bus, res)) {
                        res->flags = 0;
                        pr_debug("PCI:%s            (unassigned)\n", pci_name(dev));
-               } else {
-
-                       pr_debug("PCI:%s            %016llx-%016llx\n",
-                                pci_name(dev),
-                                (unsigned long long)res->start,
-                                (unsigned long long)res->end);
                }
        }
 }
@@ -1550,6 +1477,11 @@ int pcibios_enable_device(struct pci_dev *dev, int mask)
        return pci_enable_resources(dev, mask);
 }
 
+resource_size_t pcibios_io_space_offset(struct pci_controller *hose)
+{
+       return (unsigned long) hose->io_base_virt - _IO_BASE;
+}
+
 static void __devinit pcibios_setup_phb_resources(struct pci_controller *hose, struct list_head *resources)
 {
        struct resource *res;
@@ -1574,7 +1506,7 @@ static void __devinit pcibios_setup_phb_resources(struct pci_controller *hose, s
                 (unsigned long long)res->start,
                 (unsigned long long)res->end,
                 (unsigned long)res->flags);
-       pci_add_resource(resources, res);
+       pci_add_resource_offset(resources, res, pcibios_io_space_offset(hose));
 
        /* Hookup PHB Memory resources */
        for (i = 0; i < 3; ++i) {
@@ -1597,7 +1529,7 @@ static void __devinit pcibios_setup_phb_resources(struct pci_controller *hose, s
                         (unsigned long long)res->start,
                         (unsigned long long)res->end,
                         (unsigned long)res->flags);
-               pci_add_resource(resources, res);
+               pci_add_resource_offset(resources, res, hose->pci_mem_offset);
        }
 
        pr_debug("PCI: PHB MEM offset     = %016llx\n",