xref: /linux/Documentation/arch/arm/ixp4xx.rst (revision a23e1966932464e1c5226cb9ac4ce1d5fc10ba22)
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