1/* 2 * arch/arm/mach-ixp23xx/include/mach/io.h 3 * 4 * Original Author: Naeem M Afzal <naeem.m.afzal@intel.com> 5 * Maintainer: Deepak Saxena <dsaxena@plexity.net> 6 * 7 * Copyright (C) 2003-2005 Intel Corp. 8 * Copyright (C) 2005 MontaVista Software, Inc 9 * 10 * This program is free software; you can redistribute it and/or modify 11 * it under the terms of the GNU General Public License version 2 as 12 * published by the Free Software Foundation. 13 */ 14 15#ifndef __ASM_ARCH_IO_H 16#define __ASM_ARCH_IO_H 17 18#define IO_SPACE_LIMIT 0xffffffff 19 20#define __io(p) ((void __iomem*)((p) + IXP23XX_PCI_IO_VIRT)) 21#define __mem_pci(a) (a) 22 23static inline void __iomem * 24ixp23xx_ioremap(unsigned long addr, unsigned long size, unsigned int mtype) 25{ 26 if (addr >= IXP23XX_PCI_MEM_START && 27 addr <= IXP23XX_PCI_MEM_START + IXP23XX_PCI_MEM_SIZE) { 28 if (addr + size > IXP23XX_PCI_MEM_START + IXP23XX_PCI_MEM_SIZE) 29 return NULL; 30 31 return (void __iomem *) 32 ((addr - IXP23XX_PCI_MEM_START) + IXP23XX_PCI_MEM_VIRT); 33 } 34 35 return __arm_ioremap(addr, size, mtype); 36} 37 38static inline void 39ixp23xx_iounmap(void __iomem *addr) 40{ 41 if ((((u32)addr) >= IXP23XX_PCI_MEM_VIRT) && 42 (((u32)addr) < IXP23XX_PCI_MEM_VIRT + IXP23XX_PCI_MEM_SIZE)) 43 return; 44 45 __iounmap(addr); 46} 47 48#define __arch_ioremap(a,s,f) ixp23xx_ioremap(a,s,f) 49#define __arch_iounmap(a) ixp23xx_iounmap(a) 50 51 52#endif 53