devfdt_get_addr_index() returns fdt_addr_t which might be a 64-bit
physical address. Use map_physmem() to return the virtual address
that can be used by a 32-bit machine.

Signed-off-by: Bin Meng <bmeng...@gmail.com>
Reviewed-by: Heiko Schocher <h...@denx.de>
Reviewed-by: Priyanka Jain <priyanka.j...@nxp.com>
---

(no changes since v1)

 drivers/pci/pci_mpc85xx.c | 5 ++---
 1 file changed, 2 insertions(+), 3 deletions(-)

diff --git a/drivers/pci/pci_mpc85xx.c b/drivers/pci/pci_mpc85xx.c
index 7387a1e..f0d469a 100644
--- a/drivers/pci/pci_mpc85xx.c
+++ b/drivers/pci/pci_mpc85xx.c
@@ -134,9 +134,8 @@ static int mpc85xx_pci_of_to_plat(struct udevice *dev)
        addr = devfdt_get_addr_index(dev, 0);
        if (addr == FDT_ADDR_T_NONE)
                return -EINVAL;
-       priv->cfg_addr = (void __iomem *)addr;
-       addr += 4;
-       priv->cfg_data = (void __iomem *)addr;
+       priv->cfg_addr = (void __iomem *)map_physmem(addr, 0, MAP_NOCACHE);
+       priv->cfg_data = (void __iomem *)((ulong)priv->cfg_addr + 4);
 
        return 0;
 }
-- 
2.7.4

Reply via email to