diff options
Diffstat (limited to 'arch/microblaze/pci/iomap.c')
| -rw-r--r-- | arch/microblaze/pci/iomap.c | 39 | 
1 files changed, 39 insertions, 0 deletions
diff --git a/arch/microblaze/pci/iomap.c b/arch/microblaze/pci/iomap.c new file mode 100644 index 00000000000..3fbf16f4e16 --- /dev/null +++ b/arch/microblaze/pci/iomap.c @@ -0,0 +1,39 @@ +/* + * ppc64 "iomap" interface implementation. + * + * (C) Copyright 2004 Linus Torvalds + */ +#include <linux/init.h> +#include <linux/pci.h> +#include <linux/mm.h> +#include <asm/io.h> +#include <asm/pci-bridge.h> + +void __iomem *pci_iomap(struct pci_dev *dev, int bar, unsigned long max) +{ +	resource_size_t start = pci_resource_start(dev, bar); +	resource_size_t len = pci_resource_len(dev, bar); +	unsigned long flags = pci_resource_flags(dev, bar); + +	if (!len) +		return NULL; +	if (max && len > max) +		len = max; +	if (flags & IORESOURCE_IO) +		return ioport_map(start, len); +	if (flags & IORESOURCE_MEM) +		return ioremap(start, len); +	/* What? */ +	return NULL; +} +EXPORT_SYMBOL(pci_iomap); + +void pci_iounmap(struct pci_dev *dev, void __iomem *addr) +{ +	if (isa_vaddr_is_ioport(addr)) +		return; +	if (pcibios_vaddr_is_ioport(addr)) +		return; +	iounmap(addr); +} +EXPORT_SYMBOL(pci_iounmap);  |