1e790a4ceSJonathan Corbet=========================================================== 2e790a4ceSJonathan CorbetRelease Notes for Linux on Intel's IXP4xx Network Processor 3e790a4ceSJonathan Corbet=========================================================== 4e790a4ceSJonathan Corbet 5e790a4ceSJonathan CorbetMaintained by Deepak Saxena <dsaxena@plexity.net> 6e790a4ceSJonathan Corbet------------------------------------------------------------------------- 7e790a4ceSJonathan Corbet 8e790a4ceSJonathan Corbet1. Overview 9e790a4ceSJonathan Corbet 10e790a4ceSJonathan CorbetIntel's IXP4xx network processor is a highly integrated SOC that 11e790a4ceSJonathan Corbetis targeted for network applications, though it has become popular 12e790a4ceSJonathan Corbetin industrial control and other areas due to low cost and power 13e790a4ceSJonathan Corbetconsumption. The IXP4xx family currently consists of several processors 14e790a4ceSJonathan Corbetthat support different network offload functions such as encryption, 15e790a4ceSJonathan Corbetrouting, firewalling, etc. The IXP46x family is an updated version which 16e790a4ceSJonathan Corbetsupports faster speeds, new memory and flash configurations, and more 17e790a4ceSJonathan Corbetintegration such as an on-chip I2C controller. 18e790a4ceSJonathan Corbet 19e790a4ceSJonathan CorbetFor more information on the various versions of the CPU, see: 20e790a4ceSJonathan Corbet 21e790a4ceSJonathan Corbet http://developer.intel.com/design/network/products/npfamily/ixp4xx.htm 22e790a4ceSJonathan Corbet 23e790a4ceSJonathan CorbetIntel also made the IXCP1100 CPU for sometime which is an IXP4xx 24e790a4ceSJonathan Corbetstripped of much of the network intelligence. 25e790a4ceSJonathan Corbet 26e790a4ceSJonathan Corbet2. Linux Support 27e790a4ceSJonathan Corbet 28e790a4ceSJonathan CorbetLinux currently supports the following features on the IXP4xx chips: 29e790a4ceSJonathan Corbet 30e790a4ceSJonathan Corbet- Dual serial ports 31e790a4ceSJonathan Corbet- PCI interface 32e790a4ceSJonathan Corbet- Flash access (MTD/JFFS) 33e790a4ceSJonathan Corbet- I2C through GPIO on IXP42x 34e790a4ceSJonathan Corbet- GPIO for input/output/interrupts 35e790a4ceSJonathan Corbet See arch/arm/mach-ixp4xx/include/mach/platform.h for access functions. 36e790a4ceSJonathan Corbet- Timers (watchdog, OS) 37e790a4ceSJonathan Corbet 38e790a4ceSJonathan CorbetThe following components of the chips are not supported by Linux and 39e790a4ceSJonathan Corbetrequire the use of Intel's proprietary CSR software: 40e790a4ceSJonathan Corbet 41e790a4ceSJonathan Corbet- USB device interface 42e790a4ceSJonathan Corbet- Network interfaces (HSS, Utopia, NPEs, etc) 43e790a4ceSJonathan Corbet- Network offload functionality 44e790a4ceSJonathan Corbet 45e790a4ceSJonathan CorbetIf you need to use any of the above, you need to download Intel's 46e790a4ceSJonathan Corbetsoftware from: 47e790a4ceSJonathan Corbet 48e790a4ceSJonathan Corbet http://developer.intel.com/design/network/products/npfamily/ixp425.htm 49e790a4ceSJonathan Corbet 50e790a4ceSJonathan CorbetDO NOT POST QUESTIONS TO THE LINUX MAILING LISTS REGARDING THE PROPRIETARY 51e790a4ceSJonathan CorbetSOFTWARE. 52e790a4ceSJonathan Corbet 53e790a4ceSJonathan CorbetThere are several websites that provide directions/pointers on using 54e790a4ceSJonathan CorbetIntel's software: 55e790a4ceSJonathan Corbet 56e790a4ceSJonathan Corbet - http://sourceforge.net/projects/ixp4xx-osdg/ 57e790a4ceSJonathan Corbet Open Source Developer's Guide for using uClinux and the Intel libraries 58e790a4ceSJonathan Corbet 59e790a4ceSJonathan Corbet - http://gatewaymaker.sourceforge.net/ 60e790a4ceSJonathan Corbet Simple one page summary of building a gateway using an IXP425 and Linux 61e790a4ceSJonathan Corbet 62e790a4ceSJonathan Corbet - http://ixp425.sourceforge.net/ 63e790a4ceSJonathan Corbet ATM device driver for IXP425 that relies on Intel's libraries 64e790a4ceSJonathan Corbet 65e790a4ceSJonathan Corbet3. Known Issues/Limitations 66e790a4ceSJonathan Corbet 67e790a4ceSJonathan Corbet3a. Limited inbound PCI window 68e790a4ceSJonathan Corbet 69e790a4ceSJonathan CorbetThe IXP4xx family allows for up to 256MB of memory but the PCI interface 70e790a4ceSJonathan Corbetcan only expose 64MB of that memory to the PCI bus. This means that if 71e790a4ceSJonathan Corbetyou are running with > 64MB, all PCI buffers outside of the accessible 72e790a4ceSJonathan Corbetrange will be bounced using the routines in arch/arm/common/dmabounce.c. 73e790a4ceSJonathan Corbet 74e790a4ceSJonathan Corbet3b. Limited outbound PCI window 75e790a4ceSJonathan Corbet 76e790a4ceSJonathan CorbetIXP4xx provides two methods of accessing PCI memory space: 77e790a4ceSJonathan Corbet 78e790a4ceSJonathan Corbet1) A direct mapped window from 0x48000000 to 0x4bffffff (64MB). 79e790a4ceSJonathan Corbet To access PCI via this space, we simply ioremap() the BAR 80e790a4ceSJonathan Corbet into the kernel and we can use the standard read[bwl]/write[bwl] 81*d56b699dSBjorn Helgaas macros. This is the preferred method due to speed but it 82e790a4ceSJonathan Corbet limits the system to just 64MB of PCI memory. This can be 83*d56b699dSBjorn Helgaas problematic if using video cards and other memory-heavy devices. 84e790a4ceSJonathan Corbet 85e790a4ceSJonathan Corbet2) If > 64MB of memory space is required, the IXP4xx can be 86e790a4ceSJonathan Corbet configured to use indirect registers to access PCI This allows 87e790a4ceSJonathan Corbet for up to 128MB (0x48000000 to 0x4fffffff) of memory on the bus. 88e790a4ceSJonathan Corbet The disadvantage of this is that every PCI access requires 89e790a4ceSJonathan Corbet three local register accesses plus a spinlock, but in some 90e790a4ceSJonathan Corbet cases the performance hit is acceptable. In addition, you cannot 91e790a4ceSJonathan Corbet mmap() PCI devices in this case due to the indirect nature 92e790a4ceSJonathan Corbet of the PCI window. 93e790a4ceSJonathan Corbet 94e790a4ceSJonathan CorbetBy default, the direct method is used for performance reasons. If 95e790a4ceSJonathan Corbetyou need more PCI memory, enable the IXP4XX_INDIRECT_PCI config option. 96e790a4ceSJonathan Corbet 97e790a4ceSJonathan Corbet3c. GPIO as Interrupts 98e790a4ceSJonathan Corbet 99e790a4ceSJonathan CorbetCurrently the code only handles level-sensitive GPIO interrupts 100e790a4ceSJonathan Corbet 101e790a4ceSJonathan Corbet4. Supported platforms 102e790a4ceSJonathan Corbet 103e790a4ceSJonathan CorbetADI Engineering Coyote Gateway Reference Platform 104e790a4ceSJonathan Corbethttp://www.adiengineering.com/productsCoyote.html 105e790a4ceSJonathan Corbet 106e790a4ceSJonathan Corbet The ADI Coyote platform is reference design for those building 107e790a4ceSJonathan Corbet small residential/office gateways. One NPE is connected to a 10/100 108e790a4ceSJonathan Corbet interface, one to 4-port 10/100 switch, and the third to and ADSL 109e790a4ceSJonathan Corbet interface. In addition, it also supports to POTs interfaces connected 110e790a4ceSJonathan Corbet via SLICs. Note that those are not supported by Linux ATM. Finally, 111e790a4ceSJonathan Corbet the platform has two mini-PCI slots used for 802.11[bga] cards. 112e790a4ceSJonathan Corbet Finally, there is an IDE port hanging off the expansion bus. 113e790a4ceSJonathan Corbet 114e790a4ceSJonathan CorbetGateworks Avila Network Platform 115e790a4ceSJonathan Corbethttp://www.gateworks.com/support/overview.php 116e790a4ceSJonathan Corbet 117e790a4ceSJonathan Corbet The Avila platform is basically and IXDP425 with the 4 PCI slots 118e790a4ceSJonathan Corbet replaced with mini-PCI slots and a CF IDE interface hanging off 119e790a4ceSJonathan Corbet the expansion bus. 120e790a4ceSJonathan Corbet 121e790a4ceSJonathan CorbetIntel IXDP425 Development Platform 122e790a4ceSJonathan Corbethttp://www.intel.com/design/network/products/npfamily/ixdpg425.htm 123e790a4ceSJonathan Corbet 124e790a4ceSJonathan Corbet This is Intel's standard reference platform for the IXDP425 and is 125e790a4ceSJonathan Corbet also known as the Richfield board. It contains 4 PCI slots, 16MB 126e790a4ceSJonathan Corbet of flash, two 10/100 ports and one ADSL port. 127e790a4ceSJonathan Corbet 128e790a4ceSJonathan CorbetIntel IXDP465 Development Platform 129e790a4ceSJonathan Corbethttp://www.intel.com/design/network/products/npfamily/ixdp465.htm 130e790a4ceSJonathan Corbet 131e790a4ceSJonathan Corbet This is basically an IXDP425 with an IXP465 and 32M of flash instead 132e790a4ceSJonathan Corbet of just 16. 133e790a4ceSJonathan Corbet 134e790a4ceSJonathan CorbetIntel IXDPG425 Development Platform 135e790a4ceSJonathan Corbet 136e790a4ceSJonathan Corbet This is basically and ADI Coyote board with a NEC EHCI controller 137e790a4ceSJonathan Corbet added. One issue with this board is that the mini-PCI slots only 138e790a4ceSJonathan Corbet have the 3.3v line connected, so you can't use a PCI to mini-PCI 139e790a4ceSJonathan Corbet adapter with an E100 card. So to NFS root you need to use either 140e790a4ceSJonathan Corbet the CSR or a WiFi card and a ramdisk that BOOTPs and then does 141e790a4ceSJonathan Corbet a pivot_root to NFS. 142e790a4ceSJonathan Corbet 143e790a4ceSJonathan CorbetMotorola PrPMC1100 Processor Mezanine Card 144e790a4ceSJonathan Corbethttp://www.fountainsys.com 145e790a4ceSJonathan Corbet 146e790a4ceSJonathan Corbet The PrPMC1100 is based on the IXCP1100 and is meant to plug into 147e790a4ceSJonathan Corbet and IXP2400/2800 system to act as the system controller. It simply 148e790a4ceSJonathan Corbet contains a CPU and 16MB of flash on the board and needs to be 149e790a4ceSJonathan Corbet plugged into a carrier board to function. Currently Linux only 150e790a4ceSJonathan Corbet supports the Motorola PrPMC carrier board for this platform. 151e790a4ceSJonathan Corbet 152e790a4ceSJonathan Corbet5. TODO LIST 153e790a4ceSJonathan Corbet 154e790a4ceSJonathan Corbet- Add support for Coyote IDE 155e790a4ceSJonathan Corbet- Add support for edge-based GPIO interrupts 156e790a4ceSJonathan Corbet- Add support for CF IDE on expansion bus 157e790a4ceSJonathan Corbet 158e790a4ceSJonathan Corbet6. Thanks 159e790a4ceSJonathan Corbet 160e790a4ceSJonathan CorbetThe IXP4xx work has been funded by Intel Corp. and MontaVista Software, Inc. 161e790a4ceSJonathan Corbet 162e790a4ceSJonathan CorbetThe following people have contributed patches/comments/etc: 163e790a4ceSJonathan Corbet 164e790a4ceSJonathan Corbet- Lennerty Buytenhek 165e790a4ceSJonathan Corbet- Lutz Jaenicke 166e790a4ceSJonathan Corbet- Justin Mayfield 167e790a4ceSJonathan Corbet- Robert E. Ranslam 168e790a4ceSJonathan Corbet 169e790a4ceSJonathan Corbet[I know I've forgotten others, please email me to be added] 170e790a4ceSJonathan Corbet 171e790a4ceSJonathan Corbet------------------------------------------------------------------------- 172e790a4ceSJonathan Corbet 173e790a4ceSJonathan CorbetLast Update: 01/04/2005 174