c471307437
Patch from Lennert Buytenhek This patch adds support for the Intel ixp23xx series of CPUs. The ixp23xx is an XSC3 based CPU with 512K of L2 cache, a 64bit 66MHz PCI interface, two DDR RAM interfaces, QDR RAM interfaces, two gigabit MACs, two 10/100 MACs, expansion bus, four microengines, a Media and Switch Fabric unit almost identical to the one on the ixp2400, two xscale (8250ish) UARTs and a bunch of other stuff. This patch adds the core ixp23xx support code, and support for the ADI Engineering Roadrunner, Intel IXDP2351, and IP Fabrics Double Espresso platforms. Signed-off-by: Deepak Saxena <dsaxena@plexity.net> Signed-off-by: Lennert Buytenhek <buytenh@wantstofly.org> Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
54 lines
1.3 KiB
C
54 lines
1.3 KiB
C
/*
|
|
* include/asm-arm/arch-ixp23xx/io.h
|
|
*
|
|
* Original Author: Naeem M Afzal <naeem.m.afzal@intel.com>
|
|
* Maintainer: Deepak Saxena <dsaxena@plexity.net>
|
|
*
|
|
* Copyright (C) 2003-2005 Intel Corp.
|
|
* Copyright (C) 2005 MontaVista Software, Inc
|
|
*
|
|
* This program is free software; you can redistribute it and/or modify
|
|
* it under the terms of the GNU General Public License version 2 as
|
|
* published by the Free Software Foundation.
|
|
*/
|
|
|
|
#ifndef __ASM_ARCH_IO_H
|
|
#define __ASM_ARCH_IO_H
|
|
|
|
#define IO_SPACE_LIMIT 0xffffffff
|
|
|
|
#define __io(p) ((void __iomem*)((p) + IXP23XX_PCI_IO_VIRT))
|
|
#define __mem_pci(a) (a)
|
|
|
|
#include <linux/kernel.h> /* For BUG */
|
|
|
|
static inline void __iomem *
|
|
ixp23xx_ioremap(unsigned long addr, unsigned long size, unsigned long flags)
|
|
{
|
|
if (addr >= IXP23XX_PCI_MEM_START &&
|
|
addr <= IXP23XX_PCI_MEM_START + IXP23XX_PCI_MEM_SIZE) {
|
|
if (addr + size > IXP23XX_PCI_MEM_START + IXP23XX_PCI_MEM_SIZE)
|
|
return NULL;
|
|
|
|
return (void __iomem *)
|
|
((addr - IXP23XX_PCI_MEM_START) + IXP23XX_PCI_MEM_VIRT);
|
|
}
|
|
|
|
return __ioremap(addr, size, flags);
|
|
}
|
|
|
|
static inline void
|
|
ixp23xx_iounmap(void __iomem *addr)
|
|
{
|
|
if ((((u32)addr) >= IXP23XX_PCI_MEM_VIRT) &&
|
|
(((u32)addr) < IXP23XX_PCI_MEM_VIRT + IXP23XX_PCI_MEM_SIZE))
|
|
return;
|
|
|
|
__iounmap(addr);
|
|
}
|
|
|
|
#define __arch_ioremap(a,s,f) ixp23xx_ioremap(a,s,f)
|
|
#define __arch_iounmap(a) ixp23xx_iounmap(a)
|
|
|
|
|
|
#endif
|