]> git.itanic.dy.fi Git - linux-stable/commitdiff
MIPS: implement architecture-specific 'pci_remap_iospace()'
authorSergio Paracuellos <sergio.paracuellos@gmail.com>
Sat, 25 Sep 2021 20:32:23 +0000 (22:32 +0200)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Tue, 5 Oct 2021 10:36:25 +0000 (12:36 +0200)
To make PCI IO work we need to properly virtually map IO cpu physical address
and set this virtual address as the address of the first PCI IO port which
is set using function 'set_io_port_base()'.

Acked-by: Arnd Bergmann <arnd@arndb.de>
Acked-by: Thomas Bogendoerfer <tsbogend@alpha.franken.de>
Signed-off-by: Sergio Paracuellos <sergio.paracuellos@gmail.com>
Link: https://lore.kernel.org/r/20210925203224.10419-6-sergio.paracuellos@gmail.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
arch/mips/include/asm/pci.h
arch/mips/pci/pci-generic.c

index 9ffc8192adae86d79434481997fad100917295e7..35270984a5f0809d91b49907e3a93c6f95bd69ec 100644 (file)
@@ -20,6 +20,8 @@
 #include <linux/list.h>
 #include <linux/of.h>
 
+#define pci_remap_iospace pci_remap_iospace
+
 #ifdef CONFIG_PCI_DRIVERS_LEGACY
 
 /*
index 95b00017886c2ed115373ec9c5af82cbfb3bd14c..18eb8a453a86231d458942b84953f79224a72ac0 100644 (file)
@@ -46,3 +46,17 @@ void pcibios_fixup_bus(struct pci_bus *bus)
 {
        pci_read_bridge_bases(bus);
 }
+
+int pci_remap_iospace(const struct resource *res, phys_addr_t phys_addr)
+{
+       unsigned long vaddr;
+
+       if (res->start != 0) {
+               WARN_ONCE(1, "resource start address is not zero\n");
+               return -ENODEV;
+       }
+
+       vaddr = (unsigned long)ioremap(phys_addr, resource_size(res));
+       set_io_port_base(vaddr);
+       return 0;
+}