root/arch/mips/lib/iomap-pci.c

/* [<][>][^][v][top][bottom][index][help] */

DEFINITIONS

This source file includes following definitions.
  1. __pci_ioport_map

   1 // SPDX-License-Identifier: GPL-2.0
   2 /*
   3  * Implement the default iomap interfaces
   4  *
   5  * (C) Copyright 2004 Linus Torvalds
   6  * (C) Copyright 2006 Ralf Baechle <ralf@linux-mips.org>
   7  * (C) Copyright 2007 MIPS Technologies, Inc.
   8  *     written by Ralf Baechle <ralf@linux-mips.org>
   9  */
  10 #include <linux/pci.h>
  11 #include <linux/export.h>
  12 #include <asm/io.h>
  13 
  14 #ifdef CONFIG_PCI_DRIVERS_LEGACY
  15 
  16 void __iomem *__pci_ioport_map(struct pci_dev *dev,
  17                                unsigned long port, unsigned int nr)
  18 {
  19         struct pci_controller *ctrl = dev->bus->sysdata;
  20         unsigned long base = ctrl->io_map_base;
  21 
  22         /* This will eventually become a BUG_ON but for now be gentle */
  23         if (unlikely(!ctrl->io_map_base)) {
  24                 struct pci_bus *bus = dev->bus;
  25                 char name[8];
  26 
  27                 while (bus->parent)
  28                         bus = bus->parent;
  29 
  30                 ctrl->io_map_base = base = mips_io_port_base;
  31 
  32                 sprintf(name, "%04x:%02x", pci_domain_nr(bus), bus->number);
  33                 printk(KERN_WARNING "io_map_base of root PCI bus %s unset.  "
  34                        "Trying to continue but you better\nfix this issue or "
  35                        "report it to linux-mips@linux-mips.org or your "
  36                        "vendor.\n", name);
  37 #ifdef CONFIG_PCI_DOMAINS
  38                 panic("To avoid data corruption io_map_base MUST be set with "
  39                       "multiple PCI domains.");
  40 #endif
  41         }
  42 
  43         return (void __iomem *) (ctrl->io_map_base + port);
  44 }
  45 
  46 #endif /* CONFIG_PCI_DRIVERS_LEGACY */

/* [<][>][^][v][top][bottom][index][help] */