1 /* 2 * linux/arch/arm/mm/iomap.c 3 * 4 * Map IO port and PCI memory spaces so that {read,write}[bwl] can 5 * be used to access this memory. 6 */ 7 #include <linux/module.h> 8 #include <linux/pci.h> 9 #include <linux/ioport.h> 10 #include <linux/io.h> 11 12 unsigned long vga_base; 13 EXPORT_SYMBOL(vga_base); 14 15 #ifdef __io 16 void __iomem *ioport_map(unsigned long port, unsigned int nr) 17 { 18 return __io(port); 19 } 20 EXPORT_SYMBOL(ioport_map); 21 22 void ioport_unmap(void __iomem *addr) 23 { 24 } 25 EXPORT_SYMBOL(ioport_unmap); 26 #endif 27 28 #ifdef CONFIG_PCI 29 unsigned long pcibios_min_io = 0x1000; 30 EXPORT_SYMBOL(pcibios_min_io); 31 32 unsigned long pcibios_min_mem = 0x01000000; 33 EXPORT_SYMBOL(pcibios_min_mem); 34 35 unsigned int pci_flags = PCI_REASSIGN_ALL_RSRC; 36 EXPORT_SYMBOL(pci_flags); 37 38 void __iomem *pci_iomap(struct pci_dev *dev, int bar, unsigned long maxlen) 39 { 40 resource_size_t start = pci_resource_start(dev, bar); 41 resource_size_t len = pci_resource_len(dev, bar); 42 unsigned long flags = pci_resource_flags(dev, bar); 43 44 if (!len || !start) 45 return NULL; 46 if (maxlen && len > maxlen) 47 len = maxlen; 48 if (flags & IORESOURCE_IO) 49 return ioport_map(start, len); 50 if (flags & IORESOURCE_MEM) { 51 if (flags & IORESOURCE_CACHEABLE) 52 return ioremap(start, len); 53 return ioremap_nocache(start, len); 54 } 55 return NULL; 56 } 57 EXPORT_SYMBOL(pci_iomap); 58 59 void pci_iounmap(struct pci_dev *dev, void __iomem *addr) 60 { 61 if ((unsigned long)addr >= VMALLOC_START && 62 (unsigned long)addr < VMALLOC_END) 63 iounmap(addr); 64 } 65 EXPORT_SYMBOL(pci_iounmap); 66 #endif 67