aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBjorn Helgaas <bhelgaas@google.com>2012-02-23 22:19:00 -0500
committerBjorn Helgaas <bhelgaas@google.com>2012-02-23 22:19:00 -0500
commit36a66cd6fd0a70ac6848d740d9cf7a4360b5776a (patch)
tree7cc903ad9f63e9bd1065b6d722fb86f4196dceea
parent5bfa14ed9f3ca21fcecbcfbf4a848c002b740c41 (diff)
PCI: add generic pcibios_resource_to_bus()
This replaces the generic versions of pcibios_resource_to_bus() and pcibios_bus_to_resource() in asm-generic/pci.h with versions that use pci_resource_to_bus() and pci_bus_to_resource(). The replacements are equivalent except that they can apply host bridge window offsets when the arch has supplied them by using pci_add_resource_offset(). Each arch can convert to using pci_add_resource_offset() individually by removing its device resource fixups from pcibios_fixup_bus() and supplying ARCH_HAS_GENERIC_PCI_OFFSETS. ARCH_HAS_GENERIC_PCI_OFFSETS can be removed after all have converted. Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
-rw-r--r--drivers/pci/probe.c16
-rw-r--r--include/asm-generic/pci.h24
-rw-r--r--include/linux/pci.h4
3 files changed, 21 insertions, 23 deletions
diff --git a/drivers/pci/probe.c b/drivers/pci/probe.c
index 3539171d8a98..a677b1e995de 100644
--- a/drivers/pci/probe.c
+++ b/drivers/pci/probe.c
@@ -118,6 +118,22 @@ void pci_bus_to_resource(struct pci_dev *dev, struct resource *res,
118 res->end = region->end + offset; 118 res->end = region->end + offset;
119} 119}
120 120
121#ifdef ARCH_HAS_GENERIC_PCI_OFFSETS
122void pcibios_resource_to_bus(struct pci_dev *dev, struct pci_bus_region *region,
123 struct resource *res)
124{
125 pci_resource_to_bus(dev, region, res);
126}
127EXPORT_SYMBOL(pcibios_resource_to_bus);
128
129void pcibios_bus_to_resource(struct pci_dev *dev, struct resource *res,
130 struct pci_bus_region *region)
131{
132 pci_bus_to_resource(dev, res, region);
133}
134EXPORT_SYMBOL(pcibios_bus_to_resource);
135#endif
136
121/* 137/*
122 * PCI Bus Class 138 * PCI Bus Class
123 */ 139 */
diff --git a/include/asm-generic/pci.h b/include/asm-generic/pci.h
index 26373cff4546..0410346e2cf6 100644
--- a/include/asm-generic/pci.h
+++ b/include/asm-generic/pci.h
@@ -6,29 +6,7 @@
6#ifndef _ASM_GENERIC_PCI_H 6#ifndef _ASM_GENERIC_PCI_H
7#define _ASM_GENERIC_PCI_H 7#define _ASM_GENERIC_PCI_H
8 8
9/** 9#define ARCH_HAS_GENERIC_PCI_OFFSETS
10 * pcibios_resource_to_bus - convert resource to PCI bus address
11 * @dev: device which owns this resource
12 * @region: converted bus-centric region (start,end)
13 * @res: resource to convert
14 *
15 * Convert a resource to a PCI device bus address or bus window.
16 */
17static inline void
18pcibios_resource_to_bus(struct pci_dev *dev, struct pci_bus_region *region,
19 struct resource *res)
20{
21 region->start = res->start;
22 region->end = res->end;
23}
24
25static inline void
26pcibios_bus_to_resource(struct pci_dev *dev, struct resource *res,
27 struct pci_bus_region *region)
28{
29 res->start = region->start;
30 res->end = region->end;
31}
32 10
33static inline struct resource * 11static inline struct resource *
34pcibios_select_root(struct pci_dev *pdev, struct resource *res) 12pcibios_select_root(struct pci_dev *pdev, struct resource *res)
diff --git a/include/linux/pci.h b/include/linux/pci.h
index 419f78f96375..be58a51706cc 100644
--- a/include/linux/pci.h
+++ b/include/linux/pci.h
@@ -648,6 +648,10 @@ void pci_fixup_cardbus(struct pci_bus *);
648 648
649/* Generic PCI functions used internally */ 649/* Generic PCI functions used internally */
650 650
651void pcibios_resource_to_bus(struct pci_dev *dev, struct pci_bus_region *region,
652 struct resource *res);
653void pcibios_bus_to_resource(struct pci_dev *dev, struct resource *res,
654 struct pci_bus_region *region);
651void pcibios_scan_specific_bus(int busn); 655void pcibios_scan_specific_bus(int busn);
652extern struct pci_bus *pci_find_bus(int domain, int busnr); 656extern struct pci_bus *pci_find_bus(int domain, int busnr);
653void pci_bus_add_devices(const struct pci_bus *bus); 657void pci_bus_add_devices(const struct pci_bus *bus);