xref: /netbsd-src/sys/arch/arm/xscale/ixp425-fw.README (revision 19ef5b5b0bcb90f63509df6e78769de1b57c2758)
1$NetBSD: ixp425-fw.README,v 1.2 2010/03/24 13:55:04 scw Exp $
2
3IXP425 NPE Microcode
4~~~~~~~~~~~~~~~~~~~~
5
6The IXP425 contains up to three network co-processors called NPEs,
7"Network Processing Engines". These control all the networking features
8of the IXP425 and are usually supported by Access Library (AL) software
9and NPE microcode obtained from Intel.
10
11The AL source code and compiled object files are encumbered by a license
12which precludes its distribution with NetBSD.
13
14However, NetBSD includes source for a native driver for NPE Ethernet
15written by Sam Leffler. The driver requires that Intel's microcode is
16loaded onto the NPE, but since we cannot distribute the microcode, it
17must be downloaded from Intel's website after agreeing to their click-
18through license.
19
20You must grab the NPE microcode from here:
21
22 http://www.intel.com/design/network/products/npfamily/download_ixp400.htm
23
24Select the "Download (without Crypto)" link in the "NPE Microcode"
25section. Note that there is no benefit in selecting the "with Cypto"
26microcode at this time since NetBSD does not support it.
27
28Note: At the time of writing (December 2006), the NPE Microcode is at
29version 2.3. Newer versions may not work with NetBSD's native Ethernet
30driver. If this is the case, let us know via send-pr(1).
31
32Update: As of March 2010, NPE Microcode is at version 3.0 and has been
33confirmed to work. See:
34 http://mail-index.netbsd.org/port-arm/2010/03/24/msg000912.html
35
36After clicking the link, you will be directed to a click-through license
37page. Assuming you agree to the terms of the license (and you are
38*strongly* advised to print it out and read it carefully) you will then
39be able to download a ZIP file containing the microcode.
40
41Extract the microcode under any decent Unix-like system using the "unzip"
42command provided with the OS, or with the version included in the pkgsrc
43collection under archivers/unzip:
44
45	$ unzip IPL_ixp400NpeLibrary-2_3.zip
46
47Next, you must generate a microcode image suitable for inclusion in the
48NetBSD kernel.
49
50	$ cd ixp400_xscale_sw/src/npeDl
51
52In this directory, create a file called IxNpeMicrocode.h, and populate
53it with the following two #defines:
54
55#define IX_NPEDL_NPEIMAGE_NPEB_ETH
56#define IX_NPEDL_NPEIMAGE_NPEC_ETH
57
58Note: If you know that you will only ever use Ethernet on NPE-B, you can
59omit the second line, and vice-versa.
60
61Now compile and run ixNpeDlImageConverter.c:
62
63	$ cc ixNpeDlImageConverter.c -o foo
64	$ ./foo
65
66Congratulations! You should now have a file called "IxNpeMicrocode.dat"
67in the current directory. Please take heed of the license you agreed to
68when you downloaded the Microcode. The license contains clauses which
69control the redistribution of this microcode object file.
70
71Now copy "IxNpeMicrocode.dat" to the sys/arch/arm/xscale directory in
72your NetBSD source tree. All you have to do now is run config(1) and
73build your kernel.
74
75If all went as planned, the Ethernet controller(s) will show up as npe0
76and npe1. That's all there is to it!
77
78It is planned that pkgsrc will, eventually, automate most of the above
79procedure.
80