1/* 2 * include/asm-arm/arch-ixp23xx/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 23#include <linux/kernel.h> /* For BUG */ 24 25static inline void __iomem * 26ixp23xx_ioremap(unsigned long addr, unsigned long size, unsigned int mtype) 27{ 28 if (addr >= IXP23XX_PCI_MEM_START && 29 addr <= IXP23XX_PCI_MEM_START + IXP23XX_PCI_MEM_SIZE) { 30 if (addr + size > IXP23XX_PCI_MEM_START + IXP23XX_PCI_MEM_SIZE) 31 return NULL; 32 33 return (void __iomem *) 34 ((addr - IXP23XX_PCI_MEM_START) + IXP23XX_PCI_MEM_VIRT); 35 } 36 37 return __arm_ioremap(addr, size, mtype); 38} 39 40static inline void 41ixp23xx_iounmap(void __iomem *addr) 42{ 43 if ((((u32)addr) >= IXP23XX_PCI_MEM_VIRT) && 44 (((u32)addr) < IXP23XX_PCI_MEM_VIRT + IXP23XX_PCI_MEM_SIZE)) 45 return; 46 47 __iounmap(addr); 48} 49 50#define __arch_ioremap(a,s,f) ixp23xx_ioremap(a,s,f) 51#define __arch_iounmap(a) ixp23xx_iounmap(a) 52 53 54#endif 55