static int __init dove_pcie_setup(int nr, struct pci_sys_data *sys)
 {
        struct pcie_port *pp;
+       struct resource realio;
 
        if (nr >= num_pcie_ports)
                return 0;
 
        orion_pcie_setup(pp->base);
 
-       if (pp->index == 0)
-               pci_ioremap_io(sys->busnr * SZ_64K, DOVE_PCIE0_IO_PHYS_BASE);
-       else
-               pci_ioremap_io(sys->busnr * SZ_64K, DOVE_PCIE1_IO_PHYS_BASE);
+       realio.start = sys->busnr * SZ_64K;
+       realio.end = realio.start + SZ_64K - 1;
+       pci_remap_iospace(&realio, pp->index == 0 ? DOVE_PCIE0_IO_PHYS_BASE :
+                                                   DOVE_PCIE1_IO_PHYS_BASE);
 
        /*
         * IORESOURCE_MEM
 
 int iop3xx_pci_setup(int nr, struct pci_sys_data *sys)
 {
        struct resource *res;
+       struct resource realio;
 
        if (nr != 0)
                return 0;
 
        pci_add_resource_offset(&sys->resources, res, sys->mem_offset);
 
-       pci_ioremap_io(0, IOP3XX_PCI_LOWER_IO_PA);
+       realio.start = 0;
+       realio.end = realio.start + SZ_64K - 1;
+       pci_remap_iospace(&realio, IOP3XX_PCI_LOWER_IO_PA);
 
        return 1;
 }
 
 static int __init mv78xx0_pcie_setup(int nr, struct pci_sys_data *sys)
 {
        struct pcie_port *pp;
+       struct resource realio;
 
        if (nr >= num_pcie_ports)
                return 0;
        orion_pcie_set_local_bus_nr(pp->base, sys->busnr);
        orion_pcie_setup(pp->base);
 
-       pci_ioremap_io(nr * SZ_64K, MV78XX0_PCIE_IO_PHYS_BASE(nr));
+       realio.start = nr * SZ_64K;
+       realio.end = realio.start + SZ_64K - 1;
+       pci_remap_iospace(&realio, MV78XX0_PCIE_IO_PHYS_BASE(nr));
 
        pci_add_resource_offset(&sys->resources, &pp->res, sys->mem_offset);
 
 
 static int __init pcie_setup(struct pci_sys_data *sys)
 {
        struct resource *res;
+       struct resource realio;
        int dev;
 
        /*
                pcie_ops.read = pcie_rd_conf_wa;
        }
 
-       pci_ioremap_io(sys->busnr * SZ_64K, ORION5X_PCIE_IO_PHYS_BASE);
+       realio.start = sys->busnr * SZ_64K;
+       realio.end = realio.start + SZ_64K - 1;
+       pci_remap_iospace(&realio, ORION5X_PCIE_IO_PHYS_BASE);
 
        /*
         * Request resources.
 static int __init pci_setup(struct pci_sys_data *sys)
 {
        struct resource *res;
+       struct resource realio;
 
        /*
         * Point PCI unit MBUS decode windows to DRAM space.
         */
        orion5x_setbits(PCI_CMD, PCI_CMD_HOST_REORDER);
 
-       pci_ioremap_io(sys->busnr * SZ_64K, ORION5X_PCI_IO_PHYS_BASE);
+       realio.start = sys->busnr * SZ_64K;
+       realio.end = realio.start + SZ_64K - 1;
+       pci_remap_iospace(&realio, ORION5X_PCI_IO_PHYS_BASE);
 
        /*
         * Request resources
 
 #include <linux/of.h>
 #include <linux/of_device.h>
 #include <linux/of_gpio.h>
+#include <linux/pci.h>
 #include <linux/regmap.h>
 
 #include <pcmcia/ss.h>
        struct at91_cf_socket   *cf;
        struct at91_cf_data     *board;
        struct resource         *io;
+       struct resource         realio;
        int                     status;
 
        board = devm_kzalloc(&pdev->dev, sizeof(*board), GFP_KERNEL);
         * io_offset is set to 0x10000 to avoid the check in static_find_io().
         * */
        cf->socket.io_offset = 0x10000;
-       status = pci_ioremap_io(0x10000, cf->phys_baseaddr + CF_IO_PHYS);
+       realio.start = cf->socket.io_offset;
+       realio.end = realio.start + SZ_64K - 1;
+       status = pci_remap_iospace(&realio, cf->phys_baseaddr + CF_IO_PHYS);
        if (status)
                goto fail0a;