blob: 2635b1a9633385568677b9a121f50adb6f96d8b7 [file] [log] [blame]
* Implement the default iomap interfaces
* (C) Copyright 2004 Linus Torvalds
* (C) Copyright 2006 Ralf Baechle <>
* (C) Copyright 2007 MIPS Technologies, Inc.
* written by Ralf Baechle <>
#include <linux/pci.h>
#include <linux/module.h>
#include <asm/io.h>
static void __iomem *ioport_map_pci(struct pci_dev *dev,
unsigned long port, unsigned int nr)
struct pci_controller *ctrl = dev->bus->sysdata;
unsigned long base = ctrl->io_map_base;
/* This will eventually become a BUG_ON but for now be gentle */
if (unlikely(!ctrl->io_map_base)) {
struct pci_bus *bus = dev->bus;
char name[8];
while (bus->parent)
bus = bus->parent;
ctrl->io_map_base = base = mips_io_port_base;
sprintf(name, "%04x:%02x", pci_domain_nr(bus), bus->number);
printk(KERN_WARNING "io_map_base of root PCI bus %s unset. "
"Trying to continue but you better\nfix this issue or "
"report it to or your "
"vendor.\n", name);
panic("To avoid data corruption io_map_base MUST be set with "
"multiple PCI domains.");
return (void __iomem *) (ctrl->io_map_base + port);
void pci_iounmap(struct pci_dev *dev, void __iomem * addr)