Commit 557fc587 authored by oftedal's avatar oftedal Committed by David S. Miller

sparc: PCI: Fix incorrect address calculation of PCI Bridge windows on Simba-bridges

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 01f94c4a
("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 01f94c4a.
Signed-off-by: default avatarKjetil Oftedal <oftedal@gmail.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent a7b9403f
...@@ -398,8 +398,8 @@ static void apb_fake_ranges(struct pci_dev *dev, ...@@ -398,8 +398,8 @@ static void apb_fake_ranges(struct pci_dev *dev,
apb_calc_first_last(map, &first, &last); apb_calc_first_last(map, &first, &last);
res = bus->resource[1]; res = bus->resource[1];
res->flags = IORESOURCE_MEM; res->flags = IORESOURCE_MEM;
region.start = (first << 21); region.start = (first << 29);
region.end = (last << 21) + ((1 << 21) - 1); region.end = (last << 29) + ((1 << 29) - 1);
pcibios_bus_to_resource(dev, res, &region); pcibios_bus_to_resource(dev, res, &region);
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment