1 diff -Naur ixp400_xscale_sw.orig/Makefile ixp400_xscale_sw/Makefile
2 --- ixp400_xscale_sw.orig/Makefile 2005-08-24 00:16:35.000000000 +0200
3 +++ ixp400_xscale_sw/Makefile 2005-08-30 19:01:47.000000000 +0200
5 # platforms. Components that work only for a subset of platforms
6 # should be added to the relevant *_COMPONENTS lists.
8 -BI_ENDIAN_COMPONENTS := atmdAcc atmm atmsch qmgr npeMh npeDl ethAcc ethDB ethMii hssAcc usb uartAcc featureCtrl ossl osServices
10 +# Intel default value: atmdAcc atmm atmsch qmgr npeMh npeDl ethAcc ethDB ethMii hssAcc usb uartAcc featureCtrl ossl osServices
11 +BI_ENDIAN_COMPONENTS := qmgr npeMh npeDl ethAcc ethDB ethMii ossl osServices featureCtrl
13 # The lists below contain the set of components available for each target platform
14 vxbe_COMPONENTS := $(BI_ENDIAN_COMPONENTS) perfProfAcc dmaAcc
15 vxle_COMPONENTS := $(BI_ENDIAN_COMPONENTS) perfProfAcc
16 vxsim_COMPONENTS := $(BI_ENDIAN_COMPONENTS) dmaAcc
17 -linuxbe_COMPONENTS := $(BI_ENDIAN_COMPONENTS) perfProfAcc dmaAcc
18 -linuxle_COMPONENTS := $(BI_ENDIAN_COMPONENTS) perfProfAcc
19 +linuxbe_COMPONENTS := $(BI_ENDIAN_COMPONENTS) # perfProfAcc dmaAcc
20 +linuxle_COMPONENTS := $(BI_ENDIAN_COMPONENTS) # perfProfAcc
22 # To facilitate automated builds, do not modify the value of COMPONENTS directly -
23 # just change the per-platform component lists above.
25 else # IX_TARGET_OS == vxworks
28 -ifeq ($(IX_TARGET), linuxbe)
29 -LINUX_CROSS_COMPILE := $(HARDHAT_BASE)/devkit/arm/xscale_be/bin/xscale_be-
31 -LINUX_CROSS_COMPILE := $(HARDHAT_BASE)/devkit/arm/xscale_le/bin/xscale_le-
32 +ifeq "$(LINUX_CROSS_COMPILE)" ""
33 + ifeq ($(IX_TARGET), linuxbe)
34 + LINUX_CROSS_COMPILE := $(HARDHAT_BASE)/devkit/arm/xscale_be/bin/xscale_be-
36 + LINUX_CROSS_COMPILE := $(HARDHAT_BASE)/devkit/arm/xscale_le/bin/xscale_le-
40 LD := $(LINUX_CROSS_COMPILE)ld
43 LINUX_MACH_CFLAGS := -D__LINUX_ARM_ARCH__=5 -mcpu=xscale -mtune=xscale
45 -CFLAGS := -D__KERNEL__ -I$(LINUX_SRC)/include -Wall -Wno-trigraphs -fno-common -pipe -mapcs-32 -mshort-load-bytes -msoft-float -DMODULE -Isrc/include -I$(NPE_OUTPUT_DIR) -D__linux -DCPU=33 -DXSCALE=33 $(LINUX_MACH_CFLAGS)
46 +CFLAGS := -D__KERNEL__ -I$(LINUX_SRC)/include -Wall -Wno-trigraphs -fno-common -pipe -mapcs-32 -msoft-float -DMODULE -Isrc/include -I$(NPE_OUTPUT_DIR) -D__linux -DCPU=33 -DXSCALE=33 $(LINUX_MACH_CFLAGS)
48 +# -mshort-load-bytes removed by Marc Singer's patch TODO(hannes) why?
52 @@ -1139,9 +1144,14 @@
54 ixp400.o : $(OBJ_DIR)/ixp400.o
56 +ixp400.ko : $(OBJ_DIR)/ixp400.o
58 -$(OBJ_DIR)/ixp400.o: $(COMPONENTS:%=$(OBJ_DIR)/ixp400_%.o) $(NPE_PRODUCTION_HEADER_OBJ) $(OSAL_MODULE)
59 +$(OBJ_DIR)/ixp400.o: $(COMPONENTS:%=$(OBJ_DIR)/ixp400_%.o) $(NPE_PRODUCTION_HEADER_OBJ) $(OSAL_MODULE) # add this to hack in the ethAcc codelet: $(OBJ_DIR)/ixp400_codelets_ethAcc.o
60 + touch $(OBJ_DIR)/ixp400.c
61 + cp Makefile.kmod26 $(OBJ_DIR)/Makefile
63 $(LD) $(LDFLAGS) $^ -o $@
68 diff -Naur ixp400_xscale_sw.orig/Makefile.kmod26 ixp400_xscale_sw/Makefile.kmod26
69 --- ixp400_xscale_sw.orig/Makefile.kmod26 1970-01-01 01:00:00.000000000 +0100
70 +++ ixp400_xscale_sw/Makefile.kmod26 2005-08-24 22:33:12.000000000 +0200
76 +LINUX_SRC := $($(IX_TARGET)_KERNEL_DIR)
79 + $(MAKE) ARCH=arm CROSS_COMPILE=$(LINUX_CROSS_COMPILE) V=1 -C $(LINUX_SRC) SUBDIRS=$(PWD) modules
83 diff -Naur ixp400_xscale_sw.orig/Readme-Kernel-2_6-Patch.txt ixp400_xscale_sw/Readme-Kernel-2_6-Patch.txt
84 --- ixp400_xscale_sw.orig/Readme-Kernel-2_6-Patch.txt 1970-01-01 01:00:00.000000000 +0100
85 +++ ixp400_xscale_sw/Readme-Kernel-2_6-Patch.txt 2005-09-28 19:50:30.000000000 +0200
87 +This file describes a patch to use version 1.5 of the Intel Ixp4XX
88 +Access Library with Linux 2.6 kernels.
93 +This patch consists of the changes made by Marc Singer for use of
94 +version 1.5 of the library with the APEX bootloader, and a patch made
95 +by Robin Farine and Tom Winkler for use of version 1.4 of the library
96 +with Linux-2.6 kernels. These changes were merged together by Hannes
99 +Both patches are incorporated in their entirety, with the exception of
100 +some tweaks to sleep times in the ethAcc code and modifications to
101 +the code in src/codelets/usb/ from the Robin Farine / Tom Winkler
107 +This code has been tested on a Linksys NSLU2. It works in big-endian
108 +mode, performance seems around 10% faster than 1.4.
110 +The code does not work in little-endian mode. It appears as though the
111 +hardware is initialised correctly, but packet receive / transmit done
112 +callbacks are never called.
117 +The patch is licenced under the same conditions as the original Access
118 +Library 1.5 (INTEL SOFTWARE LICENSE AGREEMENT). The full text of the
119 +licence can be downloaded from:
120 +http://www.intel.com/design/network/swsup/np_sla/ixp400.htm
122 +The patch is free, unsupported and the authors make no warranties.
123 +Use it at your own risk, do with it as you see fit so long as you do
124 +not violate the original licence agreement.
126 +The authors permit derivative works based upon the patch.
131 +The version 1.4 patch by Robin Farine and Tom Winkler is available from
132 +http://www.wnk.at/ixp400_accesslib_kernel26/data/patch_accesslib_kernel26_20040811.diff
134 +The version 1.5 patch by Marc Singer is at
135 +http://wiki.buici.com/bin/view/Main/IXPAccessLibrary
136 diff -Naur ixp400_xscale_sw.orig/src/codelets/dmaAcc/IxDmaAccCodelet_p.h ixp400_xscale_sw/src/codelets/dmaAcc/IxDmaAccCodelet_p.h
137 --- ixp400_xscale_sw.orig/src/codelets/dmaAcc/IxDmaAccCodelet_p.h 2005-08-24 00:16:36.000000000 +0200
138 +++ ixp400_xscale_sw/src/codelets/dmaAcc/IxDmaAccCodelet_p.h 2005-08-24 00:18:02.000000000 +0200
140 * @return IX_FAIL - Error initialising codelet
143 -ixDmaAccCodeletInit(IxDmaNpeId npeId);
144 +ixDmaAccCodeletInit(IxNpeDlNpeId npeId);
147 * @fn ixDmaAccCodeletTestPerform( UINT16 transferLength,
148 diff -Naur ixp400_xscale_sw.orig/src/ethDB/include/IxEthDB_p.h ixp400_xscale_sw/src/ethDB/include/IxEthDB_p.h
149 --- ixp400_xscale_sw.orig/src/ethDB/include/IxEthDB_p.h 2005-08-24 00:16:36.000000000 +0200
150 +++ ixp400_xscale_sw/src/ethDB/include/IxEthDB_p.h 2005-08-24 00:18:02.000000000 +0200
152 IX_ETH_DB_PUBLIC UINT32 ixEthDBKeyXORHash(void *macAddress);
155 -IX_ETH_DB_PUBLIC IxEthDBStatus ixEthDBNPEUpdateHandler(IxEthDBPortId portID, IxEthDBFeature type);
156 +IX_ETH_DB_PUBLIC IxEthDBStatus ixEthDBNPEUpdateHandler(IxEthDBPortId portID, IxEthDBRecordType type);
157 IX_ETH_DB_PUBLIC void ixEthDBUpdatePortLearningTrees(IxEthDBPortMap triggerPorts);
158 IX_ETH_DB_PUBLIC void ixEthDBNPEAccessRequest(IxEthDBPortId portID);
159 IX_ETH_DB_PUBLIC void ixEthDBUpdateLock(void);
160 diff -Naur ixp400_xscale_sw.orig/src/include/IxTypes.h ixp400_xscale_sw/src/include/IxTypes.h
161 --- ixp400_xscale_sw.orig/src/include/IxTypes.h 2005-08-24 00:16:36.000000000 +0200
162 +++ ixp400_xscale_sw/src/include/IxTypes.h 2005-08-26 01:19:15.000000000 +0200
168 +#define BIT(x) ((1)<<(x))
171 #include "IxOsalBackward.h"
173 #endif /* IxTypes_H */
174 diff -Naur ixp400_xscale_sw.orig/src/usb/include/usbprivatetypes.h ixp400_xscale_sw/src/usb/include/usbprivatetypes.h
175 --- ixp400_xscale_sw.orig/src/usb/include/usbprivatetypes.h 2005-08-24 00:16:36.000000000 +0200
176 +++ ixp400_xscale_sw/src/usb/include/usbprivatetypes.h 2005-08-24 00:18:02.000000000 +0200
228 typedef struct /* UDCRegisters */
230 volatile UINT32 UDCCR;
232 volatile UINT32 UDDR14;
236 typedef struct /* USBDeviceContext */
238 UINT32 checkPattern; /* Check pattern for verifying the context */