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 commit01f94c4a6c
("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 before01f94c4a6c
. Signed-off-by: Kjetil Oftedal <oftedal@gmail.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
a7b9403f0e
commit
557fc5873e
|
@ -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, ®ion);
|
pcibios_bus_to_resource(dev, res, ®ion);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue