• Home
  • History
  • Annotate
  • Line#
  • Navigate
  • Raw
  • Download
  • only in /asuswrt-rt-n18u-9.0.0.4.380.2695/release/src-rt-6.x.4708/linux/linux-2.6.36/arch/arm/mach-ixp23xx/include/mach/
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