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 thatis targeted for network applications, though it has become popularin industrial control and other areas due to low cost and powerconsumption. The IXP4xx family currently consists of several processorsthat support different network offload functions such as encryption,routing, firewalling, etc. The IXP46x family is an updated version whichsupports faster speeds, new memory and flash configurations, and moreintegration such as an on-chip I2C controller.

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

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

  1. 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/interruptsSee 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 andrequire the use of Intel’s proprietary CSR software:

  • 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’ssoftware from:

DO NOT POST QUESTIONS TO THE LINUX MAILING LISTS REGARDING THE PROPRIETARYSOFTWARE.

There are several websites that provide directions/pointers on usingIntel’s software:

  1. Known Issues/Limitations

3a. Limited inbound PCI window

The IXP4xx family allows for up to 256MB of memory but the PCI interfacecan only expose 64MB of that memory to the PCI bus. This means that ifyou are running with > 64MB, all PCI buffers outside of the accessiblerange 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 simplyioremap() the BARinto the kernel and we can use the standard read[bwl]/write[bwl]macros. This is the preffered method due to speed but itlimits the system to just 64MB of PCI memory. This can beproblamatic if using video cards and other memory-heavy devices.
  2. If > 64MB of memory space is required, the IXP4xx can beconfigured to use indirect registers to access PCI This allowsfor up to 128MB (0x48000000 to 0x4fffffff) of memory on the bus.The disadvantage of this is that every PCI access requiresthree local register accesses plus a spinlock, but in somecases the performance hit is acceptable. In addition, you cannotmmap() PCI devices in this case due to the indirect natureof the PCI window.

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

3c. GPIO as Interrupts

Currently the code only handles level-sensitive GPIO interrupts

  1. Supported platforms

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

The ADI Coyote platform is reference design for those buildingsmall residential/office gateways. One NPE is connected to a 10/100interface, one to 4-port 10/100 switch, and the third to and ADSLinterface. In addition, it also supports to POTs interfaces connectedvia 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 Platformhttp://www.gateworks.com/support/overview.php

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

Intel IXDP425 Development Platformhttp://www.intel.com/design/network/products/npfamily/ixdpg425.htm

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

Intel IXDP465 Development Platformhttp://www.intel.com/design/network/products/npfamily/ixdp465.htm

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

Intel IXDPG425 Development Platform

This is basically and ADI Coyote board with a NEC EHCI controlleradded. One issue with this board is that the mini-PCI slots onlyhave the 3.3v line connected, so you can’t use a PCI to mini-PCIadapter with an E100 card. So to NFS root you need to use eitherthe CSR or a WiFi card and a ramdisk that BOOTPs and then doesa pivot_root to NFS.

Motorola PrPMC1100 Processor Mezanine Cardhttp://www.fountainsys.com

The PrPMC1100 is based on the IXCP1100 and is meant to plug intoand IXP2400/2800 system to act as the system controller. It simplycontains a CPU and 16MB of flash on the board and needs to beplugged into a carrier board to function. Currently Linux onlysupports the Motorola PrPMC carrier board for this platform.
  1. TODO LIST
  • Add support for Coyote IDE
  • Add support for edge-based GPIO interrupts
  • Add support for CF IDE on expansion bus
  1. 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