of/pci: Fix the conversion of IO ranges into IO resources
authorLiviu Dudau <Liviu.Dudau@arm.com>
Mon, 29 Sep 2014 14:29:25 +0000 (15:29 +0100)
committerBjorn Helgaas <bhelgaas@google.com>
Tue, 30 Sep 2014 23:08:40 +0000 (17:08 -0600)
commit0b0b0893d49b34201a6c4416b1a707b580b91e3d
tree6705257f35735ce6bc8c85a760d49227905d6b13
parent83bbde1cc0ec9d156b9271e29ffe0dc89c687feb
of/pci: Fix the conversion of IO ranges into IO resources

The ranges property for a host bridge controller in DT describes the
mapping between the PCI bus address and the CPU physical address.  The
resources framework however expects that the IO resources start at a pseudo
"port" address 0 (zero) and have a maximum size of IO_SPACE_LIMIT.  The
conversion from PCI ranges to resources failed to take that into account,
returning a CPU physical address instead of a port number.

Also fix all the drivers that depend on the old behaviour by fetching the
CPU physical address based on the port number where it is being needed.

Signed-off-by: Liviu Dudau <Liviu.Dudau@arm.com>
Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
Acked-by: Linus Walleij <linus.walleij@linaro.org>
CC: Grant Likely <grant.likely@linaro.org>
CC: Rob Herring <robh+dt@kernel.org>
CC: Arnd Bergmann <arnd@arndb.de>
CC: Thierry Reding <thierry.reding@gmail.com>
CC: Simon Horman <horms@verge.net.au>
CC: Catalin Marinas <catalin.marinas@arm.com>
arch/arm/mach-integrator/pci_v3.c
drivers/of/address.c
drivers/pci/host/pci-tegra.c
drivers/pci/host/pcie-rcar.c
include/linux/of_address.h