diff options
author | Sergio Paracuellos <sergio.paracuellos@gmail.com> | 2021-09-25 22:32:23 +0200 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@linuxfoundation.org> | 2021-10-05 12:36:25 +0200 |
commit | 9f76779f24183c5d85a9441016d9dad042411e50 (patch) | |
tree | 73812511012f3473f78084bc17aeb147e6ce6111 /arch/mips/pci | |
parent | PCI: Allow architecture-specific pci_remap_iospace() (diff) | |
download | linux-9f76779f24183c5d85a9441016d9dad042411e50.tar.xz linux-9f76779f24183c5d85a9441016d9dad042411e50.zip |
MIPS: implement architecture-specific 'pci_remap_iospace()'
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>
Diffstat (limited to 'arch/mips/pci')
-rw-r--r-- | arch/mips/pci/pci-generic.c | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/arch/mips/pci/pci-generic.c b/arch/mips/pci/pci-generic.c index 95b00017886c..18eb8a453a86 100644 --- a/arch/mips/pci/pci-generic.c +++ b/arch/mips/pci/pci-generic.c @@ -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; +} |