1dc7a12bdSMauro Carvalho Chehab=========================================================== 21da177e4SLinus TorvaldsRelease Notes for Linux on Intel's IXP4xx Network Processor 3dc7a12bdSMauro Carvalho Chehab=========================================================== 41da177e4SLinus Torvalds 51da177e4SLinus TorvaldsMaintained by Deepak Saxena <dsaxena@plexity.net> 61da177e4SLinus Torvalds------------------------------------------------------------------------- 71da177e4SLinus Torvalds 81da177e4SLinus Torvalds1. Overview 91da177e4SLinus Torvalds 101da177e4SLinus TorvaldsIntel's IXP4xx network processor is a highly integrated SOC that 111da177e4SLinus Torvaldsis targeted for network applications, though it has become popular 121da177e4SLinus Torvaldsin industrial control and other areas due to low cost and power 131da177e4SLinus Torvaldsconsumption. The IXP4xx family currently consists of several processors 141da177e4SLinus Torvaldsthat support different network offload functions such as encryption, 151da177e4SLinus Torvaldsrouting, firewalling, etc. The IXP46x family is an updated version which 161da177e4SLinus Torvaldssupports faster speeds, new memory and flash configurations, and more 171da177e4SLinus Torvaldsintegration such as an on-chip I2C controller. 181da177e4SLinus Torvalds 191da177e4SLinus TorvaldsFor more information on the various versions of the CPU, see: 201da177e4SLinus Torvalds 211da177e4SLinus Torvalds http://developer.intel.com/design/network/products/npfamily/ixp4xx.htm 221da177e4SLinus Torvalds 231da177e4SLinus TorvaldsIntel also made the IXCP1100 CPU for sometime which is an IXP4xx 241da177e4SLinus Torvaldsstripped of much of the network intelligence. 251da177e4SLinus Torvalds 261da177e4SLinus Torvalds2. Linux Support 271da177e4SLinus Torvalds 281da177e4SLinus TorvaldsLinux currently supports the following features on the IXP4xx chips: 291da177e4SLinus Torvalds 301da177e4SLinus Torvalds- Dual serial ports 311da177e4SLinus Torvalds- PCI interface 321da177e4SLinus Torvalds- Flash access (MTD/JFFS) 331da177e4SLinus Torvalds- I2C through GPIO on IXP42x 341da177e4SLinus Torvalds- GPIO for input/output/interrupts 35a09e64fbSRussell King See arch/arm/mach-ixp4xx/include/mach/platform.h for access functions. 361da177e4SLinus Torvalds- Timers (watchdog, OS) 371da177e4SLinus Torvalds 381da177e4SLinus TorvaldsThe following components of the chips are not supported by Linux and 396d1ee2ceSStefan Huberrequire the use of Intel's proprietary CSR software: 401da177e4SLinus Torvalds 411da177e4SLinus Torvalds- USB device interface 421da177e4SLinus Torvalds- Network interfaces (HSS, Utopia, NPEs, etc) 431da177e4SLinus Torvalds- Network offload functionality 441da177e4SLinus Torvalds 451da177e4SLinus TorvaldsIf you need to use any of the above, you need to download Intel's 461da177e4SLinus Torvaldssoftware from: 471da177e4SLinus Torvalds 480ea6e611SJustin P. Mattock http://developer.intel.com/design/network/products/npfamily/ixp425.htm 491da177e4SLinus Torvalds 5025985edcSLucas De MarchiDO NOT POST QUESTIONS TO THE LINUX MAILING LISTS REGARDING THE PROPRIETARY 511da177e4SLinus TorvaldsSOFTWARE. 521da177e4SLinus Torvalds 531da177e4SLinus TorvaldsThere are several websites that provide directions/pointers on using 541da177e4SLinus TorvaldsIntel's software: 551da177e4SLinus Torvalds 56dc7a12bdSMauro Carvalho Chehab - http://sourceforge.net/projects/ixp4xx-osdg/ 571da177e4SLinus Torvalds Open Source Developer's Guide for using uClinux and the Intel libraries 581da177e4SLinus Torvalds 59dc7a12bdSMauro Carvalho Chehab - http://gatewaymaker.sourceforge.net/ 601da177e4SLinus Torvalds Simple one page summary of building a gateway using an IXP425 and Linux 611da177e4SLinus Torvalds 62dc7a12bdSMauro Carvalho Chehab - http://ixp425.sourceforge.net/ 631da177e4SLinus Torvalds ATM device driver for IXP425 that relies on Intel's libraries 641da177e4SLinus Torvalds 651da177e4SLinus Torvalds3. Known Issues/Limitations 661da177e4SLinus Torvalds 671da177e4SLinus Torvalds3a. Limited inbound PCI window 681da177e4SLinus Torvalds 691da177e4SLinus TorvaldsThe IXP4xx family allows for up to 256MB of memory but the PCI interface 701da177e4SLinus Torvaldscan only expose 64MB of that memory to the PCI bus. This means that if 711da177e4SLinus Torvaldsyou are running with > 64MB, all PCI buffers outside of the accessible 721da177e4SLinus Torvaldsrange will be bounced using the routines in arch/arm/common/dmabounce.c. 731da177e4SLinus Torvalds 741da177e4SLinus Torvalds3b. Limited outbound PCI window 751da177e4SLinus Torvalds 761da177e4SLinus TorvaldsIXP4xx provides two methods of accessing PCI memory space: 771da177e4SLinus Torvalds 781da177e4SLinus Torvalds1) A direct mapped window from 0x48000000 to 0x4bffffff (64MB). 791da177e4SLinus Torvalds To access PCI via this space, we simply ioremap() the BAR 801da177e4SLinus Torvalds 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 821da177e4SLinus Torvalds 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. 841da177e4SLinus Torvalds 851da177e4SLinus Torvalds2) If > 64MB of memory space is required, the IXP4xx can be 861da177e4SLinus Torvalds configured to use indirect registers to access PCI This allows 871da177e4SLinus Torvalds for up to 128MB (0x48000000 to 0x4fffffff) of memory on the bus. 88fd245f00SAdrian Bunk The disadvantage of this is that every PCI access requires 891da177e4SLinus Torvalds three local register accesses plus a spinlock, but in some 901da177e4SLinus Torvalds cases the performance hit is acceptable. In addition, you cannot 911da177e4SLinus Torvalds mmap() PCI devices in this case due to the indirect nature 921da177e4SLinus Torvalds of the PCI window. 931da177e4SLinus Torvalds 941da177e4SLinus TorvaldsBy default, the direct method is used for performance reasons. If 951da177e4SLinus Torvaldsyou need more PCI memory, enable the IXP4XX_INDIRECT_PCI config option. 961da177e4SLinus Torvalds 971da177e4SLinus Torvalds3c. GPIO as Interrupts 981da177e4SLinus Torvalds 991da177e4SLinus TorvaldsCurrently the code only handles level-sensitive GPIO interrupts 1001da177e4SLinus Torvalds 1011da177e4SLinus Torvalds4. Supported platforms 1021da177e4SLinus Torvalds 1031da177e4SLinus TorvaldsADI Engineering Coyote Gateway Reference Platform 1041da177e4SLinus Torvaldshttp://www.adiengineering.com/productsCoyote.html 1051da177e4SLinus Torvalds 1061da177e4SLinus Torvalds The ADI Coyote platform is reference design for those building 1071da177e4SLinus Torvalds small residential/office gateways. One NPE is connected to a 10/100 1081da177e4SLinus Torvalds interface, one to 4-port 10/100 switch, and the third to and ADSL 1091da177e4SLinus Torvalds interface. In addition, it also supports to POTs interfaces connected 1101da177e4SLinus Torvalds via SLICs. Note that those are not supported by Linux ATM. Finally, 1111da177e4SLinus Torvalds the platform has two mini-PCI slots used for 802.11[bga] cards. 1121da177e4SLinus Torvalds Finally, there is an IDE port hanging off the expansion bus. 1131da177e4SLinus Torvalds 1141da177e4SLinus TorvaldsGateworks Avila Network Platform 1150ea6e611SJustin P. Mattockhttp://www.gateworks.com/support/overview.php 1161da177e4SLinus Torvalds 1171da177e4SLinus Torvalds The Avila platform is basically and IXDP425 with the 4 PCI slots 1181da177e4SLinus Torvalds replaced with mini-PCI slots and a CF IDE interface hanging off 1191da177e4SLinus Torvalds the expansion bus. 1201da177e4SLinus Torvalds 1211da177e4SLinus TorvaldsIntel IXDP425 Development Platform 1220ea6e611SJustin P. Mattockhttp://www.intel.com/design/network/products/npfamily/ixdpg425.htm 1231da177e4SLinus Torvalds 1241da177e4SLinus Torvalds This is Intel's standard reference platform for the IXDP425 and is 1251da177e4SLinus Torvalds also known as the Richfield board. It contains 4 PCI slots, 16MB 1261da177e4SLinus Torvalds of flash, two 10/100 ports and one ADSL port. 1271da177e4SLinus Torvalds 1281da177e4SLinus TorvaldsIntel IXDP465 Development Platform 1290ea6e611SJustin P. Mattockhttp://www.intel.com/design/network/products/npfamily/ixdp465.htm 1301da177e4SLinus Torvalds 1311da177e4SLinus Torvalds This is basically an IXDP425 with an IXP465 and 32M of flash instead 1321da177e4SLinus Torvalds of just 16. 1331da177e4SLinus Torvalds 1341da177e4SLinus TorvaldsIntel IXDPG425 Development Platform 1351da177e4SLinus Torvalds 1361da177e4SLinus Torvalds This is basically and ADI Coyote board with a NEC EHCI controller 1371da177e4SLinus Torvalds added. One issue with this board is that the mini-PCI slots only 1381da177e4SLinus Torvalds have the 3.3v line connected, so you can't use a PCI to mini-PCI 1391da177e4SLinus Torvalds adapter with an E100 card. So to NFS root you need to use either 1401da177e4SLinus Torvalds the CSR or a WiFi card and a ramdisk that BOOTPs and then does 1411da177e4SLinus Torvalds a pivot_root to NFS. 1421da177e4SLinus Torvalds 1431da177e4SLinus TorvaldsMotorola PrPMC1100 Processor Mezanine Card 1440ea6e611SJustin P. Mattockhttp://www.fountainsys.com 1451da177e4SLinus Torvalds 1461da177e4SLinus Torvalds The PrPMC1100 is based on the IXCP1100 and is meant to plug into 1471da177e4SLinus Torvalds and IXP2400/2800 system to act as the system controller. It simply 1481da177e4SLinus Torvalds contains a CPU and 16MB of flash on the board and needs to be 1491da177e4SLinus Torvalds plugged into a carrier board to function. Currently Linux only 1501da177e4SLinus Torvalds supports the Motorola PrPMC carrier board for this platform. 1511da177e4SLinus Torvalds 1521da177e4SLinus Torvalds5. TODO LIST 1531da177e4SLinus Torvalds 1541da177e4SLinus Torvalds- Add support for Coyote IDE 1551da177e4SLinus Torvalds- Add support for edge-based GPIO interrupts 1561da177e4SLinus Torvalds- Add support for CF IDE on expansion bus 1571da177e4SLinus Torvalds 1581da177e4SLinus Torvalds6. Thanks 1591da177e4SLinus Torvalds 1601da177e4SLinus TorvaldsThe IXP4xx work has been funded by Intel Corp. and MontaVista Software, Inc. 1611da177e4SLinus Torvalds 1621da177e4SLinus TorvaldsThe following people have contributed patches/comments/etc: 1631da177e4SLinus Torvalds 164dc7a12bdSMauro Carvalho Chehab- Lennerty Buytenhek 165dc7a12bdSMauro Carvalho Chehab- Lutz Jaenicke 166dc7a12bdSMauro Carvalho Chehab- Justin Mayfield 167dc7a12bdSMauro Carvalho Chehab- Robert E. Ranslam 168dc7a12bdSMauro Carvalho Chehab 1691da177e4SLinus Torvalds[I know I've forgotten others, please email me to be added] 1701da177e4SLinus Torvalds 1711da177e4SLinus Torvalds------------------------------------------------------------------------- 1721da177e4SLinus Torvalds 1731da177e4SLinus TorvaldsLast Update: 01/04/2005 174