summaryrefslogtreecommitdiff
path: root/arch/arm/plat-iop
diff options
context:
space:
mode:
authorRussell King <rmk+kernel@arm.linux.org.uk>2008-03-26 18:44:58 -0700
committerDan Williams <dan.j.williams@intel.com>2008-03-26 12:33:40 -0700
commit27eedbf557f511efbe5651fa2fbfa0e4e8315ab7 (patch)
treef6052a79d7c8a5bb329685426148cab8641b6388 /arch/arm/plat-iop
parentc3a1c9c75b986e5a2c5d878ef0700a1ca6bb895a (diff)
downloadlwn-27eedbf557f511efbe5651fa2fbfa0e4e8315ab7.tar.gz
lwn-27eedbf557f511efbe5651fa2fbfa0e4e8315ab7.zip
iop: when scanning PCI bus, translate the PCI addresses according to the outbound window settings
... otherwise we end up trying to access peripherals using wrong PCI addresses. Cc: Lennert Buytenhek <kernel@wantstofly.org> Acked-by: Dan Williams <dan.j.williams@intel.com> Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
Diffstat (limited to 'arch/arm/plat-iop')
-rw-r--r--arch/arm/plat-iop/pci.c7
1 files changed, 5 insertions, 2 deletions
diff --git a/arch/arm/plat-iop/pci.c b/arch/arm/plat-iop/pci.c
index 9e83066cc056..ee6deaabf9b5 100644
--- a/arch/arm/plat-iop/pci.c
+++ b/arch/arm/plat-iop/pci.c
@@ -209,8 +209,11 @@ int iop3xx_pci_setup(int nr, struct pci_sys_data *sys)
res[1].flags = IORESOURCE_MEM;
request_resource(&iomem_resource, &res[1]);
- sys->mem_offset = IOP3XX_PCI_LOWER_MEM_PA - IOP3XX_PCI_LOWER_MEM_BA;
- sys->io_offset = IOP3XX_PCI_LOWER_IO_PA - IOP3XX_PCI_LOWER_IO_BA;
+ /*
+ * Use whatever translation is already setup.
+ */
+ sys->mem_offset = IOP3XX_PCI_LOWER_MEM_PA - *IOP3XX_OMWTVR0;
+ sys->io_offset = IOP3XX_PCI_LOWER_IO_PA - *IOP3XX_OIOWTVR;
sys->resource[0] = &res[0];
sys->resource[1] = &res[1];