diff --git a/drivers/gpio/altera_pio.c b/drivers/gpio/altera_pio.c
index 7ceb80e9510f3320956a1253603b0e6e9717a0c6..6f42bf8a2269018f17004943fd4e328efc948f0e 100644
--- a/drivers/gpio/altera_pio.c
+++ b/drivers/gpio/altera_pio.c
@@ -89,8 +89,9 @@ static int altera_pio_ofdata_to_platdata(struct udevice *dev)
 {
 	struct altera_pio_platdata *plat = dev_get_platdata(dev);
 
-	plat->regs = ioremap(dev_get_addr(dev),
-		sizeof(struct altera_pio_regs));
+	plat->regs = map_physmem(dev_get_addr(dev),
+				 sizeof(struct altera_pio_regs),
+				 MAP_NOCACHE);
 	plat->gpio_count = fdtdec_get_int(gd->fdt_blob, dev->of_offset,
 		"altr,gpio-bank-width", 32);
 	plat->bank_name = fdt_getprop(gd->fdt_blob, dev->of_offset,