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