1/* 2 * arch/arm/mach-kirkwood/include/mach/io.h 3 * 4 * This file is licensed under the terms of the GNU General Public 5 * License version 2. This program is licensed "as is" without any 6 * warranty of any kind, whether express or implied. 7 */ 8 9#ifndef __ASM_ARCH_IO_H 10#define __ASM_ARCH_IO_H 11 12#include "kirkwood.h" 13 14#define IO_SPACE_LIMIT 0xffffffff 15 16static inline void __iomem *__io(unsigned long addr) 17{ 18 return (void __iomem *)((addr - KIRKWOOD_PCIE_IO_BUS_BASE) 19 + KIRKWOOD_PCIE_IO_VIRT_BASE); 20} 21 22static inline void __iomem * 23__arch_ioremap(unsigned long paddr, size_t size, unsigned int mtype) 24{ 25 void __iomem *retval; 26 unsigned long offs = paddr - KIRKWOOD_REGS_PHYS_BASE; 27 if (mtype == MT_DEVICE && size && offs < KIRKWOOD_REGS_SIZE && 28 size <= KIRKWOOD_REGS_SIZE && offs + size <= KIRKWOOD_REGS_SIZE) { 29 retval = (void __iomem *)KIRKWOOD_REGS_VIRT_BASE + offs; 30 } else { 31 retval = __arm_ioremap(paddr, size, mtype); 32 } 33 34 return retval; 35} 36 37static inline void 38__arch_iounmap(void __iomem *addr) 39{ 40 if (addr < (void __iomem *)KIRKWOOD_REGS_VIRT_BASE || 41 addr >= (void __iomem *)(KIRKWOOD_REGS_VIRT_BASE + KIRKWOOD_REGS_SIZE)) 42 __iounmap(addr); 43} 44 45#define __arch_ioremap(p, s, m) __arch_ioremap(p, s, m) 46#define __arch_iounmap(a) __arch_iounmap(a) 47#define __io(a) __io(a) 48#define __mem_pci(a) (a) 49 50 51#endif 52