Informations about the Networking Driver using the IXP4XX CPU internal NPEs and Queue manager. If this driver is used, the IAL (Intel Access Library) must not be loaded. However, the IAL may be loaded, if this Modules are unloaded: ixp4xx_npe.ko, ixp4xx_qmgr.ko ixp4xx_mac.ko This also means that HW crypto accelleration does NOT work when using this driver, unless I have finished my crypto driver for NPE-C Adoption to your custom board: ------------------------------ use "arch/arm/mach-ixp4xx/ixdp425-setup.c" as template: in "static struct mac_plat_info" adopt the entry "phy_id" to your needs (Ask your hardware designer about the PHY id) If in doubt, try the values from the ixdp425 board. The order of "&mac0" and "&mac1" in the "struct platform_device" determines which of them becomes eth0 and eth1. The Microcode: --------------- The Download functions below are endianess independent. If the image comes in wrong endianess, it is swapped automatically. Solution 1) Configure "CONFIG_HOTPLUG" and "CONFIG_FW_LOADER" and configure IXP4XX_NPE as module. The default hotplug script will load the Firmware from /usr/lib/hotplug/firmware/NPE-[ABC] see Documentation/firmware_class/hotplug-script You should take care, that $ACTION is "add" and $SUBSYSTEM is "firmware" to avoid unnessecary calls: test $ACTION = "remove" -o $SUBSYSTEM != "firmware" && exit Solution 2) create a char-dev: "mknod /dev/ixp4xx_ucode c 10 184". If you are using "udev" or busybox "mdev", they will do this for you automatically during module load. cat the Microcode into it: cat /usr/lib/hotplug/firmware/NPE-* > /dev/ixp4xx_ucode This also works if the driver is linked to the kernel Having a mix of both (e.g. solution 1 for NPE-B and solution 2 for NPE-C) is perfectly ok and works. The state of the NPEs can be seen and changed at: /sys/bus/platform/devices/ixp4xx_npe.X/state Obtaining the Microcode: ------------------------ 1) IxNpeMicrocode.h in this directory: Download IPL_IXP400NPELIBRARYWITHCRYPTO-2_1.ZIP from Intel It unpacks the Microcode IxNpeMicrocode.c Read the Licence ! Read the top of IxNpeMicrocode.h for more details. Compile it with "gcc -Wall IxNpeMicrocode.c -o IxNpeMicrocode" on your host. The resulting images can be moved to "/usr/lib/hotplug/firmware" The endianeess of the written microcode can be controlled by the switches -le -be. Default is big-endian. 2) mc_grab.c in this directory: Compile and execute it either on the host or on the target to grab the microcode from a binary image like the RedBoot bootloader. (big-endian images only)