
-------------------------------------------------------------------------
Release Notes for Linux on Intel's IXP4xx Network Processor

Maintained by Deepak Saxena <dsaxena@plexity.net>
-------------------------------------------------------------------------

1. Overview

Intel's IXP4xx network processor is a highly integrated SOC that
is targeted for network applications, though it has become popular 
in industrial control and other areas due to low cost and power
consumption. The IXP4xx family currently consists of several processors
that support different network offload functions such as encryption,
routing, firewalling, etc. The IXP46x family is an updated version which
supports faster speeds, new memory and flash configurations, and more
integration such as an on-chip I2C controller.

For more information on the various versions of the CPU, see:

   http://developer.intel.com/design/network/products/npfamily/ixp4xx.htm

Intel also made the IXCP1100 CPU for sometime which is an IXP4xx 
stripped of much of the network intelligence.

2. Linux Support

Linux currently supports the following features on the IXP4xx chips:

- Dual serial ports
- PCI interface
- Flash access (MTD/JFFS)
- I2C through GPIO on IXP42x
- GPIO for input/output/interrupts 
  See arch/arm/mach-ixp4xx/include/mach/platform.h for access functions.
- Timers (watchdog, OS)

The following components of the chips are not supported by Linux and
require the use of Intel's propietary CSR softare:

- USB device interface
- Network interfaces (HSS, Utopia, NPEs, etc)
- Network offload functionality

If you need to use any of the above, you need to download Intel's
software from:

   http://developer.intel.com/design/network/products/npfamily/ixp425swr1.htm

DO NOT POST QUESTIONS TO THE LINUX MAILING LISTS REGARDING THE PROPIETARY
SOFTWARE.

There are several websites that provide directions/pointers on using
Intel's software:

http://ixp4xx-osdg.sourceforge.net/ 
   Open Source Developer's Guide for using uClinux and the Intel libraries 

http://gatewaymaker.sourceforge.net/ 
   Simple one page summary of building a gateway using an IXP425 and Linux

http://ixp425.sourceforge.net/
   ATM device driver for IXP425 that relies on Intel's libraries

3. Known Issues/Limitations

3a. Limited inbound PCI window

The IXP4xx family allows for up to 256MB of memory but the PCI interface
can only expose 64MB of that memory to the PCI bus. This means that if
you are running with > 64MB, all PCI buffers outside of the accessible
range will be bounced using the routines in arch/arm/common/dmabounce.c.
   
3b. Limited outbound PCI window

IXP4xx provides two methods of accessing PCI memory space:

1) A direct mapped window from 0x48000000 to 0x4bffffff (64MB).
   To access PCI via this space, we simply ioremap() the BAR
   into the kernel and we can use the standard read[bwl]/write[bwl]
   macros. This is the preffered method due to speed but it
   limits the system to just 64MB of PCI memory. This can be 
   problamatic if using video cards and other memory-heavy devices.
          
2) If > 64MB of memory space is required, the IXP4xx can be 
   configured to use indirect registers to access PCI This allows 
   for up to 128MB (0x48000000 to 0x4fffffff) of memory on the bus. 
   The disadvantage of this is that every PCI access requires 
   three local register accesses plus a spinlock, but in some 
   cases the performance hit is acceptable. In addition, you cannot 
   mmap() PCI devices in this case due to the indirect nature
   of the PCI window.

By default, the direct method is used for performance reasons. If
you need more PCI memory, enable the IXP4XX_INDIRECT_PCI config option.

3c. GPIO as Interrupts

Currently the code only handles level-sensitive GPIO interrupts 

4. Supported platforms

ADI Engineering Coyote Gateway Reference Platform
http://www.adiengineering.com/productsCoyote.html

   The ADI Coyote platform is reference design for those building 
   small residential/office gateways. One NPE is connected to a 10/100
   interface, one to 4-port 10/100 switch, and the third to and ADSL
   interface. In addition, it also supports to POTs interfaces connected
   via SLICs. Note that those are not supported by Linux ATM. Finally,
   the platform has two mini-PCI slots used for 802.11[bga] cards.
   Finally, there is an IDE port hanging off the expansion bus.

Gateworks Avila Network Platform
http://www.gateworks.com/avila_sbc.htm

   The Avila platform is basically and IXDP425 with the 4 PCI slots
   replaced with mini-PCI slots and a CF IDE interface hanging off
   the expansion bus.

Intel IXDP425 Development Platform
http://developer.intel.com/design/network/products/npfamily/ixdp425.htm

   This is Intel's standard reference platform for the IXDP425 and is 
   also known as the Richfield board. It contains 4 PCI slots, 16MB
   of flash, two 10/100 ports and one ADSL port.

Intel IXDP465 Development Platform
http://developer.intel.com/design/network/products/npfamily/ixdp465.htm

   This is basically an IXDP425 with an IXP465 and 32M of flash instead
   of just 16.

Intel IXDPG425 Development Platform

   This is basically and ADI Coyote board with a NEC EHCI controller
   added. One issue with this board is that the mini-PCI slots only
   have the 3.3v line connected, so you can't use a PCI to mini-PCI
   adapter with an E100 card. So to NFS root you need to use either
   the CSR or a WiFi card and a ramdisk that BOOTPs and then does
   a pivot_root to NFS.

Motorola PrPMC1100 Processor Mezanine Card
http://www.fountainsys.com/datasheet/PrPMC1100.pdf

   The PrPMC1100 is based on the IXCP1100 and is meant to plug into
   and IXP2400/2800 system to act as the system controller. It simply
   contains a CPU and 16MB of flash on the board and needs to be
   plugged into a carrier board to function. Currently Linux only
   supports the Motorola PrPMC carrier board for this platform.
   See https://mcg.motorola.com/us/ds/pdf/ds0144.pdf for info
   on the carrier board.

5. TODO LIST

- Add support for Coyote IDE
- Add support for edge-based GPIO interrupts
- Add support for CF IDE on expansion bus

6. Thanks

The IXP4xx work has been funded by Intel Corp. and MontaVista Software, Inc.

The following people have contributed patches/comments/etc:

Lennerty Buytenhek
Lutz Jaenicke
Justin Mayfield
Robert E. Ranslam
[I know I've forgotten others, please email me to be added] 

-------------------------------------------------------------------------

Last Update: 01/04/2005
