aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authoroftedal <oftedal@gmail.com>2013-10-18 16:28:29 -0400
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2014-04-26 20:15:36 -0400
commit3297037a222f69637a961f49b72daa6a755299db (patch)
tree84d39286fec8434d3c08c389e6be8bef6f8c0641
parentcc8ece834baaac84cffafad31dc25c1f73ef6add (diff)
sparc: PCI: Fix incorrect address calculation of PCI Bridge windows on Simba-bridges
[ Upstream commit 557fc5873ef178c4b3e1e36a42db547ecdc43f9b ] The SIMBA APB Bridges lacks the 'ranges' of-property describing the PCI I/O and memory areas located beneath the bridge. Faking this information has been performed by reading range registers in the APB bridge, and calculating the corresponding areas. In commit 01f94c4a6ced476ce69b895426fc29bfc48c69bd ("Fix sabre pci controllers with new probing scheme.") a bug was introduced into this calculation, causing the PCI memory areas to be calculated incorrectly: The shift size was set to be identical for I/O and MEM ranges, which is incorrect. This patch set the shift size of the MEM range back to the value used before 01f94c4a6ced476ce69b895426fc29bfc48c69bd. Signed-off-by: Kjetil Oftedal <oftedal@gmail.com> Signed-off-by: David S. Miller <davem@davemloft.net> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
-rw-r--r--arch/sparc/kernel/pci.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/arch/sparc/kernel/pci.c b/arch/sparc/kernel/pci.c
index baf4366e2d6a..906cbf0f8608 100644
--- a/arch/sparc/kernel/pci.c
+++ b/arch/sparc/kernel/pci.c
@@ -399,8 +399,8 @@ static void apb_fake_ranges(struct pci_dev *dev,
399 apb_calc_first_last(map, &first, &last); 399 apb_calc_first_last(map, &first, &last);
400 res = bus->resource[1]; 400 res = bus->resource[1];
401 res->flags = IORESOURCE_MEM; 401 res->flags = IORESOURCE_MEM;
402 region.start = (first << 21); 402 region.start = (first << 29);
403 region.end = (last << 21) + ((1 << 21) - 1); 403 region.end = (last << 29) + ((1 << 29) - 1);
404 pcibios_bus_to_resource(dev, res, &region); 404 pcibios_bus_to_resource(dev, res, &region);
405} 405}
406 406