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