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