summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPeter Daifuku <pdaifuku@nvidia.com>2014-08-26 17:11:36 +0200
committerBjorn Helgaas <bhelgaas@google.com>2014-09-16 16:55:10 -0600
commit8d41794c6fc61ac2f09b5c25267e2c68748326cc (patch)
tree5204b146811b2600a9130a23317243d23301233a
parent0d20d6219216c5b37be8c82ee4a58d7f642e7cb0 (diff)
downloadlinux-8d41794c6fc61ac2f09b5c25267e2c68748326cc.tar.gz
PCI: tegra: Fix extended configuration space mapping
The 16 chunks of 64 KiB that need to be stitched together to make up the configuration space for one bus (1 MiB) are located 24 bits (== 16 MiB) apart in physical address space. This is determined by the start of the extended register field (bits 24-27) in the physical mapping. Tested-by: Stephen Warren <swarren@nvidia.com> Signed-off-by: Peter Daifuku <pdaifuku@nvidia.com> Signed-off-by: Thierry Reding <treding@nvidia.com> Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
-rw-r--r--drivers/pci/host/pci-tegra.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/drivers/pci/host/pci-tegra.c b/drivers/pci/host/pci-tegra.c
index 42241b5bdf02..6329be3d4695 100644
--- a/drivers/pci/host/pci-tegra.c
+++ b/drivers/pci/host/pci-tegra.c
@@ -383,7 +383,7 @@ static struct tegra_pcie_bus *tegra_pcie_bus_alloc(struct tegra_pcie *pcie,
for (i = 0; i < 16; i++) {
unsigned long virt = (unsigned long)bus->area->addr +
i * SZ_64K;
- phys_addr_t phys = cs + i * SZ_1M + busnr * SZ_64K;
+ phys_addr_t phys = cs + i * SZ_16M + busnr * SZ_64K;
err = ioremap_page_range(virt, virt + SZ_64K, phys, prot);
if (err < 0) {