korina: Move the IDT driver
[linux-2.6/linux-acpi-2.6/ibm-acpi-2.6.git] / arch / microblaze / pci / iomap.c
blob3fbf16f4e16c4093cf7b524a45ce8d2543ba5bd0
1 /*
2 * ppc64 "iomap" interface implementation.
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>
12 void __iomem *pci_iomap(struct pci_dev *dev, int bar, unsigned long max)
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);
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;
29 EXPORT_SYMBOL(pci_iomap);
31 void pci_iounmap(struct pci_dev *dev, void __iomem *addr)
33 if (isa_vaddr_is_ioport(addr))
34 return;
35 if (pcibios_vaddr_is_ioport(addr))
36 return;
37 iounmap(addr);
39 EXPORT_SYMBOL(pci_iounmap);