1/* 2 * arch/sh64/lib/iomap.c 3 * 4 * Generic sh64 iomap interface 5 * 6 * Copyright (C) 2004 Paul Mundt 7 * 8 * This file is subject to the terms and conditions of the GNU General Public 9 * License. See the file "COPYING" in the main directory of this archive 10 * for more details. 11 */ 12#include <linux/pci.h> 13#include <asm/io.h> 14 15void __iomem *__attribute__ ((weak)) 16ioport_map(unsigned long port, unsigned int len) 17{ 18 return (void __iomem *)port; 19} 20 21void ioport_unmap(void __iomem *addr) 22{ 23 /* Nothing .. */ 24} 25 26void __iomem *pci_iomap(struct pci_dev *dev, int bar, unsigned long max) 27{ 28 unsigned long start = pci_resource_start(dev, bar); 29 unsigned long len = pci_resource_len(dev, bar); 30 unsigned long flags = pci_resource_flags(dev, bar); 31 32 if (!len) 33 return NULL; 34 if (max && len > max) 35 len = max; 36 if (flags & IORESOURCE_IO) 37 return ioport_map(start + pciio_virt, len); 38 if (flags & IORESOURCE_MEM) 39 return (void __iomem *)start; 40 41 /* What? */ 42 return NULL; 43} 44 45void pci_iounmap(struct pci_dev *dev, void __iomem *addr) 46{ 47 /* Nothing .. */ 48} 49 50EXPORT_SYMBOL(ioport_map); 51EXPORT_SYMBOL(ioport_unmap); 52EXPORT_SYMBOL(pci_iomap); 53EXPORT_SYMBOL(pci_iounmap); 54