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