Skip to content

Commit

Permalink
MIPS: implement architecture-specific 'pci_remap_iospace()'
Browse files Browse the repository at this point in the history
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 <[email protected]>
Acked-by: Thomas Bogendoerfer <[email protected]>
Signed-off-by: Sergio Paracuellos <[email protected]>
Link: https://lore.kernel.org/r/[email protected]
Signed-off-by: Greg Kroah-Hartman <[email protected]>
  • Loading branch information
paraka authored and gregkh committed Oct 5, 2021
1 parent 7c2584f commit 9f76779
Show file tree
Hide file tree
Showing 2 changed files with 16 additions and 0 deletions.
2 changes: 2 additions & 0 deletions arch/mips/include/asm/pci.h
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,8 @@
#include <linux/list.h>
#include <linux/of.h>

#define pci_remap_iospace pci_remap_iospace

#ifdef CONFIG_PCI_DRIVERS_LEGACY

/*
Expand Down
14 changes: 14 additions & 0 deletions arch/mips/pci/pci-generic.c
Original file line number Diff line number Diff line change
Expand Up @@ -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;
}

0 comments on commit 9f76779

Please sign in to comment.