Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/linville/wirel...
[sfrench/cifs-2.6.git] / arch / microblaze / pci / iomap.c
1 /*
2  * ppc64 "iomap" interface implementation.
3  *
4  * (C) Copyright 2004 Linus Torvalds
5  */
6 #include <linux/init.h>
7 #include <linux/pci.h>
8 #include <linux/mm.h>
9 #include <asm/io.h>
10 #include <asm/pci-bridge.h>
11
12 void __iomem *pci_iomap(struct pci_dev *dev, int bar, unsigned long max)
13 {
14         resource_size_t start = pci_resource_start(dev, bar);
15         resource_size_t len = pci_resource_len(dev, bar);
16         unsigned long flags = pci_resource_flags(dev, bar);
17
18         if (!len)
19                 return NULL;
20         if (max && len > max)
21                 len = max;
22         if (flags & IORESOURCE_IO)
23                 return ioport_map(start, len);
24         if (flags & IORESOURCE_MEM)
25                 return ioremap(start, len);
26         /* What? */
27         return NULL;
28 }
29 EXPORT_SYMBOL(pci_iomap);
30
31 void pci_iounmap(struct pci_dev *dev, void __iomem *addr)
32 {
33         if (isa_vaddr_is_ioport(addr))
34                 return;
35         if (pcibios_vaddr_is_ioport(addr))
36                 return;
37         iounmap(addr);
38 }
39 EXPORT_SYMBOL(pci_iounmap);