linux/drivers/pci/host
Thierry Reding 5106787a9e PCI: tegra: Use physical range for I/O mapping
Commit 0b0b0893d4 ("of/pci: Fix the conversion of IO ranges into IO
resources") changed how I/O resources are parsed from DT.  Rather than
containing the physical address of the I/O region, the addresses will now
be in I/O address space.

On Tegra the union of all ranges is used to expose a top-level memory-
mapped resource for the PCI host bridge.  This helps to make /proc/iomem
more readable.

Combining both of the above, the union would now include the I/O space
region.  This causes a regression on Tegra20, where the physical base
address of the PCIe controller (and therefore of the union) is located at
physical address 0x80000000.  Since I/O space starts at 0, the union will
now include all of system RAM which starts at 0x00000000.

This commit fixes this by keeping two copies of the I/O range: one that
represents the range in the CPU's physical address space, the other for the
range in the I/O address space.  This allows the translation setup within
the driver to reuse the physical addresses.  The code registering the I/O
region with the PCI core uses both ranges to establish the mapping.

Fixes: 0b0b0893d4 ("of/pci: Fix the conversion of IO ranges into IO resources")
Reported-by: Marc Zyngier <marc.zyngier@arm.com>
Tested-by: Marc Zyngier <marc.zyngier@arm.com>
Suggested-by: Arnd Bergmann <arnd@arndb.de>
Signed-off-by: Thierry Reding <treding@nvidia.com>
Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
Reviewed-by: Arnd Bergmann <arnd@arndb.de>
2014-12-01 16:55:43 -07:00
..
Kconfig PCI changes for the v3.18 merge window: 2014-10-09 15:03:49 -04:00
Makefile Merge branch 'pci/host-xgene' into next 2014-10-06 09:59:15 -06:00
pci-dra7xx.c PCI: dra7xx: Add TI DRA7xx PCIe driver 2014-07-22 15:26:24 -06:00
pci-exynos.c Merge branches 'pci/host-designware', 'pci/host-imx6', 'pci/host-mvebu' and 'pci/host-tegra' into next 2014-06-03 08:45:42 -06:00
pci-host-generic.c PCI: generic: Fix GPL v2 license string typo 2014-07-15 15:07:46 -06:00
pci-imx6.c PCI: imx6: Wait for clocks to stabilize after ref_en 2014-10-29 10:11:54 -06:00
pci-keystone-dw.c Merge branch 'pci/host-designware' into next 2014-09-29 13:24:24 -06:00
pci-keystone.c Merge branch 'pci/host-designware' into next 2014-09-29 13:24:24 -06:00
pci-keystone.h Merge branch 'pci/host-designware' into next 2014-09-29 13:24:24 -06:00
pci-mvebu.c PCI: mvebu: Fix uninitialized variable in mvebu_get_tgt_attr() 2014-09-22 14:40:17 -06:00
pci-rcar-gen2.c PCI: rcar: Add gen2 device tree support 2014-05-28 07:47:55 -06:00
pci-tegra.c PCI: tegra: Use physical range for I/O mapping 2014-12-01 16:55:43 -07:00
pci-xgene.c PCI: xgene: Assign resources to bus before adding new devices 2014-11-13 09:53:30 -07:00
pcie-designware.c PCI: designware: Remove open-coded bitmap operations 2014-10-01 12:40:21 -06:00
pcie-designware.h PCI: designware: Add get_msi_data() to pcie_host_ops 2014-09-24 07:07:43 -06:00
pcie-rcar.c of/pci: Fix the conversion of IO ranges into IO resources 2014-09-30 17:08:40 -06:00
pcie-spear13xx.c PCI: spear: Pass config resource through reg property 2014-09-22 14:19:30 -06:00
pcie-xilinx.c PCI: xilinx: Fix xilinx_pcie_assign_msi() return value test 2014-09-16 17:41:52 -06:00