Back to home page

OSCL-LXR

 
 

    


0001 ===========================================================
0002 Release Notes for Linux on Intel's IXP4xx Network Processor
0003 ===========================================================
0004 
0005 Maintained by Deepak Saxena <dsaxena@plexity.net>
0006 -------------------------------------------------------------------------
0007 
0008 1. Overview
0009 
0010 Intel's IXP4xx network processor is a highly integrated SOC that
0011 is targeted for network applications, though it has become popular
0012 in industrial control and other areas due to low cost and power
0013 consumption. The IXP4xx family currently consists of several processors
0014 that support different network offload functions such as encryption,
0015 routing, firewalling, etc. The IXP46x family is an updated version which
0016 supports faster speeds, new memory and flash configurations, and more
0017 integration such as an on-chip I2C controller.
0018 
0019 For more information on the various versions of the CPU, see:
0020 
0021    http://developer.intel.com/design/network/products/npfamily/ixp4xx.htm
0022 
0023 Intel also made the IXCP1100 CPU for sometime which is an IXP4xx
0024 stripped of much of the network intelligence.
0025 
0026 2. Linux Support
0027 
0028 Linux currently supports the following features on the IXP4xx chips:
0029 
0030 - Dual serial ports
0031 - PCI interface
0032 - Flash access (MTD/JFFS)
0033 - I2C through GPIO on IXP42x
0034 - GPIO for input/output/interrupts
0035   See arch/arm/mach-ixp4xx/include/mach/platform.h for access functions.
0036 - Timers (watchdog, OS)
0037 
0038 The following components of the chips are not supported by Linux and
0039 require the use of Intel's proprietary CSR software:
0040 
0041 - USB device interface
0042 - Network interfaces (HSS, Utopia, NPEs, etc)
0043 - Network offload functionality
0044 
0045 If you need to use any of the above, you need to download Intel's
0046 software from:
0047 
0048    http://developer.intel.com/design/network/products/npfamily/ixp425.htm
0049 
0050 DO NOT POST QUESTIONS TO THE LINUX MAILING LISTS REGARDING THE PROPRIETARY
0051 SOFTWARE.
0052 
0053 There are several websites that provide directions/pointers on using
0054 Intel's software:
0055 
0056    - http://sourceforge.net/projects/ixp4xx-osdg/
0057      Open Source Developer's Guide for using uClinux and the Intel libraries
0058 
0059    - http://gatewaymaker.sourceforge.net/
0060      Simple one page summary of building a gateway using an IXP425 and Linux
0061 
0062    - http://ixp425.sourceforge.net/
0063      ATM device driver for IXP425 that relies on Intel's libraries
0064 
0065 3. Known Issues/Limitations
0066 
0067 3a. Limited inbound PCI window
0068 
0069 The IXP4xx family allows for up to 256MB of memory but the PCI interface
0070 can only expose 64MB of that memory to the PCI bus. This means that if
0071 you are running with > 64MB, all PCI buffers outside of the accessible
0072 range will be bounced using the routines in arch/arm/common/dmabounce.c.
0073 
0074 3b. Limited outbound PCI window
0075 
0076 IXP4xx provides two methods of accessing PCI memory space:
0077 
0078 1) A direct mapped window from 0x48000000 to 0x4bffffff (64MB).
0079    To access PCI via this space, we simply ioremap() the BAR
0080    into the kernel and we can use the standard read[bwl]/write[bwl]
0081    macros. This is the preffered method due to speed but it
0082    limits the system to just 64MB of PCI memory. This can be
0083    problamatic if using video cards and other memory-heavy devices.
0084 
0085 2) If > 64MB of memory space is required, the IXP4xx can be
0086    configured to use indirect registers to access PCI This allows
0087    for up to 128MB (0x48000000 to 0x4fffffff) of memory on the bus.
0088    The disadvantage of this is that every PCI access requires
0089    three local register accesses plus a spinlock, but in some
0090    cases the performance hit is acceptable. In addition, you cannot
0091    mmap() PCI devices in this case due to the indirect nature
0092    of the PCI window.
0093 
0094 By default, the direct method is used for performance reasons. If
0095 you need more PCI memory, enable the IXP4XX_INDIRECT_PCI config option.
0096 
0097 3c. GPIO as Interrupts
0098 
0099 Currently the code only handles level-sensitive GPIO interrupts
0100 
0101 4. Supported platforms
0102 
0103 ADI Engineering Coyote Gateway Reference Platform
0104 http://www.adiengineering.com/productsCoyote.html
0105 
0106    The ADI Coyote platform is reference design for those building
0107    small residential/office gateways. One NPE is connected to a 10/100
0108    interface, one to 4-port 10/100 switch, and the third to and ADSL
0109    interface. In addition, it also supports to POTs interfaces connected
0110    via SLICs. Note that those are not supported by Linux ATM. Finally,
0111    the platform has two mini-PCI slots used for 802.11[bga] cards.
0112    Finally, there is an IDE port hanging off the expansion bus.
0113 
0114 Gateworks Avila Network Platform
0115 http://www.gateworks.com/support/overview.php
0116 
0117    The Avila platform is basically and IXDP425 with the 4 PCI slots
0118    replaced with mini-PCI slots and a CF IDE interface hanging off
0119    the expansion bus.
0120 
0121 Intel IXDP425 Development Platform
0122 http://www.intel.com/design/network/products/npfamily/ixdpg425.htm
0123 
0124    This is Intel's standard reference platform for the IXDP425 and is
0125    also known as the Richfield board. It contains 4 PCI slots, 16MB
0126    of flash, two 10/100 ports and one ADSL port.
0127 
0128 Intel IXDP465 Development Platform
0129 http://www.intel.com/design/network/products/npfamily/ixdp465.htm
0130 
0131    This is basically an IXDP425 with an IXP465 and 32M of flash instead
0132    of just 16.
0133 
0134 Intel IXDPG425 Development Platform
0135 
0136    This is basically and ADI Coyote board with a NEC EHCI controller
0137    added. One issue with this board is that the mini-PCI slots only
0138    have the 3.3v line connected, so you can't use a PCI to mini-PCI
0139    adapter with an E100 card. So to NFS root you need to use either
0140    the CSR or a WiFi card and a ramdisk that BOOTPs and then does
0141    a pivot_root to NFS.
0142 
0143 Motorola PrPMC1100 Processor Mezanine Card
0144 http://www.fountainsys.com
0145 
0146    The PrPMC1100 is based on the IXCP1100 and is meant to plug into
0147    and IXP2400/2800 system to act as the system controller. It simply
0148    contains a CPU and 16MB of flash on the board and needs to be
0149    plugged into a carrier board to function. Currently Linux only
0150    supports the Motorola PrPMC carrier board for this platform.
0151 
0152 5. TODO LIST
0153 
0154 - Add support for Coyote IDE
0155 - Add support for edge-based GPIO interrupts
0156 - Add support for CF IDE on expansion bus
0157 
0158 6. Thanks
0159 
0160 The IXP4xx work has been funded by Intel Corp. and MontaVista Software, Inc.
0161 
0162 The following people have contributed patches/comments/etc:
0163 
0164 - Lennerty Buytenhek
0165 - Lutz Jaenicke
0166 - Justin Mayfield
0167 - Robert E. Ranslam
0168 
0169 [I know I've forgotten others, please email me to be added]
0170 
0171 -------------------------------------------------------------------------
0172 
0173 Last Update: 01/04/2005