Commit 9f76779f authored by Sergio Paracuellos's avatar Sergio Paracuellos Committed by Greg Kroah-Hartman
Browse files

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: default avatarArnd Bergmann <arnd@arndb.de>
Acked-by: default avatarThomas Bogendoerfer <tsbogend@alpha.franken.de>
Signed-off-by: default avatarSergio Paracuellos <sergio.paracuellos@gmail.com>
Link: https://lore.kernel.org/r/20210925203224.10419-6-sergio.paracuellos@gmail.com


Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
parent 7c2584fa
Loading
Loading
Loading
Loading
+2 −0
Original line number Diff line number Diff line
@@ -20,6 +20,8 @@
#include <linux/list.h>
#include <linux/of.h>

#define pci_remap_iospace pci_remap_iospace

#ifdef CONFIG_PCI_DRIVERS_LEGACY

/*
+14 −0
Original line number Diff line number Diff line
@@ -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;
}