linux/arch/sparc/lib/iomap.c
<<
>>
Prefs
   1/*
   2 * Implement the sparc iomap interfaces
   3 */
   4#include <linux/pci.h>
   5#include <linux/module.h>
   6#include <asm/io.h>
   7
   8/* Create a virtual mapping cookie for an IO port range */
   9void __iomem *ioport_map(unsigned long port, unsigned int nr)
  10{
  11        return (void __iomem *) (unsigned long) port;
  12}
  13
  14void ioport_unmap(void __iomem *addr)
  15{
  16        /* Nothing to do */
  17}
  18EXPORT_SYMBOL(ioport_map);
  19EXPORT_SYMBOL(ioport_unmap);
  20
  21/* Create a virtual mapping cookie for a PCI BAR (memory or IO) */
  22void __iomem *pci_iomap(struct pci_dev *dev, int bar, unsigned long maxlen)
  23{
  24        resource_size_t start = pci_resource_start(dev, bar);
  25        resource_size_t len = pci_resource_len(dev, bar);
  26        unsigned long flags = pci_resource_flags(dev, bar);
  27
  28        if (!len || !start)
  29                return NULL;
  30        if (maxlen && len > maxlen)
  31                len = maxlen;
  32        if (flags & IORESOURCE_IO)
  33                return ioport_map(start, len);
  34        if (flags & IORESOURCE_MEM) {
  35                if (flags & IORESOURCE_CACHEABLE)
  36                        return ioremap(start, len);
  37                return ioremap_nocache(start, len);
  38        }
  39        /* What? */
  40        return NULL;
  41}
  42
  43void pci_iounmap(struct pci_dev *dev, void __iomem * addr)
  44{
  45        /* nothing to do */
  46}
  47EXPORT_SYMBOL(pci_iomap);
  48EXPORT_SYMBOL(pci_iounmap);
  49