summaryrefslogtreecommitdiff
path: root/recipes
diff options
context:
space:
mode:
Diffstat (limited to 'recipes')
-rw-r--r--recipes/ixp425-eth/files/2.6.13.patch41
-rw-r--r--recipes/ixp425-eth/files/2.6.14.patch28
-rw-r--r--recipes/ixp425-eth/files/ethhdr.patch25
-rw-r--r--recipes/ixp425-eth/files/intdriven.patch98
-rw-r--r--recipes/ixp425-eth/files/ixp400_pollcontroller.patch50
-rw-r--r--recipes/ixp425-eth/files/makefile.patch18
-rw-r--r--recipes/ixp425-eth/files/mm4.patch19
-rw-r--r--recipes/ixp425-eth/files/modprobe.conf3
-rw-r--r--recipes/ixp425-eth/files/pollcontroller.patch50
-rw-r--r--recipes/ixp425-eth/ixp400-eth-1.4/2.6.13.patch39
-rw-r--r--recipes/ixp425-eth/ixp400-eth-1.4/2.6.14-mm.patch44
-rw-r--r--recipes/ixp425-eth/ixp400-eth-1.4/2.6.14.patch24
-rw-r--r--recipes/ixp425-eth/ixp400-eth-1.4/ixp400-le-be.patch948
-rw-r--r--recipes/ixp425-eth/ixp400-eth-1.4/makefile.patch33
-rw-r--r--recipes/ixp425-eth/ixp400-eth-1.4/modprobe.conf3
-rw-r--r--recipes/ixp425-eth/ixp400-eth-1.5.1/2.6.14.patch28
-rw-r--r--recipes/ixp425-eth/ixp400-eth-1.5.1/2.6.15.patch18
-rw-r--r--recipes/ixp425-eth/ixp400-eth-1.5.1/Makefile.patch36
-rw-r--r--recipes/ixp425-eth/ixp400-eth-1.5.1/continue-if-qmgr-init-fails.patch22
-rw-r--r--recipes/ixp425-eth/ixp400-eth-1.5.1/debug.patch131
-rw-r--r--recipes/ixp425-eth/ixp400-eth-1.5.1/device-name.patch49
-rw-r--r--recipes/ixp425-eth/ixp400-eth-1.5.1/int-random.patch16
-rw-r--r--recipes/ixp425-eth/ixp400-eth-1.5.1/le.patch41
-rw-r--r--recipes/ixp425-eth/ixp400-eth-1.5.1/mac-address.patch123
-rw-r--r--recipes/ixp425-eth/ixp400-eth-1.5.1/modprobe.conf4
-rw-r--r--recipes/ixp425-eth/ixp400-eth-1.5.1/module-param.patch62
-rw-r--r--recipes/ixp425-eth/ixp400-eth-1.5.1/netdev_max_backlog.patch54
-rw-r--r--recipes/ixp425-eth/ixp400-eth-1.5.1/params.patch75
-rw-r--r--recipes/ixp425-eth/ixp400-eth-1.5.1/poll-controller.patch50
-rw-r--r--recipes/ixp425-eth/ixp400-eth-1.5.1/stop-on-rmmod.patch29
-rw-r--r--recipes/ixp425-eth/ixp400-eth-1.5/2.6.14.patch35
-rw-r--r--recipes/ixp425-eth/ixp400-eth-1.5/2.6.15.patch18
-rw-r--r--recipes/ixp425-eth/ixp400-eth-1.5/Makefile.patch36
-rw-r--r--recipes/ixp425-eth/ixp400-eth-1.5/continue-if-qmgr-init-fails.patch22
-rw-r--r--recipes/ixp425-eth/ixp400-eth-1.5/debug.patch131
-rw-r--r--recipes/ixp425-eth/ixp400-eth-1.5/device-name.patch47
-rw-r--r--recipes/ixp425-eth/ixp400-eth-1.5/int-random.patch16
-rw-r--r--recipes/ixp425-eth/ixp400-eth-1.5/le.patch41
-rw-r--r--recipes/ixp425-eth/ixp400-eth-1.5/mac-address.patch123
-rw-r--r--recipes/ixp425-eth/ixp400-eth-1.5/modprobe.conf4
-rw-r--r--recipes/ixp425-eth/ixp400-eth-1.5/module-param.patch62
-rw-r--r--recipes/ixp425-eth/ixp400-eth-1.5/netdev_max_backlog.patch54
-rw-r--r--recipes/ixp425-eth/ixp400-eth-1.5/params.patch75
-rw-r--r--recipes/ixp425-eth/ixp400-eth-1.5/poll-controller.patch50
-rw-r--r--recipes/ixp425-eth/ixp400-eth-1.5/stop-on-rmmod.patch29
-rw-r--r--recipes/ixp425-eth/ixp400-eth_1.4.bb54
-rw-r--r--recipes/ixp425-eth/ixp400-eth_1.5.1.bb87
-rw-r--r--recipes/ixp425-eth/ixp400-eth_1.5.bb86
-rw-r--r--recipes/ixp425-eth/ixp425-eth-1.2/2.6.13.patch39
-rw-r--r--recipes/ixp425-eth/ixp425-eth-1.2/2.6.14.patch24
-rw-r--r--recipes/ixp425-eth/ixp425-eth-1.2/ixp400linuxethernetdriver-1_2-kernel26_hr_20050929.patch1468
-rw-r--r--recipes/ixp425-eth/ixp425-eth-1.2/makefile.patch11
-rw-r--r--recipes/ixp425-eth/ixp425-eth_1.1.bb46
-rw-r--r--recipes/ixp425-eth/ixp425-eth_1.2.bb46
-rw-r--r--recipes/ixp4xx/ixp-osal-1.5/2.6.patch413
-rw-r--r--recipes/ixp4xx/ixp-osal-2.0/2.6.patch363
-rw-r--r--recipes/ixp4xx/ixp-osal-2.0/Makefile.patch27
-rw-r--r--recipes/ixp4xx/ixp-osal-2.0/le.patch50
-rw-r--r--recipes/ixp4xx/ixp-osal-2.1.1/2.6.patch143
-rw-r--r--recipes/ixp4xx/ixp-osal-2.1.1/Makefile.patch30
-rw-r--r--recipes/ixp4xx/ixp-osal-2.1.1/assert.patch41
-rw-r--r--recipes/ixp4xx/ixp-osal-2.1.1/invalidate-cache.patch115
-rw-r--r--recipes/ixp4xx/ixp-osal-2.1.1/ixp4xx-header.patch115
-rw-r--r--recipes/ixp4xx/ixp-osal-2.1.1/le.patch72
-rw-r--r--recipes/ixp4xx/ixp-osal-2.1/2.6.patch143
-rw-r--r--recipes/ixp4xx/ixp-osal-2.1/Makefile.patch30
-rw-r--r--recipes/ixp4xx/ixp-osal-2.1/assert.patch41
-rw-r--r--recipes/ixp4xx/ixp-osal-2.1/invalidate-cache.patch115
-rw-r--r--recipes/ixp4xx/ixp-osal-2.1/ixp4xx-header.patch115
-rw-r--r--recipes/ixp4xx/ixp-osal-2.1/le.patch72
-rw-r--r--recipes/ixp4xx/ixp-osal_1.5.bb72
-rw-r--r--recipes/ixp4xx/ixp-osal_2.0.bb82
-rw-r--r--recipes/ixp4xx/ixp-osal_2.1.1.bb101
-rw-r--r--recipes/ixp4xx/ixp-osal_2.1.bb89
-rw-r--r--recipes/ixp4xx/ixp4xx-csr-1.5/2.6.patch238
-rw-r--r--recipes/ixp4xx/ixp4xx-csr-2.0/2.6.14.patch20
-rw-r--r--recipes/ixp4xx/ixp4xx-csr-2.0/2.6.patch148
-rw-r--r--recipes/ixp4xx/ixp4xx-csr-2.0/Makefile.patch61
-rw-r--r--recipes/ixp4xx/ixp4xx-csr-2.0/le.patch24
-rw-r--r--recipes/ixp4xx/ixp4xx-csr-2.1.1/Makefile.patch26
-rw-r--r--recipes/ixp4xx/ixp4xx-csr-2.1.1/bit-macro.patch14
-rw-r--r--recipes/ixp4xx/ixp4xx-csr-2.1.1/gcc4.patch23
-rw-r--r--recipes/ixp4xx/ixp4xx-csr-2.1.1/ixethdb-header.patch11
-rw-r--r--recipes/ixp4xx/ixp4xx-csr-2.1.1/ixnpemhconfigisr-is-private.patch18
-rw-r--r--recipes/ixp4xx/ixp4xx-csr-2.1.1/le.patch13
-rw-r--r--recipes/ixp4xx/ixp4xx-csr-2.1.1/livelock.patch19
-rw-r--r--recipes/ixp4xx/ixp4xx-csr-2.1.1/mii-debug.patch26
-rw-r--r--recipes/ixp4xx/ixp4xx-csr-2.1.1/module-param.patch19
-rw-r--r--recipes/ixp4xx/ixp4xx-csr-2.1.1/module-use-count.patch24
-rw-r--r--recipes/ixp4xx/ixp4xx-csr-2.1.1/oe-makefile.patch61
-rw-r--r--recipes/ixp4xx/ixp4xx-csr-2.1.1/rtl8201-support.patch30
-rw-r--r--recipes/ixp4xx/ixp4xx-csr-2.1.1/undefined-attribute.patch16
-rw-r--r--recipes/ixp4xx/ixp4xx-csr-2.1/Makefile.patch26
-rw-r--r--recipes/ixp4xx/ixp4xx-csr-2.1/bit-macro.patch14
-rw-r--r--recipes/ixp4xx/ixp4xx-csr-2.1/gcc4.patch23
-rw-r--r--recipes/ixp4xx/ixp4xx-csr-2.1/ixethdb-header.patch11
-rw-r--r--recipes/ixp4xx/ixp4xx-csr-2.1/ixnpemhconfigisr-is-private.patch18
-rw-r--r--recipes/ixp4xx/ixp4xx-csr-2.1/le.patch13
-rw-r--r--recipes/ixp4xx/ixp4xx-csr-2.1/livelock.patch19
-rw-r--r--recipes/ixp4xx/ixp4xx-csr-2.1/mii-debug.patch26
-rw-r--r--recipes/ixp4xx/ixp4xx-csr-2.1/module-param.patch19
-rw-r--r--recipes/ixp4xx/ixp4xx-csr-2.1/oe-makefile.patch49
-rw-r--r--recipes/ixp4xx/ixp4xx-csr-2.1/rtl8201-support.patch30
-rw-r--r--recipes/ixp4xx/ixp4xx-csr/badpaths.patch18
-rw-r--r--recipes/ixp4xx/ixp4xx-csr/build-timing-annoyance.patch10
-rw-r--r--recipes/ixp4xx/ixp4xx-csr_1.4.bb63
-rw-r--r--recipes/ixp4xx/ixp4xx-csr_1.5.bb63
-rw-r--r--recipes/ixp4xx/ixp4xx-csr_2.0.bb89
-rw-r--r--recipes/ixp4xx/ixp4xx-csr_2.1.1.bb121
-rw-r--r--recipes/ixp4xx/ixp4xx-csr_2.1.bb112
110 files changed, 0 insertions, 8509 deletions
diff --git a/recipes/ixp425-eth/files/2.6.13.patch b/recipes/ixp425-eth/files/2.6.13.patch
deleted file mode 100644
index 7e8bea1b5d..0000000000
--- a/recipes/ixp425-eth/files/2.6.13.patch
+++ /dev/null
@@ -1,41 +0,0 @@
-# Patches for compilation with 2.6.13.2
-#
---- dir/ixp425_eth.c 2005-09-23 18:34:54.753729121 -0700
-+++ dir/ixp425_eth.c 2005-09-23 18:37:48.908688002 -0700
-@@ -659,7 +659,9 @@
- skb->pkt_type = PACKET_HOST; /* Default type */
- skb->ip_summed = 0;
- skb->priority = 0;
-+#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,13)
- skb->security = 0;
-+#endif
-
- /* Some packets may get incorrectly process by netfilter firewall software
- * if CONFIG_NETFILTER is enabled and filtering is in use. The solution is to
-@@ -2358,8 +2362,14 @@
- }
-
- /* set port MAC addr and update the dev struct if successfull */
-+#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,13)
- int dev_set_mac_address(struct net_device *dev, struct sockaddr *saddr)
- {
-+#else
-+static int set_mac_address(struct net_device *dev, void *saddrIn)
-+{
-+ struct sockaddr *saddr = saddrIn;
-+#endif
- int res;
- priv_data_t *priv = dev->priv;
- IxEthAccMacAddr npeMacAddr;
-@@ -2476,7 +2486,11 @@
- ndev->poll_controller = ixp425eth_poll_controller;
- #endif
-
-+#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,13)
- ndev->set_mac_address = dev_set_mac_address;
-+#else
-+ ndev->set_mac_address = set_mac_address;
-+#endif
-
- memcpy(ndev->dev_addr, &default_mac_addr[priv->port_id].macAddress,
- IX_IEEE803_MAC_ADDRESS_SIZE);
diff --git a/recipes/ixp425-eth/files/2.6.14.patch b/recipes/ixp425-eth/files/2.6.14.patch
deleted file mode 100644
index e93edb6e9b..0000000000
--- a/recipes/ixp425-eth/files/2.6.14.patch
+++ /dev/null
@@ -1,28 +0,0 @@
-# change in field semantic in 2.6.14
---- dir/ixp425_eth.c 2005-09-24 17:50:57.828607113 -0700
-+++ dir/ixp425_eth.c 2005-09-24 17:54:19.593303365 -0700
-@@ -668,7 +668,11 @@
- * reset the following fields in the skbuff before re-using it on the Rx-path
- */
- #ifdef CONFIG_NETFILTER
-+#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,14)
- skb->nfmark = skb->nfcache = 0;
-+#else
-+ skb->nfmark = 0;
-+#endif
- nf_conntrack_put(skb->nfct);
- skb->nfct = NULL;
- #ifdef CONFIG_NETFILTER_DEBUG
-@@ -1300,8 +1300,12 @@
- skb->len -= header_len;
-
- /* fill the pkt arrival time (set at the irq callback entry) */
-+#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,14)
- skb->stamp.tv_sec = irq_stamp.tv_sec;
- skb->stamp.tv_usec = irq_stamp.tv_usec;
-+#else
-+ skb_set_timestamp(skb, &irq_stamp);
-+#endif
-
- /* fill the input device field */
- skb->dev = dev;
diff --git a/recipes/ixp425-eth/files/ethhdr.patch b/recipes/ixp425-eth/files/ethhdr.patch
deleted file mode 100644
index 79c9fef34f..0000000000
--- a/recipes/ixp425-eth/files/ethhdr.patch
+++ /dev/null
@@ -1,25 +0,0 @@
-
-#
-# Patch managed by http://www.holgerschurig.de/patcher.html
-#
-
---- ixp425-eth-1.1-r0/ixp425_eth.c~ethhdr
-+++ ixp425-eth-1.1-r0/ixp425_eth.c
-@@ -1307,7 +1307,7 @@
- * and its constants are taken from the eth_type_trans()
- * function.
- */
-- struct ethhdr *eth = skb->mac.ethernet;
-+ struct ethhdr *eth = eth_hdr(skb);
- unsigned short hproto = ntohs(eth->h_proto);
-
- if (hproto >= 1536)
-@@ -1349,7 +1349,7 @@
- * mode is set This costs
- * a lookup inside the packet payload.
- */
-- struct ethhdr *eth = skb->mac.ethernet;
-+ struct ethhdr *eth = eth_hdr(skb);
- unsigned char *hdest = eth->h_dest;
-
- if (memcmp(hdest, dev->dev_addr, ETH_ALEN)!=0)
diff --git a/recipes/ixp425-eth/files/intdriven.patch b/recipes/ixp425-eth/files/intdriven.patch
deleted file mode 100644
index 88b2444b5e..0000000000
--- a/recipes/ixp425-eth/files/intdriven.patch
+++ /dev/null
@@ -1,98 +0,0 @@
---- ixp425-eth-1.1-r4/ixp425_eth.c 2005-06-16 00:47:55.360598896 -0700
-+++ ixp425-eth-1.1-r4/ixp425_eth.c 2005-06-16 18:42:09.840377651 -0700
-@@ -1028,6 +1030,7 @@
- */
-
- /* PMU Timer reload : this should be done at each interrupt */
-+#if 0 /* UNUSED - used for polling */
- static void dev_pmu_timer_restart(void)
- {
- __asm__(" mcr p14,0,%0,c1,c1,0\n" /* write current counter */
-@@ -1039,6 +1042,7 @@
- " mcr p14,0,r1,c4,c1,0\n" /* enable interrupts */
- : : : "r1");
- }
-+#endif
-
- /* Internal ISR : run a few thousand times per second and calls
- * the queue manager dispatcher entry point.
-@@ -1086,6 +1088,7 @@
- /* Internal ISR : run a few thousand times per second and calls
- * the ethernet entry point.
- */
-+#if 0 /* UNUSED - used for polling */
- static irqreturn_t dev_poll_os_isr(int irg, void *dev_id, struct pt_regs *regs)
- {
- int qlevel = __get_cpu_var(softnet_data).input_pkt_queue.qlen;
-@@ -1127,8 +1130,10 @@
- ixEthTxFrameDoneQMCallback(0,0);
- return IRQ_HANDLED;
- }
-+#endif
-
- /* initialize the PMU timer */
-+#if 0 /* UNUSED - used for polling */
- static int dev_pmu_timer_init(void)
- {
- UINT32 controlRegisterMask =
-@@ -1164,6 +1169,7 @@
-
- return 0;
- }
-+#endif
-
- /* stops the timer when the module terminates */
- static void dev_pmu_timer_disable(void)
-@@ -1636,6 +1636,7 @@
- return 0;
- }
-
-+#if 0 /* UNUSED - used for polling */
- /* The QMgr dispatch entry point can be called from the
- * IXP425_INT_LVL_QM1 irq (which will trigger
- * an interrupt for every packet) or a timer (which will
-@@ -1686,7 +1687,7 @@
- */
- if (request_irq(IXP425_INT_LVL_QM1,
- dev_qmgr_os_isr,
-- SA_SHIRQ,
-+ SA_SHIRQ | SA_SAMPLE_RANDOM,
- DRV_NAME,
- (void *)IRQ_ANY_PARAMETER))
- {
-@@ -1710,6 +1711,7 @@
- }
- return 0;
- }
-+#endif
-
- /* Enable the MAC port.
- * Called on do_dev_open, dev_tx_timeout and mtu size changes
-@@ -2234,7 +2236,7 @@
- */
- if (request_irq(IXP425_INT_LVL_QM1,
- dev_qmgr_os_isr,
-- SA_SHIRQ,
-+ SA_SHIRQ | SA_SAMPLE_RANDOM,
- DRV_NAME,
- (void *)IRQ_ANY_PARAMETER))
- {
-@@ -2669,6 +2671,10 @@
-
- TRACE;
-
-+#if 0 /* DISABLE polling */
-+ /* Enable Interrupt driven driver
-+ * see http://www.nslu2-linux.org/wiki/OpenSlug/StabilizeEthernetDriver
-+ */
- if (no_csr_init == 0) /* module parameter */
- {
- /* The QMgr dispatch entry point is called from the IXP425_INT_LVL_QM1 irq
-@@ -2681,6 +2687,7 @@
- return res;
- }
- }
-+#endif
-
- TRACE;
-
diff --git a/recipes/ixp425-eth/files/ixp400_pollcontroller.patch b/recipes/ixp425-eth/files/ixp400_pollcontroller.patch
deleted file mode 100644
index b6fe10a5c6..0000000000
--- a/recipes/ixp425-eth/files/ixp400_pollcontroller.patch
+++ /dev/null
@@ -1,50 +0,0 @@
-*** ixp400-eth-1.4-r4/ixp400_eth.c.orig Mon Oct 31 22:45:46 2005
---- ixp400-eth-1.4-r4/ixp400_eth.c Mon Oct 31 22:47:48 2005
-***************
-*** 306,311 ****
---- 306,316 ----
- ixEthRxFrameQMCallback(IxQMgrQId qId, IxQMgrCallbackId callbackId);
- extern void
- ixEthTxFrameDoneQMCallback(IxQMgrQId qId, IxQMgrCallbackId callbackId);
-+ #ifdef CONFIG_NET_POLL_CONTROLLER
-+ /* poll controller (needed for netconsole et al) */
-+ static void
-+ ixp425eth_poll_controller(struct net_device *dev);
-+ #endif
-
- /* Private device data */
- typedef struct {
-***************
-*** 3082,3087 ****
---- 3087,3095 ----
- ndev->get_stats = dev_get_stats;
- ndev->set_multicast_list = dev_set_multicast_list;
- ndev->flags |= IFF_MULTICAST;
-+ #ifdef CONFIG_NET_POLL_CONTROLLER
-+ ndev->poll_controller = ixp425eth_poll_controller;
-+ #endif
- #if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,13)
- ndev->set_mac_address = dev_set_mac_address;
- #else
-***************
-*** 3172,3177 ****
---- 3180,3198 ----
- return res;
- }
-
-+ #ifdef CONFIG_NET_POLL_CONTROLLER
-+ /*
-+ * Polling receive - used by netconsole and other diagnostic tools
-+ * to allow network i/o with interrupts disabled.
-+ * (stolen from 8139too.c by siddy)
-+ */
-+ static void ixp425eth_poll_controller(struct net_device *dev)
-+ {
-+ disable_irq(dev->irq);
-+ dev_qmgr_os_isr(dev->irq, dev, NULL);
-+ enable_irq(dev->irq);
-+ }
-+ #endif
-
- static int __devinit npe_eth_init_device(struct device *dev)
- {
diff --git a/recipes/ixp425-eth/files/makefile.patch b/recipes/ixp425-eth/files/makefile.patch
deleted file mode 100644
index 2e47972995..0000000000
--- a/recipes/ixp425-eth/files/makefile.patch
+++ /dev/null
@@ -1,18 +0,0 @@
-
-#
-# Patch managed by http://www.holgerschurig.de/patcher.html
-#
-
---- /dev/null
-+++ ixp425-eth-1.1-r0/Makefile
-@@ -0,0 +1,10 @@
-+ifneq ($(KERNELRELEASE),)
-+obj-m := ixp425_eth.o
-+
-+else
-+KDIR := /lib/modules/$(shell uname -r)/build
-+PWD := $(shell pwd)
-+
-+default modules:
-+ $(MAKE) -C $(KDIR) SUBDIRS=$(PWD) modules
-+endif
diff --git a/recipes/ixp425-eth/files/mm4.patch b/recipes/ixp425-eth/files/mm4.patch
deleted file mode 100644
index c40aaca998..0000000000
--- a/recipes/ixp425-eth/files/mm4.patch
+++ /dev/null
@@ -1,19 +0,0 @@
-# This corrects the type of dev_set_mac_address. The definition (prototype)
-# was *added* to include/linux/netdevice.h in the 2.6.11 mm patches, so the
-# change should not harm older builds
---- ixp425-eth-1.1-r1/ixp425_eth.c.pre-mm4 2005-03-19 14:02:32.883601440 -0800
-+++ ixp425-eth-1.1-r1/ixp425_eth.c 2005-03-19 14:03:25.849549392 -0800
-@@ -2347,12 +2347,11 @@
- }
-
- /* set port MAC addr and update the dev struct if successfull */
--int dev_set_mac_address(struct net_device *dev, void *addr)
-+int dev_set_mac_address(struct net_device *dev, struct sockaddr *saddr)
- {
- int res;
- priv_data_t *priv = dev->priv;
- IxEthAccMacAddr npeMacAddr;
-- struct sockaddr *saddr = (struct sockaddr *)addr;
-
- /* Set MAC addr in h/w */
- memcpy(&npeMacAddr.macAddress,
diff --git a/recipes/ixp425-eth/files/modprobe.conf b/recipes/ixp425-eth/files/modprobe.conf
deleted file mode 100644
index bfcbf916cf..0000000000
--- a/recipes/ixp425-eth/files/modprobe.conf
+++ /dev/null
@@ -1,3 +0,0 @@
-# Add an alias for eth0 to ixp425_eth to cause the S40networking
-# init script to load the ixp425_eth driver on the first boot
-alias eth0 ixp425_eth
diff --git a/recipes/ixp425-eth/files/pollcontroller.patch b/recipes/ixp425-eth/files/pollcontroller.patch
deleted file mode 100644
index f95db28977..0000000000
--- a/recipes/ixp425-eth/files/pollcontroller.patch
+++ /dev/null
@@ -1,50 +0,0 @@
-# Add a poll controller to the interface - required for netconsole
---- ixp425-eth-1.1-r1/ixp425_eth.c.pre-pollcontroller 2005-03-19 14:02:32.883601440 -0800
-+++ ixp425-eth-1.1-r1/ixp425_eth.c 2005-03-19 14:03:25.849549392 -0800
-@@ -273,6 +273,11 @@
- extern void
- ixEthTxFrameDoneQMCallback(IxQMgrQId? qId, IxQMgrCallbackId? callbackId);
-
-+#ifdef CONFIG_NET_POLL_CONTROLLER
-+/* poll controller (needed for netconsole et al) */
-+static void ixp425eth_poll_controller(struct net_device *dev);
-+#endif
-+
- /* Private device data */
- typedef struct {
- unsigned int msdu_size;
-@@ -2462,6 +2467,10 @@
- ndev->set_multicast_list = dev_set_multicast_list;
- ndev->flags |= IFF_MULTICAST;
-
-+#ifdef CONFIG_NET_POLL_CONTROLLER
-+ ndev->poll_controller = ixp425eth_poll_controller;
-+#endif
-+
- ndev->set_mac_address = dev_set_mac_address;
-
- memcpy(ndev->dev_addr, &default_mac_addr[priv->port_id].macAddress,
-@@ -2491,6 +2500,23 @@
- return res;
- }
-
-+
-+#ifdef CONFIG_NET_POLL_CONTROLLER
-+/*
-+ * Polling receive - used by netconsole and other diagnostic tools
-+ * to allow network i/o with interrupts disabled.
-+ * (stolen from 8139too.c by siddy)
-+ */
-+static void ixp425eth_poll_controller(struct net_device *dev)
-+{
-+ disable_irq(dev->irq);
-+ dev_qmgr_os_isr(dev->irq, dev, NULL);
-+ enable_irq(dev->irq);
-+}
-+#endif
-+
-+
-+
- static int __devinit npe_eth_init_device(struct device *dev)
- {
- int res = -ENOMEM;
diff --git a/recipes/ixp425-eth/ixp400-eth-1.4/2.6.13.patch b/recipes/ixp425-eth/ixp400-eth-1.4/2.6.13.patch
deleted file mode 100644
index 376bb3b03b..0000000000
--- a/recipes/ixp425-eth/ixp400-eth-1.4/2.6.13.patch
+++ /dev/null
@@ -1,39 +0,0 @@
---- ./ixp400_eth.c.orig 2005-10-02 18:55:03.998477844 -0700
-+++ ./ixp400_eth.c 2005-10-02 19:00:43.187821684 -0700
-@@ -848,7 +848,9 @@
- skb->pkt_type = PACKET_HOST; /* Default type */
- skb->ip_summed = 0;
- skb->priority = 0;
-+#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,13)
- skb->security = 0;
-+#endif
- #ifdef CONFIG_NET_SCHED
- skb->tc_index = 0;
- #endif
-@@ -2922,8 +2924,14 @@
- }
-
- /* set port MAC addr and update the dev struct if successfull */
-+#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,13)
- int dev_set_mac_address(struct net_device *dev, struct sockaddr *saddr)
- {
-+#else
-+static int set_mac_address(struct net_device *dev, void *saddrIn)
-+{
-+ struct sockaddr *saddr = saddrIn;
-+#endif
- int res;
- priv_data_t *priv = dev->priv;
- IxEthAccMacAddr npeMacAddr;
-@@ -3073,7 +3081,11 @@
- ndev->get_stats = dev_get_stats;
- ndev->set_multicast_list = dev_set_multicast_list;
- ndev->flags |= IFF_MULTICAST;
-+#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,13)
- ndev->set_mac_address = dev_set_mac_address;
-+#else
-+ ndev->set_mac_address = set_mac_address;
-+#endif
-
- TRACE;
-
diff --git a/recipes/ixp425-eth/ixp400-eth-1.4/2.6.14-mm.patch b/recipes/ixp425-eth/ixp400-eth-1.4/2.6.14-mm.patch
deleted file mode 100644
index b2dfaaa4fe..0000000000
--- a/recipes/ixp425-eth/ixp400-eth-1.4/2.6.14-mm.patch
+++ /dev/null
@@ -1,44 +0,0 @@
---- ./ixp400_eth.c.orig 2005-11-13 16:17:57.943717806 -0800
-+++ ./ixp400_eth.c 2005-11-13 16:29:00.829430574 -0800
-@@ -65,6 +65,10 @@
- #include <linux/sysctl.h>
- #include <linux/unistd.h>
-
-+#ifndef to_platform_device
-+#include <linux/platform_device.h>
-+#endif
-+
- /*
- * Intel IXP400 Software specific header files
- */
-@@ -2410,7 +2414,7 @@ dev_tx_timeout_work(void* arg)
- }
-
-
--
-+#if 0
- static void
- dev_tx_timeout_task(void *dev_id)
- {
-@@ -2444,6 +2448,7 @@ dev_tx_timeout_task(void *dev_id)
-
- up(maintenance_mutex);
- }
-+#endif
-
-
- /* This function is called when kernel thinks that TX is stuck */
-@@ -3274,9 +3279,12 @@ static struct net_device ixp400_devices[
-
- int init_module(void)
- {
-- int res, dev_count;
-+ int res;
-+#if 0
-+ int dev_count;
- IxEthAccPortId portId;
- struct net_device *dev;
-+#endif
- int i;
- TRACE;
-
diff --git a/recipes/ixp425-eth/ixp400-eth-1.4/2.6.14.patch b/recipes/ixp425-eth/ixp400-eth-1.4/2.6.14.patch
deleted file mode 100644
index c4c19db795..0000000000
--- a/recipes/ixp425-eth/ixp400-eth-1.4/2.6.14.patch
+++ /dev/null
@@ -1,24 +0,0 @@
---- ./ixp400_eth.c 2005-10-01 00:50:45.179775259 -0700
-+++ ./ixp400_eth.c 2005-10-01 00:54:10.976725245 -0700
-@@ -777,7 +777,9 @@
- * before re-using it on the Rx-path
- */
- skb->nfmark = 0;
-+#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,14)
- skb->nfcache = 0;
-+#endif
- nf_conntrack_put(skb->nfct);
- skb->nfct = NULL;
- #ifdef CONFIG_NETFILTER_DEBUG
-@@ -1451,7 +1453,11 @@
- skb->len -= header_len;
-
- /* fill the pkt arrival time (set at the irq callback entry) */
-+#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,14)
- skb->stamp = irq_stamp;
-+#else
-+ skb_set_timestamp(skb, &irq_stamp);
-+#endif
-
- /* fill the input device field */
- skb->dev = dev;
diff --git a/recipes/ixp425-eth/ixp400-eth-1.4/ixp400-le-be.patch b/recipes/ixp425-eth/ixp400-eth-1.4/ixp400-le-be.patch
deleted file mode 100644
index 87d4337eb3..0000000000
--- a/recipes/ixp425-eth/ixp400-eth-1.4/ixp400-le-be.patch
+++ /dev/null
@@ -1,948 +0,0 @@
---- ./.pc/ixp400-le-be.patch/ixp400_eth.c 2005-04-19 22:58:18.000000000 -0700
-+++ ./ixp400_eth.c 2005-10-23 23:29:06.760778566 -0700
-@@ -57,6 +57,7 @@
- #include <linux/mii.h>
- #include <linux/socket.h>
- #include <linux/cache.h>
-+#include <linux/interrupt.h>
- #include <asm/io.h>
- #include <asm/errno.h>
- #include <net/pkt_sched.h>
-@@ -95,7 +96,7 @@
- MODULE_LICENSE("GPL");
- MODULE_AUTHOR("Intel Corporation");
- #define MODULE_NAME "ixp400_eth"
--#define MODULE_VERSION "1.4"
-+#define MODULE_VERSION_IXP400_ETH "1.4B"
-
- /* Module parameters */
- static int npe_learning = 1; /* default : NPE learning & filtering enable */
-@@ -358,8 +359,13 @@
- /* Used to stop the kernel thread for link monitoring. */
- volatile BOOL maintenanceCheckStopped;
-
-+ struct work_struct mii_job;
-+
-+
- /* used for tx timeout */
-- struct tq_struct tq_timeout;
-+ struct work_struct tx_timeout_job;
-+
-+
-
- /* used to control the message output */
- UINT32 devFlags;
-@@ -557,6 +563,8 @@
- #endif
- };
-
-+static struct workqueue_struct *npe_eth_workqueue;
-+
- /* Mutex lock used to coordinate access to IxEthAcc functions
- * which manipulate the MII registers on the PHYs
- */
-@@ -565,6 +573,11 @@
- /* mutex locked when maintenance is being performed */
- static struct semaphore *maintenance_mutex;
-
-+/* Flags which is set when corresponding NPE is running,
-+ * cleared when NPE is stopped
-+ */
-+static int npeRunning[IX_ETH_ACC_NUMBER_OF_PORTS];
-+
- /* Flags which is set when the corresponding IRQ is running,
- */
- static int irq_pmu_used = 0;
-@@ -1070,6 +1083,117 @@
- return 0;
- }
-
-+/*
-+ * WORKQUEUE JOBS
-+ */
-+
-+/* This workqueue job will check the PHY for the link duplex and
-+ * update the MAC accordingly. It also executes some buffer
-+ * maintenance to release mbuf in excess or replenish after
-+ * a severe starvation
-+ *
-+ * This function loops and wake up every 3 seconds.
-+ */
-+static void dev_media_check_work(void* arg)
-+{
-+ struct net_device *dev = (struct net_device *) arg;
-+ priv_data_t *priv = dev->priv;
-+
-+ TRACE;
-+
-+ /*
-+ * Determine the link status
-+ */
-+
-+ if (default_phy_cfg[priv->port_id].linkMonitor)
-+ {
-+ int linkUp;
-+ int speed100;
-+ int fullDuplex = -1; /* unknown duplex mode */
-+ int newDuplex;
-+ int autonegotiate;
-+ unsigned phyNum = phyAddresses[priv->port_id];
-+ int res;
-+
-+ TRACE;
-+
-+ /* lock the MII register access mutex */
-+ down(miiAccessMutex);
-+
-+ res = ixEthMiiLinkStatus(phyNum,
-+ &linkUp,
-+ &speed100,
-+ &newDuplex,
-+ &autonegotiate);
-+ /* release the MII register access mutex */
-+ up(miiAccessMutex);
-+
-+ if (res != IX_ETH_ACC_SUCCESS)
-+ {
-+ P_WARN("ixEthMiiLinkStatus failed on PHY%d.\n"
-+ "\tCan't determine\nthe auto negotiated parameters. "
-+ "Using default values.\n",
-+ phyNum);
-+
-+ /* this shouldn't happen. exit the thread if it does */
-+ goto out;
-+ }
-+
-+ if (linkUp)
-+ {
-+ if (! netif_carrier_ok(dev))
-+ {
-+ /* inform the kernel of a change in link state */
-+ netif_carrier_on(dev);
-+ }
-+
-+ /*
-+ * Update the MAC mode to match the PHY mode if
-+ * there is a phy mode change.
-+ */
-+ if (newDuplex != fullDuplex)
-+ {
-+ fullDuplex = newDuplex;
-+ if (fullDuplex)
-+ {
-+ ixEthAccPortDuplexModeSet(priv->port_id,
-+ IX_ETH_ACC_FULL_DUPLEX);
-+ }
-+ else
-+ {
-+ ixEthAccPortDuplexModeSet(priv->port_id,
-+ IX_ETH_ACC_HALF_DUPLEX);
-+ }
-+ }
-+ }
-+ else
-+ {
-+ fullDuplex = -1;
-+ if (netif_carrier_ok(dev))
-+ {
-+ /* inform the kernel of a change in link state */
-+ netif_carrier_off(dev);
-+ }
-+ }
-+ }
-+
-+ TRACE;
-+
-+ /* this is to prevent the rx pool from emptying when
-+ * there's not enough memory for a long time
-+ * It prevents also from holding the memory for too
-+ * long
-+ */
-+ dev_buff_maintenance(dev);
-+
-+ /* reschedule to run in 3 seconds */
-+ queue_delayed_work(npe_eth_workqueue, &priv->mii_job, 3*HZ);
-+ out:
-+ return;
-+}
-+
-+
-+#define sigmask_lock sighand->siglock
-
- /*
- * KERNEL THREADS
-@@ -1122,11 +1246,11 @@
- */
- down (priv->maintenanceCheckThreadComplete);
-
-- daemonize();
-- reparent_to_init();
-+ daemonize("dev_media");
-+ // reparent_to_init();
- spin_lock_irq(&current->sigmask_lock);
- sigemptyset(&current->blocked);
-- recalc_sigpending(current);
-+ recalc_sigpending();
- spin_unlock_irq(&current->sigmask_lock);
-
- snprintf(current->comm, sizeof(current->comm), "ixp400 %s", dev->name);
-@@ -1285,7 +1409,7 @@
- static void dev_pmu_timer_restart(void)
- {
- unsigned long flags;
-- save_flags_cli(flags);
-+ local_irq_save(flags);
- __asm__(" mcr p14,0,%0,c1,c1,0\n" /* write current counter */
- : : "r" (timer_countup_ticks));
-
-@@ -1294,13 +1418,13 @@
- " mcr p14,0,r1,c5,c1,0; " /* clear overflow */
- " mcr p14,0,r1,c4,c1,0\n" /* enable interrupts */
- : : : "r1");
-- restore_flags(flags);
-+ local_irq_restore(flags);
- }
-
- /* Internal ISR : run a few thousand times per second and calls
- * the queue manager dispatcher entry point.
- */
--static void dev_qmgr_os_isr(int irg, void *dev_id, struct pt_regs *regs)
-+static irqreturn_t dev_qmgr_os_isr(int irg, void *dev_id, struct pt_regs *regs)
- {
- /* get the time of this interrupt : all buffers received during this
- * interrupt will be assigned the same time */
-@@ -1308,22 +1432,32 @@
-
- /* call the queue manager entry point */
- dispatcherFunc(IX_QMGR_QUELOW_GROUP);
-+ return IRQ_HANDLED;
- }
-
- /* Internal ISR : run a few thousand times per second and calls
- * the ethernet entry point.
- */
--static void dev_poll_os_isr(int irg, void *dev_id, struct pt_regs *regs)
-+int icount = 2;
-+static irqreturn_t dev_poll_os_isr(int irg, void *dev_id, struct pt_regs *regs)
- {
-- dev_pmu_timer_restart(); /* set up the timer for the next interrupt */
-+ if (icount > 0) {
-+ icount--;
-+ TRACE;
-+ }
-
- /* get the time of this interrupt : all buffers received during this
- * interrupt will be assigned the same time */
- do_gettimeofday(&irq_stamp);
--
-+ if (icount) TRACE;
- ixEthRxFrameQMCallback(rx_queue_id,0);
-+ if (icount) TRACE;
- ixEthTxFrameDoneQMCallback(0,0);
--
-+ if (icount) TRACE;
-+ /* here surely */
-+ dev_pmu_timer_restart(); /* set up the timer for the next interrupt */
-+ return IRQ_HANDLED;
-+
- }
-
- /* initialize the PMU timer */
-@@ -1370,17 +1504,18 @@
- static void dev_pmu_timer_disable(void)
- {
- unsigned long flags;
-- save_flags_cli(flags);
-+ local_irq_save(flags);
- __asm__(" mrc p14,0,r1,c4,c1,0; " /* get int enable register */
- " and r1,r1,#0x1e; "
- " mcr p14,0,r1,c4,c1,0\n" /* disable interrupts */
- : : : "r1");
-- restore_flags(flags);
-+ local_irq_restore(flags);
- }
-
- /* This timer will call ixEthDBDatabaseMaintenance every
- * IX_ETH_DB_MAINTENANCE_TIME jiffies
- */
-+#if 0
- static void maintenance_timer_cb(unsigned long data);
-
- static struct timer_list maintenance_timer = {
-@@ -1418,6 +1553,34 @@
-
- maintenance_timer_set();
- }
-+#endif
-+static void db_maintenance_code(void *data);
-+static DECLARE_WORK(db_maintenance_job, db_maintenance_code, NULL);
-+
-+static inline
-+void schedule_db_maintenance(void)
-+{
-+ TRACE;
-+ queue_delayed_work(npe_eth_workqueue, &db_maintenance_job,
-+ DB_MAINTENANCE_TIME);
-+}
-+
-+static inline
-+void cancel_db_maintenance(void)
-+{
-+ TRACE;
-+ cancel_delayed_work(&db_maintenance_job);
-+}
-+
-+static void db_maintenance_code(void *data)
-+{
-+ TRACE;
-+ down(maintenance_mutex);
-+ ixEthDBDatabaseMaintenance();
-+ up(maintenance_mutex);
-+ schedule_db_maintenance();
-+}
-+
-
- /*
- * DATAPLANE
-@@ -1531,7 +1694,7 @@
- * and its constants are taken from the eth_type_trans()
- * function.
- */
-- struct ethhdr *eth = skb->mac.ethernet;
-+ struct ethhdr *eth = eth_hdr(skb);
- unsigned short hproto = ntohs(eth->h_proto);
-
- if (hproto >= 1536)
-@@ -1573,7 +1736,7 @@
- * mode is set This costs
- * a lookup inside the packet payload.
- */
-- struct ethhdr *eth = skb->mac.ethernet;
-+ struct ethhdr *eth = eth_hdr(skb);
- unsigned char *hdest = eth->h_dest;
-
- if (memcmp(hdest, dev->dev_addr, ETH_ALEN)!=0)
-@@ -1632,7 +1795,7 @@
- dev = (struct net_device *)callbackTag;
- priv = dev->priv;
-
-- qlevel = softnet_data[0].input_pkt_queue.qlen;
-+ qlevel = __get_cpu_var(softnet_data).input_pkt_queue.qlen;
- /* check if the system accepts more traffic and
- * against chained mbufs
- */
-@@ -1674,10 +1837,21 @@
- /* set the length of the received skb from the mbuf length */
- skb->tail = skb->data + len;
- skb->len = len;
-+
-+#ifndef __ARMEB__
-+ {
-+ /* Byte swap all words containing data from the buffer. */
-+ unsigned long *p = (unsigned long*)((unsigned)skb->data & ~0x3);
-+ unsigned long *e = (unsigned long*)(((unsigned)skb->data + skb->len + 3) & ~0x3);
-+ while (p < e)
-+ *p = ntohl(*p), ++p;
-+ }
-+#endif
-
- #ifdef DEBUG_DUMP
- skb_dump("rx", skb);
- #endif
-+
- /* Set the skb protocol and set mcast/bcast flags */
- dev_eth_type_trans(mcastFlags, skb, dev);
-
-@@ -1821,6 +1995,39 @@
- spin_unlock_irq(&priv->lock);
- }
-
-+/* start the NPEs */
-+static int npe_start(IxEthAccPortId port_id)
-+{
-+ int res;
-+ UINT32 npeImageId;
-+
-+ switch (port_id)
-+ {
-+ case IX_ETH_PORT_1:
-+ npeImageId = IX_ETH_NPE_B_IMAGE_ID;
-+ break;
-+ case IX_ETH_PORT_2:
-+ npeImageId = IX_ETH_NPE_C_IMAGE_ID;
-+ break;
-+ default:
-+ P_ERROR("Invalid port specified. IXP Ethernet NPE not started\n");
-+ return -ENODEV;
-+ }
-+
-+ /* Initialise and Start NPEs */
-+ if ((res = ixNpeDlNpeInitAndStart(npeImageId)))
-+ {
-+ P_ERROR("Error starting NPE for Ethernet port %d!\n", port_id);
-+ return -1;
-+ }
-+
-+ /* set this flag to indicate that NPE is running */
-+ npeRunning[port_id] = 1;
-+
-+ return 0;
-+}
-+
-+
- /* The QMgr dispatch entry point can be called from the
- * IX_OSAL_IXP400_QM1_IRQ_LVL irq (which will trigger
- * an interrupt for every packet) or a timer (which will
-@@ -1906,7 +2113,16 @@
- IxEthAccMacAddr npeMacAddr;
- priv_data_t *priv = dev->priv;
-
-- P_DEBUG("port_enable(%s)\n", dev->name);
-+ P_DEBUG("port_enable(%s) %d\n", dev->name, priv->port_id);
-+
-+ if (!npeRunning[priv->port_id])
-+ {
-+ if ((res = npe_start(priv->port_id)))
-+ {
-+ TRACE;
-+ return res;
-+ }
-+ }
-
- /* Set MAC addr in h/w (ethAcc checks for MAC address to be valid) */
- memcpy(&npeMacAddr.macAddress,
-@@ -2085,6 +2301,16 @@
- return 0;
- }
-
-+#ifndef __ARMEB__
-+ {
-+ /* Byte swap all words containing data from the buffer. */
-+ unsigned long *p = (unsigned long*)((unsigned)skb->data & ~0x3);
-+ unsigned long *e = (unsigned long*)(((unsigned)skb->data + skb->len + 3) & ~0x3);
-+ while (p < e)
-+ *p = ntohl(*p), ++p;
-+ }
-+#endif
-+
- #ifdef DEBUG_DUMP
- skb_dump("tx", skb);
- #endif
-@@ -2120,6 +2346,7 @@
- static int do_dev_open(struct net_device *dev)
- {
- int res;
-+ TRACE;
-
- /* prevent the maintenance task from running while bringing up port */
- down(maintenance_mutex);
-@@ -2151,6 +2378,27 @@
- }
-
- static void
-+dev_tx_timeout_work(void* arg)
-+{
-+ struct net_device *dev = (struct net_device *)arg;
-+ priv_data_t *priv = dev->priv;
-+
-+ P_ERROR("%s: Tx Timeout for port %d\n", dev->name, priv->port_id);
-+
-+ down(maintenance_mutex);
-+ port_disable(dev);
-+
-+ /* Note to user: Consider performing other reset operations here (such as
-+ * PHY reset), if it is known to help the Tx Flow to become "unstuck"
-+ */
-+
-+ port_enable(dev);
-+ up(maintenance_mutex);
-+}
-+
-+
-+
-+static void
- dev_tx_timeout_task(void *dev_id)
- {
- struct net_device *dev = (struct net_device *)dev_id;
-@@ -2191,7 +2439,7 @@
- priv_data_t *priv = dev->priv;
-
- TRACE;
-- schedule_task(&priv->tq_timeout);
-+ queue_work(npe_eth_workqueue, &priv->tx_timeout_job);
-
- }
-
-@@ -2352,7 +2600,8 @@
-
- TRACE;
-
-- invalidate_dcache_range((unsigned int)&ethStats, sizeof(ethStats));
-+ // invalidate_dcache_range((unsigned int)&ethStats, sizeof(ethStats));
-+ IX_ACC_DATA_CACHE_INVALIDATE((unsigned int)&ethStats, sizeof(ethStats));
- if ((res = ixEthAccMibIIStatsGetClear(priv->port_id, &ethStats)))
- {
- P_ERROR("%s: ixEthAccMibIIStatsGet failed for port %d, res = %d\n",
-@@ -2565,7 +2814,6 @@
- miiAccessMutex = (struct semaphore *) kmalloc(sizeof(struct semaphore), GFP_KERNEL);
- if (!miiAccessMutex)
- return -ENOMEM;
--
- init_MUTEX(miiAccessMutex);
-
- TRACE;
-@@ -2673,12 +2921,12 @@
- }
-
- /* set port MAC addr and update the dev struct if successfull */
--int dev_set_mac_address(struct net_device *dev, void *addr)
-+int dev_set_mac_address(struct net_device *dev, struct sockaddr *saddr)
- {
- int res;
- priv_data_t *priv = dev->priv;
- IxEthAccMacAddr npeMacAddr;
-- struct sockaddr *saddr = (struct sockaddr *)addr;
-+ // struct sockaddr *saddr = (struct sockaddr *)addr;
-
- /* Get MAC addr from parameter */
- memcpy(&npeMacAddr.macAddress,
-@@ -2751,35 +2999,16 @@
- /* Initialize device structs.
- * Resource allocation is deffered until do_dev_open
- */
--static int __devinit dev_eth_probe(struct net_device *dev)
-+static int __devinit dev_eth_probe(struct device *_dev)
- {
-- static int found_devices = 0;
-- priv_data_t *priv;
-+ int res = -ENOMEM;
-+ struct platform_device *pdev = to_platform_device(_dev);
-+ struct net_device *ndev = dev_get_drvdata(_dev);
-+ priv_data_t *priv = (priv_data_t*)ndev->priv;
-
- TRACE;
-
-- /* there is a limited number of devices */
-- if (found_devices >= dev_max_count) /* module parameter */
-- return -ENODEV;
--
-- SET_MODULE_OWNER(dev);
--
-- /* set device name */
-- sprintf(dev->name, DEVICE_NAME "%d", found_devices);
--
-- /* allocate and initialize priv struct */
-- priv = dev->priv = kmalloc(sizeof(priv_data_t), GFP_KERNEL);
-- if (dev->priv == NULL)
-- return -ENOMEM;
--
-- memset(dev->priv, 0, sizeof(priv_data_t));
--
-- TRACE;
--
-- /* set the mapping between port ID and devices
-- *
-- */
-- priv->port_id = default_portId[found_devices];
-+ priv->port_id = pdev->id;
-
- TRACE;
-
-@@ -2789,9 +3018,8 @@
- if(priv->rx_pool == NULL)
- {
- P_ERROR("%s: Buffer RX Pool init failed on port %d\n",
-- dev->name, priv->port_id);
-- kfree(dev->priv);
-- return -ENOMEM;
-+ ndev->name, priv->port_id);
-+ goto out;
- }
-
- TRACE;
-@@ -2802,45 +3030,45 @@
- if(priv->tx_pool == NULL)
- {
- P_ERROR("%s: Buffer TX Pool init failed on port %d\n",
-- dev->name, priv->port_id);
-- kfree(dev->priv);
-- return -ENOMEM;
-+ ndev->name, priv->port_id);
-+ goto out;
- }
-
-- TRACE;
--
- /* initialise the MII register access mutex */
- priv->maintenanceCheckThreadComplete = (struct semaphore *)
- kmalloc(sizeof(struct semaphore), GFP_KERNEL);
- if (!priv->maintenanceCheckThreadComplete)
- {
-- kfree(dev->priv);
-- return -ENOMEM;
-+ P_ERROR("%s: Failed to allocate maintenance semaphore %d\n",
-+ ndev->name, priv->port_id);
-+ goto out;
- }
- priv->lock = SPIN_LOCK_UNLOCKED;
- init_MUTEX(priv->maintenanceCheckThreadComplete);
- priv->maintenanceCheckStopped = TRUE;
-
- /* initialize ethernet device (default handlers) */
-- ether_setup(dev);
-+ ether_setup(ndev);
-
- TRACE;
-
-- /* fill in dev struct callbacks with customized handlers */
-- dev->open = do_dev_open;
-- dev->stop = do_dev_stop;
-+ INIT_WORK(&priv->mii_job, dev_media_check_work, ndev);
-+ INIT_WORK(&priv->tx_timeout_job, dev_tx_timeout_work, ndev);
-
-- dev->hard_start_xmit = dev_hard_start_xmit;
--
-- dev->watchdog_timeo = DEV_WATCHDOG_TIMEO;
-- dev->tx_timeout = dev_tx_timeout;
-- dev->change_mtu = dev_change_mtu;
-- dev->do_ioctl = do_dev_ioctl;
-- dev->get_stats = dev_get_stats;
-- dev->set_multicast_list = dev_set_multicast_list;
-- dev->flags |= IFF_MULTICAST;
-+ TRACE;
-
-- dev->set_mac_address = dev_set_mac_address;
-+ /* fill in dev struct callbacks with customized handlers */
-+ ndev->open = do_dev_open;
-+ ndev->stop = do_dev_stop;
-+ ndev->hard_start_xmit = dev_hard_start_xmit;
-+ ndev->watchdog_timeo = DEV_WATCHDOG_TIMEO;
-+ ndev->tx_timeout = dev_tx_timeout;
-+ ndev->change_mtu = dev_change_mtu;
-+ ndev->do_ioctl = do_dev_ioctl;
-+ ndev->get_stats = dev_get_stats;
-+ ndev->set_multicast_list = dev_set_multicast_list;
-+ ndev->flags |= IFF_MULTICAST;
-+ ndev->set_mac_address = dev_set_mac_address;
-
- TRACE;
-
-@@ -2858,22 +3086,22 @@
- *
- */
-
-- memcpy(dev->dev_addr,
-+ memcpy(ndev->dev_addr,
- &default_mac_addr[priv->port_id].macAddress,
- IX_IEEE803_MAC_ADDRESS_SIZE);
-
- /* possibly remove this test and the message when a valid MAC address
- * is not hardcoded in the driver source code.
- */
-- if (is_valid_ether_addr(dev->dev_addr))
-+ if (is_valid_ether_addr(ndev->dev_addr))
- {
- P_WARN("Use default MAC address %2.2x:%2.2x:%2.2x:%2.2x:%2.2x:%2.2x for port %d\n",
-- (unsigned)dev->dev_addr[0],
-- (unsigned)dev->dev_addr[1],
-- (unsigned)dev->dev_addr[2],
-- (unsigned)dev->dev_addr[3],
-- (unsigned)dev->dev_addr[4],
-- (unsigned)dev->dev_addr[5],
-+ (unsigned)ndev->dev_addr[0],
-+ (unsigned)ndev->dev_addr[1],
-+ (unsigned)ndev->dev_addr[2],
-+ (unsigned)ndev->dev_addr[3],
-+ (unsigned)ndev->dev_addr[4],
-+ (unsigned)ndev->dev_addr[5],
- priv->port_id);
- }
-
-@@ -2883,31 +3111,30 @@
- */
- TRACE;
-
-- dev_change_msdu(dev, dev->mtu + dev->hard_header_len + VLAN_HDR);
--
-+ dev_change_msdu(ndev, ndev->mtu + ndev->hard_header_len + VLAN_HDR);
-+#if 0
- priv->tq_timeout.routine = dev_tx_timeout_task;
- priv->tq_timeout.data = (void *)dev;
--
-+#endif
- #ifdef CONFIG_IXP400_ETH_QDISC_ENABLED
- /* configure and enable a fast TX queuing discipline */
- TRACE;
-
-- priv->qdisc = qdisc_create_dflt(dev, &dev_qdisc_ops);
-- dev->qdisc_sleeping = priv->qdisc;
-- dev->qdisc = priv->qdisc;
-+ priv->qdisc = qdisc_create_dflt(ndev, &dev_qdisc_ops);
-+ ndev->qdisc_sleeping = priv->qdisc;
-+ ndev->qdisc = priv->qdisc;
-
-- if (!dev->qdisc_sleeping)
-+ if (!ndev->qdisc_sleeping)
- {
- P_ERROR("%s: qdisc_create_dflt failed on port %d\n",
-- dev->name, priv->port_id);
-- kfree(dev->priv);
-- return -ENOMEM;
-+ ndev->name, priv->port_id);
-+ goto out;
- }
- #endif
-
- /* set the internal maximum queueing capabilities */
-- dev->tx_queue_len = TX_MBUF_POOL_SIZE;
--
-+ ndev->tx_queue_len = TX_MBUF_POOL_SIZE;
-+#if 0
- if (!netif_queue_stopped(dev))
- {
- TRACE;
-@@ -2917,9 +3144,63 @@
- }
-
- found_devices++;
-+#endif
-+ if ((res = register_netdev(ndev)))
-+ P_ERROR("Failed to register netdev. res = %d\n", res);
-
- TRACE;
-
-+ out:
-+ return res;
-+}
-+
-+
-+static int __devinit npe_eth_init_device(struct device *dev)
-+{
-+ int res = -ENOMEM;
-+ struct platform_device *pdev = to_platform_device(dev);
-+ struct net_device *ndev = alloc_etherdev(sizeof(priv_data_t));
-+ TRACE;
-+ if (ndev == NULL) {
-+ P_ERROR("could not allocate device.\n");
-+ goto out;
-+ }
-+ SET_MODULE_OWNER(ndev);
-+ SET_NETDEV_DEV(ndev, dev);
-+ ixEthAccTxSchedulingDisciplineSet(pdev->id, FIFO_NO_PRIORITY);
-+ dev_set_drvdata(dev, ndev);
-+ res = dev_eth_probe(dev);
-+ if (res == 0) {
-+ /* This was added in v0.1.8 of the driver. It seems that we need to
-+ * enable the port before the user can set a mac address for the port
-+ * using 'ifconfig hw ether ...'. To enable the port we must first
-+ * register Q callbacks, so we register the portDisable callbacks to
-+ * ensure that no buffers are passed up to the kernel until the port is
-+ * brought up properly (ifconfig up)
-+ */
-+ ixEthAccPortTxDoneCallbackRegister(pdev->id,
-+ tx_done_disable_cb,
-+ (UINT32)ndev);
-+ ixEthAccPortRxCallbackRegister(pdev->id,
-+ rx_disable_cb,
-+ (UINT32)ndev);
-+ port_enable(ndev);
-+ } else {
-+ dev_set_drvdata(dev, NULL);
-+ kfree(ndev);
-+ }
-+out:
-+ TRACE;
-+ return res;
-+}
-+
-+static int __devexit npe_eth_fini_device(struct device *dev)
-+{
-+ struct net_device *ndev = dev_get_drvdata(dev);
-+ TRACE;
-+ dev_set_drvdata(dev, NULL);
-+ unregister_netdev(ndev);
-+ kfree(ndev);
- return 0;
- }
-
-@@ -2928,6 +3209,28 @@
-
- #ifdef MODULE
-
-+#define MODULE_NAME "ixp400_eth"
-+
-+static struct device_driver npe_eth_driver = {
-+ .name = MODULE_NAME,
-+ .bus = &platform_bus_type,
-+ .probe = npe_eth_init_device,
-+ .remove = npe_eth_fini_device,
-+};
-+
-+static struct platform_device npe_eth_devs[] = {
-+ {
-+ .name = MODULE_NAME,
-+ .id = IX_ETH_PORT_1,
-+ },
-+ {
-+ .name = MODULE_NAME,
-+ .id = IX_ETH_PORT_2,
-+ }
-+};
-+
-+
-+
- static struct net_device ixp400_devices[IX_ETH_ACC_NUMBER_OF_PORTS];
-
- int init_module(void)
-@@ -2935,11 +3238,11 @@
- int res, dev_count;
- IxEthAccPortId portId;
- struct net_device *dev;
--
-+ int i;
- TRACE;
-
-- P_INFO("Initializing IXP400 NPE Ethernet driver software v. " MODULE_VERSION " \n");
--
-+ P_INFO("Initializing IXP400 NPE Ethernet driver software v. LE \n");
-+ ixOsalLogLevelSet(IX_OSAL_LOG_LVL_ALL);
- TRACE;
-
- /* check module parameter range */
-@@ -2951,6 +3254,16 @@
-
- TRACE;
-
-+ /* XXX do this very early */
-+ /* initialise the DB Maintenance task mutex */
-+ maintenance_mutex = (struct semaphore *) kmalloc(sizeof(struct semaphore), GFP_KERNEL);
-+ if (!maintenance_mutex)
-+ return -ENOMEM;
-+
-+ init_MUTEX(maintenance_mutex);
-+
-+ TRACE;
-+
- #ifndef DEBUG
- /* check module parameter range */
- if (log_level >= 2) /* module parameter */
-@@ -3015,6 +3328,13 @@
- /* Initialise the NPEs and access layer */
- TRACE;
-
-+ for (i = 0; i < IX_ETH_ACC_NUMBER_OF_PORTS; i++)
-+ {
-+ if ((res = npe_start(i)))
-+ return res;
-+ TRACE;
-+ }
-+
- if ((res = ethacc_init()))
- return res;
-
-@@ -3026,6 +3346,13 @@
-
- TRACE;
-
-+ npe_eth_workqueue = create_workqueue(MODULE_NAME);
-+ if (npe_eth_workqueue == NULL)
-+ return -ENOMEM;
-+
-+ TRACE;
-+
-+#if 0
- /* Initialise the driver structure */
- for (dev_count = 0;
- dev_count < dev_max_count; /* module parameter */
-@@ -3038,7 +3365,7 @@
- dev->init = dev_eth_probe;
-
- TRACE;
--
-+ }
- if ((res = register_netdev(dev)))
- {
- TRACE;
-@@ -3068,6 +3395,35 @@
- return convert_error_ethAcc(res);
- }
- }
-+#endif
-+ /* set the softirq rx queue thresholds
-+ * (These numbers are based on tuning experiments)
-+ * maxbacklog = (netdev_max_backlog * 10) / 63;
-+ */
-+ if (netdev_max_backlog == 0)
-+ {
-+ netdev_max_backlog = 290; /* system default */
-+ }
-+ netdev_max_backlog /= BACKLOG_TUNE;
-+
-+ TRACE;
-+
-+ res = driver_register(&npe_eth_driver);
-+ if (res != 0) {
-+ P_ERROR("Failed to register NPE EThernet driver (res = %d)\n", res);
-+ return res;
-+ }
-+
-+ res = platform_device_register(&npe_eth_devs[0]);
-+ if (res != 0) {
-+ P_ERROR("Failed to register NPE platform device 0 (res = %d)\n", res);
-+ return res;
-+ }
-+ res = platform_device_register(&npe_eth_devs[1]);
-+ if (res != 0) {
-+ P_ERROR("Failed to register NPE platform device 1 (res = %d)\n", res);
-+ return res;
-+ }
-
- TRACE;
-
-@@ -3104,33 +3460,13 @@
- }
-
- TRACE;
--
-- /* initialise the DB Maintenance task mutex */
-- maintenance_mutex = (struct semaphore *) kmalloc(sizeof(struct semaphore), GFP_KERNEL);
-- if (!maintenance_mutex)
-- return -ENOMEM;
--
-- init_MUTEX(maintenance_mutex);
--
-- TRACE;
--
-+TRACE;
- /* Do not start the EthDB maintenance thread if learning & filtering feature is disabled */
- if (npe_learning) /* module parameter */
- {
-- maintenance_timer_set();
-- }
--
-- TRACE;
--
-- /* set the softirq rx queue thresholds
-- * (These numbers are based on tuning experiments)
-- * maxbacklog = (netdev_max_backlog * 10) / 63;
-- */
-- if (netdev_max_backlog == 0)
-- {
-- netdev_max_backlog = 290; /* system default */
-+ schedule_db_maintenance();
-+ // maintenance_timer_set();
- }
-- netdev_max_backlog /= BACKLOG_TUNE;
-
- TRACE;
-
-@@ -3175,7 +3511,8 @@
- TRACE;
-
- /* stop the maintenance timer */
-- maintenance_timer_clear();
-+ // maintenance_timer_clear();
-+ cancel_db_maintenance();
-
- TRACE;
-
diff --git a/recipes/ixp425-eth/ixp400-eth-1.4/makefile.patch b/recipes/ixp425-eth/ixp400-eth-1.4/makefile.patch
deleted file mode 100644
index 350485c1aa..0000000000
--- a/recipes/ixp425-eth/ixp400-eth-1.4/makefile.patch
+++ /dev/null
@@ -1,33 +0,0 @@
---- /dev/null 2005-09-06 00:17:15.000000000 -0700
-+++ ./Makefile 2005-10-02 22:15:19.974595551 -0700
-@@ -0,0 +1,30 @@
-+obj-m := ixp400_eth.o
-+
-+CFLAGS_ixp400_eth.o = -DWall \
-+ -I$(IXP4XX_CSR_DIR) \
-+ -I$(OSAL_DIR)/ \
-+ -I$(OSAL_DIR)/os/linux/include/ \
-+ -I$(OSAL_DIR)/os/linux/include/modules/ \
-+ -I$(OSAL_DIR)/os/linux/include/modules/ioMem/ \
-+ -I$(OSAL_DIR)/os/linux/include/modules/core/ \
-+ -I$(OSAL_DIR)/os/linux/include/modules/bufferMgt/ \
-+ -I$(OSAL_DIR)/os/linux/include/core/ \
-+ -I$(OSAL_DIR)/os/linux/include/platforms/ \
-+ -I$(OSAL_DIR)/os/linux/include/platforms/ixp400/ \
-+ -I$(OSAL_DIR)/os/linux/include/core/ \
-+ -I$(OSAL_DIR)/include/ \
-+ -I$(OSAL_DIR)/include/modules/ \
-+ -I$(OSAL_DIR)/include/modules/bufferMgt/ \
-+ -I$(OSAL_DIR)/include/modules/ioMem/ \
-+ -I$(OSAL_DIR)/include/modules/core/ \
-+ -I$(OSAL_DIR)/include/platforms/ \
-+ -I$(OSAL_DIR)/include/platforms/ixp400/ \
-+ -I$(OSAL_DIR)/include/platforms/ixp400/xp425/ \
-+ -I$(OSAL_DIR)/os/linux/include/platforms/ixp400/ixp425/ \
-+ $(IX_CFLAGS)
-+
-+default:
-+ $(MAKE) ARCH=arm CROSS_COMPILE=$(LINUX_CROSS_COMPILE) V=1 -C $(LINUX_SRC) SUBDIRS=$(PWD) modules
-+
-+clean:
-+ rm -f ixp400_eth.ko
diff --git a/recipes/ixp425-eth/ixp400-eth-1.4/modprobe.conf b/recipes/ixp425-eth/ixp400-eth-1.4/modprobe.conf
deleted file mode 100644
index 9d579eeac1..0000000000
--- a/recipes/ixp425-eth/ixp400-eth-1.4/modprobe.conf
+++ /dev/null
@@ -1,3 +0,0 @@
-# Add an alias for eth0 to ixp400_eth to cause the S40networking
-# init script to load the ixp400_eth driver on the first boot
-alias eth0 ixp400_eth
diff --git a/recipes/ixp425-eth/ixp400-eth-1.5.1/2.6.14.patch b/recipes/ixp425-eth/ixp400-eth-1.5.1/2.6.14.patch
deleted file mode 100644
index fb55f92868..0000000000
--- a/recipes/ixp425-eth/ixp400-eth-1.5.1/2.6.14.patch
+++ /dev/null
@@ -1,28 +0,0 @@
- ixp400_eth.c | 6 +++++-
- 1 files changed, 5 insertions(+), 1 deletion(-)
-
-Index: ixp400-eth-1.5.1-r0/ixp400_eth.c
-===================================================================
---- ixp400-eth-1.5.1-r0.orig/ixp400_eth.c
-+++ ixp400-eth-1.5.1-r0/ixp400_eth.c
-@@ -1848,7 +1848,11 @@
- skb->len -= header_len;
-
- /* fill the pkt arrival time (set at the irq callback entry) */
-+#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,14)
- skb->stamp = irq_stamp;
-+#else
-+ skb_set_timestamp(skb, &irq_stamp);
-+#endif
-
- /* fill the input device field */
- skb->dev = dev;
-@@ -3040,7 +3044,7 @@
- }
-
- /* set port MAC addr and update the dev struct if successfull */
--int ixp400_dev_set_mac_address(struct net_device *dev, void *addr)
-+static int ixp400_dev_set_mac_address(struct net_device *dev, void *addr)
- {
- int res;
- IxEthAccMacAddr npeMacAddr;
diff --git a/recipes/ixp425-eth/ixp400-eth-1.5.1/2.6.15.patch b/recipes/ixp425-eth/ixp400-eth-1.5.1/2.6.15.patch
deleted file mode 100644
index 83115d8efa..0000000000
--- a/recipes/ixp425-eth/ixp400-eth-1.5.1/2.6.15.patch
+++ /dev/null
@@ -1,18 +0,0 @@
-2.6.15 needs platform_device.h
-
- ixp400_eth.c | 4 ++++
- 1 file changed, 4 insertions(+)
-
---- ixp400-eth/ixp400_eth.c 1970-01-01 00:00:00.000000000 +0000
-+++ ixp400-eth/ixp400_eth.c 1970-01-01 00:00:00.000000000 +0000
-@@ -65,6 +65,10 @@
- #include <linux/sysctl.h>
- #include <linux/unistd.h>
-
-+#ifndef to_platform_device
-+#include <linux/platform_device.h>
-+#endif
-+
- /*
- * Intel IXP400 Software specific header files
- */
diff --git a/recipes/ixp425-eth/ixp400-eth-1.5.1/Makefile.patch b/recipes/ixp425-eth/ixp400-eth-1.5.1/Makefile.patch
deleted file mode 100644
index 3bc51f0b66..0000000000
--- a/recipes/ixp425-eth/ixp400-eth-1.5.1/Makefile.patch
+++ /dev/null
@@ -1,36 +0,0 @@
-This is an OpenEmbedded only patch to make the code buildable in
-the OpenEmbedded environment.
-
---- ixp400-eth/Makefile 1970-01-01 00:00:00.000000000 +0000
-+++ ixp400-eth/Makefile 1970-01-01 00:00:00.000000000 +0000
-@@ -0,0 +1,30 @@
-+obj-m := ixp400_eth.o
-+
-+CFLAGS_ixp400_eth.o = -DWall \
-+ -I$(IXP4XX_CSR_DIR) \
-+ -I$(OSAL_DIR)/ \
-+ -I$(OSAL_DIR)/os/linux/include/ \
-+ -I$(OSAL_DIR)/os/linux/include/modules/ \
-+ -I$(OSAL_DIR)/os/linux/include/modules/ioMem/ \
-+ -I$(OSAL_DIR)/os/linux/include/modules/core/ \
-+ -I$(OSAL_DIR)/os/linux/include/modules/bufferMgt/ \
-+ -I$(OSAL_DIR)/os/linux/include/core/ \
-+ -I$(OSAL_DIR)/os/linux/include/platforms/ \
-+ -I$(OSAL_DIR)/os/linux/include/platforms/ixp400/ \
-+ -I$(OSAL_DIR)/os/linux/include/core/ \
-+ -I$(OSAL_DIR)/include/ \
-+ -I$(OSAL_DIR)/include/modules/ \
-+ -I$(OSAL_DIR)/include/modules/bufferMgt/ \
-+ -I$(OSAL_DIR)/include/modules/ioMem/ \
-+ -I$(OSAL_DIR)/include/modules/core/ \
-+ -I$(OSAL_DIR)/include/platforms/ \
-+ -I$(OSAL_DIR)/include/platforms/ixp400/ \
-+ -I$(OSAL_DIR)/include/platforms/ixp400/xp425/ \
-+ -I$(OSAL_DIR)/os/linux/include/platforms/ixp400/ixp425/ \
-+ $(IX_CFLAGS)
-+
-+default:
-+ $(MAKE) ARCH=arm CROSS_COMPILE=$(LINUX_CROSS_COMPILE) $(KERNEL_VERBOSE) symverfile=$(IXP4XX_CSR_SYMVERS) -C $(LINUX_SRC) SUBDIRS=$(PWD) modules
-+
-+clean:
-+ rm -f ixp400_eth.ko
diff --git a/recipes/ixp425-eth/ixp400-eth-1.5.1/continue-if-qmgr-init-fails.patch b/recipes/ixp425-eth/ixp400-eth-1.5.1/continue-if-qmgr-init-fails.patch
deleted file mode 100644
index 8508790fa5..0000000000
--- a/recipes/ixp425-eth/ixp400-eth-1.5.1/continue-if-qmgr-init-fails.patch
+++ /dev/null
@@ -1,22 +0,0 @@
-tries to go on even if queue manager initialization
-fails. this is hand because you'll be allowed to
-insert ixp400_eth immediately after you have removed
-it, without re-inserting ixp400.
-
- ixp400_eth.c | 5 +----
- 1 file changed, 1 insertion(+), 4 deletions(-)
-
---- ixp400-eth/ixp400_eth.c 1970-01-01 00:00:00.000000000 +0000
-+++ ixp400-eth/ixp400_eth.c 1970-01-01 00:00:00.000000000 +0000
-@@ -2850,10 +2850,7 @@ static int qmgr_init(void)
- /* Initialise Queue Manager */
- P_VERBOSE("Initialising Queue Manager...\n");
- if ((res = ixQMgrInit()))
-- {
-- P_ERROR("Error initialising queue manager!\n");
-- return -1;
-- }
-+ P_ERROR("Error initialising queue manager, trying to continue!\n");
-
- TRACE;
-
diff --git a/recipes/ixp425-eth/ixp400-eth-1.5.1/debug.patch b/recipes/ixp425-eth/ixp400-eth-1.5.1/debug.patch
deleted file mode 100644
index c684c078d2..0000000000
--- a/recipes/ixp425-eth/ixp400-eth-1.5.1/debug.patch
+++ /dev/null
@@ -1,131 +0,0 @@
-This patch is not necessary but helps when debugging the build
-
---- ixp400-eth/ixp400_eth.c 1970-01-01 00:00:00.000000000 +0000
-+++ ixp400-eth/ixp400_eth.c 1970-01-01 00:00:00.000000000 +0000
-@@ -1350,9 +1350,10 @@ static int dev_media_check_thread (void*
-
- if (res != IX_ETH_ACC_SUCCESS)
- {
-- P_WARN("ixEthMiiLinkStatus failed on PHY%d.\n"
-+ P_WARN("%s: ixEthMiiLinkStatus failed on PHY%d.\n"
- "\tCan't determine\nthe auto negotiated parameters. "
- "Using default values.\n",
-+ dev->name,
- phyNum);
- /* something is bad, gracefully stops the loop */
- priv->maintenanceCheckStopped = TRUE;
-@@ -2213,7 +2214,8 @@ static int port_enable(struct net_device
- IX_IEEE803_MAC_ADDRESS_SIZE);
- if ((res = ixEthAccPortUnicastMacAddressSet(priv->port_id, &npeMacAddr)))
- {
-- P_VERBOSE("Failed to set MAC address %2.2x:%2.2x:%2.2x:%2.2x:%2.2x:%2.2x for port %d\n",
-+ P_VERBOSE("%s: Failed to set MAC address %2.2x:%2.2x:%2.2x:%2.2x:%2.2x:%2.2x for port %d\n",
-+ dev->name,
- (unsigned)npeMacAddr.macAddress[0],
- (unsigned)npeMacAddr.macAddress[1],
- (unsigned)npeMacAddr.macAddress[2],
-@@ -2707,8 +2709,8 @@ static int do_dev_ioctl(struct net_devic
- down (miiAccessMutex); /* lock the MII register access mutex */
- if ((res = ixEthAccMiiReadRtn (data->phy_id, data->reg_num, &data->val_out)))
- {
-- P_ERROR("Error reading MII reg %d on phy %d\n",
-- data->reg_num, data->phy_id);
-+ P_ERROR("%s: Error reading MII reg %d on phy %d\n",
-+ dev->name, data->reg_num, data->phy_id);
- res = -1;
- }
- up (miiAccessMutex); /* release the MII register access mutex */
-@@ -2720,8 +2722,8 @@ static int do_dev_ioctl(struct net_devic
- down (miiAccessMutex); /* lock the MII register access mutex */
- if ((res = ixEthAccMiiWriteRtn (data->phy_id, data->reg_num, data->val_in)))
- {
-- P_ERROR("Error writing MII reg %d on phy %d\n",
-- data->reg_num, data->phy_id);
-+ P_ERROR("%s: Error writing MII reg %d on phy %d\n",
-+ dev->name, data->reg_num, data->phy_id);
- res = -1;
- }
- up (miiAccessMutex); /* release the MII register access mutex */
-@@ -3049,7 +3051,8 @@ static int set_mac_address(struct net_de
- /* Set MAC addr in h/w (ethAcc checks for MAC address to be valid) */
- if ((res = ixEthAccPortUnicastMacAddressSet(priv->port_id, &npeMacAddr)))
- {
-- P_VERBOSE("Failed to set MAC address %2.2x:%2.2x:%2.2x:%2.2x:%2.2x:%2.2x for port %d\n",
-+ P_VERBOSE("%s: Failed to set MAC address %2.2x:%2.2x:%2.2x:%2.2x:%2.2x:%2.2x for port %d\n",
-+ dev->name,
- (unsigned)npeMacAddr.macAddress[0],
- (unsigned)npeMacAddr.macAddress[1],
- (unsigned)npeMacAddr.macAddress[2],
-@@ -3267,6 +3270,8 @@ static int __devinit dev_eth_probe(struc
- kmalloc(sizeof(struct semaphore), GFP_KERNEL);
- if (!priv->maintenanceCheckThreadComplete)
- {
-+ P_ERROR("%s: Failed to allocate maintenance semaphore %d\n",
-+ ndev->name, priv->port_id);
- goto error;
- }
- priv->lock = SPIN_LOCK_UNLOCKED;
-@@ -3360,7 +3365,11 @@ static int __devinit dev_eth_probe(struc
-
- #if IS_KERNEL26
- if (register_netdev(ndev))
-+ {
-+ P_ERROR("%s: Failed to register netdevice %d\n",
-+ ndev->name, priv->port_id);
- goto error;
-+ }
- #else
- found_devices++;
- #endif /* IS_KERNEL26 */
-@@ -3370,6 +3379,8 @@ static int __devinit dev_eth_probe(struc
- /* register EthAcc callbacks for this port */
- if (dev_rxtxcallback_register(portId, (UINT32)ndev))
- {
-+ P_ERROR("%s: Failed to register callback %d\n",
-+ ndev->name, priv->port_id);
- goto error;
- }
-
-@@ -3393,6 +3404,7 @@ static int __devinit dev_eth_probe(struc
-
- /* Error handling: enter here whenever error detected */
- error:
-+ P_ERROR("%s: dev_eth_probe fails\n", ndev->name);
- TRACE;
-
- #ifdef CONFIG_IXP400_ETH_QDISC_ENABLED
-@@ -3465,21 +3477,21 @@ static int __devexit dev_eth_remove(int
- {
- if (IX_SUCCESS != ixNpeDlNpeStopAndReset(IX_NPEDL_NPEID_NPEA))
- {
-- P_NOTICE("Error Halting NPE for Ethernet port %d!\n", portId);
-+ P_NOTICE("%s: Error Halting NPE for Ethernet port %d!\n", ndev->name, portId);
- }
- }
- if (default_npeImageId[portId] == IX_ETH_NPE_B_IMAGE_ID)
- {
- if (IX_SUCCESS != ixNpeDlNpeStopAndReset(IX_NPEDL_NPEID_NPEB))
- {
-- P_NOTICE("Error Halting NPE for Ethernet port %d!\n", portId);
-+ P_NOTICE("%s: Error Halting NPE for Ethernet port %d!\n", ndev->name, portId);
- }
- }
- if (default_npeImageId[portId] == IX_ETH_NPE_C_IMAGE_ID)
- {
- if (IX_SUCCESS != ixNpeDlNpeStopAndReset(IX_NPEDL_NPEID_NPEC))
- {
-- P_NOTICE("Error Halting NPE for Ethernet port %d!\n", portId);
-+ P_NOTICE("%s: Error Halting NPE for Ethernet port %d!\n", ndev->name, portId);
- }
- }
-
-@@ -3528,6 +3540,9 @@ static int __init ixp400_eth_init(void)
- TRACE;
-
- P_INFO("Initializing IXP400 NPE Ethernet driver software v. " MOD_VERSION " \n");
-+#ifdef IX_OSAL_ENSURE_ON
-+ ixOsalLogLevelSet(IX_OSAL_LOG_LVL_ALL);
-+#endif
-
- TRACE;
-
diff --git a/recipes/ixp425-eth/ixp400-eth-1.5.1/device-name.patch b/recipes/ixp425-eth/ixp400-eth-1.5.1/device-name.patch
deleted file mode 100644
index 492c9274fd..0000000000
--- a/recipes/ixp425-eth/ixp400-eth-1.5.1/device-name.patch
+++ /dev/null
@@ -1,49 +0,0 @@
- register the ethernet devices as ethX
-
- ixp400_eth.c | 12 +++---------
- 1 files changed, 3 insertions(+), 9 deletions(-)
-
-Index: ixp400-eth-1.5.1-r0/ixp400_eth.c
-===================================================================
---- ixp400-eth-1.5.1-r0.orig/ixp400_eth.c
-+++ ixp400-eth-1.5.1-r0/ixp400_eth.c
-@@ -160,9 +160,6 @@
- MODULE_PARM(dev_max_count, "i");
- MODULE_PARM_DESC(dev_max_count, "Number of devices to initialize");
-
--/* devices will be called ixp0 and ixp1 */
--#define DEVICE_NAME "ixp"
--
- /* boolean values for PHY link speed, duplex, and autonegotiation */
- #define PHY_SPEED_10 0
- #define PHY_SPEED_100 1
-@@ -1579,7 +1576,7 @@
- if (request_irq(IX_OSAL_IXP400_XSCALE_PMU_IRQ_LVL,
- dev_pmu_timer_os_isr,
- SA_SHIRQ,
-- DEVICE_NAME,
-+ MODULE_NAME,
- (void *)IRQ_ANY_PARAMETER))
- {
- P_ERROR("Failed to reassign irq to PMU timer interrupt!\n");
-@@ -3035,8 +3032,8 @@
- if (port_id == IX_ETH_PORT_2) npe_id = "C";
- if (port_id == IX_ETH_PORT_3) npe_id = "A";
-
-- P_INFO("%s%d is using NPE%s and the PHY at address %d\n",
-- DEVICE_NAME, port_id, npe_id, phyAddresses[port_id]);
-+ P_INFO("ethernet %d is using NPE%s and the PHY at address %d\n",
-+ dev_count, npe_id, phyAddresses[port_id]);
-
- /* Set the MAC to the same duplex mode as the phy */
- ixEthAccPortDuplexModeSet(port_id,
-@@ -3244,9 +3241,6 @@
- /* set the private port ID */
- priv->port_id = portId;
-
-- /* set device name */
-- sprintf(ndev->name, DEVICE_NAME"%d", priv->port_id);
--
- TRACE;
-
- /* initialize RX pool */
diff --git a/recipes/ixp425-eth/ixp400-eth-1.5.1/int-random.patch b/recipes/ixp425-eth/ixp400-eth-1.5.1/int-random.patch
deleted file mode 100644
index fede9daf90..0000000000
--- a/recipes/ixp425-eth/ixp400-eth-1.5.1/int-random.patch
+++ /dev/null
@@ -1,16 +0,0 @@
-use the ethernet device interrupts to gather entropy
-
- ixp400_eth.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
---- ixp400-eth/ixp400_eth.c 1970-01-01 00:00:00.000000000 +0000
-+++ ixp400-eth/ixp400_eth.c 1970-01-01 00:00:00.000000000 +0000
-@@ -2864,7 +2864,7 @@ static int qmgr_init(void)
-
- if (request_irq(IX_OSAL_IXP400_QM1_IRQ_LVL,
- dev_qmgr_os_isr,
-- SA_SHIRQ,
-+ SA_SHIRQ | SA_SAMPLE_RANDOM,
- MODULE_NAME,
- (void *)IRQ_ANY_PARAMETER))
- {
diff --git a/recipes/ixp425-eth/ixp400-eth-1.5.1/le.patch b/recipes/ixp425-eth/ixp400-eth-1.5.1/le.patch
deleted file mode 100644
index 3d569015e6..0000000000
--- a/recipes/ixp425-eth/ixp400-eth-1.5.1/le.patch
+++ /dev/null
@@ -1,41 +0,0 @@
-little endian support
-
- ixp400_eth.c | 20 ++++++++++++++++++++
- 1 file changed, 20 insertions(+)
-
---- ixp400-eth/ixp400_eth.c 1970-01-01 00:00:00.000000000 +0000
-+++ ixp400-eth/ixp400_eth.c 1970-01-01 00:00:00.000000000 +0000
-@@ -2040,6 +2040,16 @@ static void rx_cb(UINT32 callbackTag, IX
- skb->tail = skb->data + len;
- skb->len = len;
-
-+#ifndef __ARMEB__
-+ {
-+ /* Byte swap all words containing data from the buffer. */
-+ unsigned long *p = (unsigned long*)((unsigned)skb->data & ~0x3);
-+ unsigned long *e = (unsigned long*)(((unsigned)skb->data + skb->len + 3) & ~0x3);
-+ while (p < e)
-+ *p = ntohl(*p), ++p;
-+ }
-+#endif
-+
- #ifdef DEBUG_DUMP
- skb_dump("rx", skb);
- #endif
-@@ -2431,6 +2441,16 @@ static int dev_hard_start_xmit(struct sk
- return 0;
- }
-
-+#ifndef __ARMEB__
-+ {
-+ /* Byte swap all words containing data from the buffer. */
-+ unsigned long *p = (unsigned long*)((unsigned)skb->data & ~0x3);
-+ unsigned long *e = (unsigned long*)(((unsigned)skb->data + skb->len + 3) & ~0x3);
-+ while (p < e)
-+ *p = ntohl(*p), ++p;
-+ }
-+#endif
-+
- #ifdef DEBUG_DUMP
- skb_dump("tx", skb);
- #endif
diff --git a/recipes/ixp425-eth/ixp400-eth-1.5.1/mac-address.patch b/recipes/ixp425-eth/ixp400-eth-1.5.1/mac-address.patch
deleted file mode 100644
index e23eaf5f2b..0000000000
--- a/recipes/ixp425-eth/ixp400-eth-1.5.1/mac-address.patch
+++ /dev/null
@@ -1,123 +0,0 @@
-Patch to use maclist - get the MAC to use from the board level
-MAC repository based on the device portId.
-
-Signed-off-by: John Bowler <jbowler@acm.org>
-
---- ixp400-eth/ixp400_eth.c 1970-01-01 00:00:00.000000000 +0000
-+++ ixp400-eth/ixp400_eth.c 1970-01-01 00:00:00.000000000 +0000
-@@ -23,10 +23,10 @@
- * This driver is written and optimized for Intel Xscale technology.
- *
- * SETUP NOTES:
-- * By default, this driver uses predefined MAC addresses.
-- * These are set in global var 'default_mac_addr' in this file.
-- * If required, these can be changed at run-time using
-- * the 'ifconfig' tool.
-+ * By default, this driver uses MAC addresses from maclist, if
-+ * these are not available the kernel api to randomly generate
-+ * a locally assigned MAC address is used. The MAC can be
-+ * overridden with ifconfig if absolutely necessary.
- *
- * Example - to set ixp0 MAC address to 00:02:B3:66:88:AA,
- * run ifconfig with the following arguments:
-@@ -64,6 +64,7 @@
- #include <linux/sysctl.h>
- #include <linux/unistd.h>
- #include <linux/version.h>
-+#include <net/maclist.h>
-
- #if KERNEL_VERSION(2,6,0) <= LINUX_VERSION_CODE
- #include <linux/workqueue.h>
-@@ -130,6 +131,8 @@ static int dev_max_count = 1; /* only NP
- static int dev_max_count = 2; /* only NPEB and NPEC */
- #elif defined (CONFIG_ARCH_IXDP465) || defined(CONFIG_MACH_IXDP465)
- static int dev_max_count = 3; /* all NPEs are used */
-+#else
-+static int dev_max_count = -1;/* use maclist_count */
- #endif
-
- #ifndef CONFIG_IXP400_NAPI
-@@ -614,21 +617,6 @@ static phy_cfg_t default_phy_cfg[] =
- #endif
- };
-
--/* Default MAC addresses for EthAcc Ports 1 and 2 (using Intel MAC prefix)
-- * Default is
-- * IX_ETH_PORT_1 -> MAC 00:02:b3:01:01:01
-- * IX_ETH_PORT_2 -> MAC 00:02:b3:02:02:02
-- * IX_ETH_PORT_3 -> MAC 00:02:b3:03:03:03
--*/
--static IxEthAccMacAddr default_mac_addr[] =
--{
-- {{0x00, 0x02, 0xB3, 0x01, 0x01, 0x01}} /* EthAcc Port 0 */
-- ,{{0x00, 0x02, 0xB3, 0x02, 0x02, 0x02}} /* EthAcc Port 1 */
--#if defined (CONFIG_ARCH_IXDP465) || defined(CONFIG_MACH_IXDP465)
-- ,{{0x00, 0x02, 0xB3, 0x03, 0x03, 0x03}} /* EthAcc Port 2 */
--#endif
--};
--
- /* Default mapping of NpeImageIds for EthAcc Ports
- * Default is
- * IX_ETH_PORT_1 -> IX_ETH_NPE_B
-@@ -3325,28 +3313,10 @@ static int __devinit dev_eth_probe(struc
-
- /* Defines the unicast MAC address
- *
-- * Here is a good place to read a board-specific MAC address
-- * from a non-volatile memory, e.g. an external eeprom.
-- *
-- * This memcpy uses a default MAC address from this
-- * source code.
-- *
-- * This can be overriden later by the (optional) command
-- *
-- * ifconfig ixp0 ether 0002b3010101
-- *
-+ * The code reads from the maclist API.
- */
--
-- memcpy(ndev->dev_addr,
-- &default_mac_addr[priv->port_id].macAddress,
-- IX_IEEE803_MAC_ADDRESS_SIZE);
--
-- /* possibly remove this test and the message when a valid MAC address
-- * is not hardcoded in the driver source code.
-- */
-- if (is_valid_ether_addr(ndev->dev_addr))
-- {
-- P_WARN("Use default MAC address %2.2x:%2.2x:%2.2x:%2.2x:%2.2x:%2.2x for port %d\n",
-+ maclist_read((u8(*)[6])&ndev->dev_addr, priv->port_id);
-+ P_INFO("Use MAC address %2.2x:%2.2x:%2.2x:%2.2x:%2.2x:%2.2x for port %d\n",
- (unsigned)ndev->dev_addr[0],
- (unsigned)ndev->dev_addr[1],
- (unsigned)ndev->dev_addr[2],
-@@ -3354,7 +3324,6 @@ static int __devinit dev_eth_probe(struc
- (unsigned)ndev->dev_addr[4],
- (unsigned)ndev->dev_addr[5],
- priv->port_id);
-- }
-
- /* Set/update the internal packet size
- * This can be overriden later by the command
-@@ -3562,12 +3531,15 @@ static int __init ixp400_eth_init(void)
-
- TRACE;
-
-- /* check module parameter range */
-- if (dev_max_count == 0 || dev_max_count > IX_ETH_ACC_NUMBER_OF_PORTS)
-- {
-- P_ERROR("Number of ports supported is dev_max_count <= %d\n", IX_ETH_ACC_NUMBER_OF_PORTS);
-- return -1;
-- }
-+ /* fix dev_max_count to maclist_count - the actual number of
-+ * available MACs
-+ */
-+ if (dev_max_count <= 0 || (dev_max_count > maclist_count() && maclist_count() > 0))
-+ dev_max_count = maclist_count();
-+ if (dev_max_count <= 0)
-+ dev_max_count = 1;
-+ else if (dev_max_count > IX_ETH_ACC_NUMBER_OF_PORTS)
-+ dev_max_count = IX_ETH_ACC_NUMBER_OF_PORTS;
-
- TRACE;
-
diff --git a/recipes/ixp425-eth/ixp400-eth-1.5.1/modprobe.conf b/recipes/ixp425-eth/ixp400-eth-1.5.1/modprobe.conf
deleted file mode 100644
index f08b9a404c..0000000000
--- a/recipes/ixp425-eth/ixp400-eth-1.5.1/modprobe.conf
+++ /dev/null
@@ -1,4 +0,0 @@
-# Add an alias for eth0 to ixp400_eth to cause the S40networking
-# init script to load the ixp400_eth driver on the first boot
-alias eth0 ixp400_eth
-options ixp400_eth dev_max_count=1 \ No newline at end of file
diff --git a/recipes/ixp425-eth/ixp400-eth-1.5.1/module-param.patch b/recipes/ixp425-eth/ixp400-eth-1.5.1/module-param.patch
deleted file mode 100644
index c54c45d716..0000000000
--- a/recipes/ixp425-eth/ixp400-eth-1.5.1/module-param.patch
+++ /dev/null
@@ -1,62 +0,0 @@
- ixp400_eth.c | 32 ++++++++++++++++++++++++++++++++
- 1 files changed, 32 insertions(+)
-
-Index: ixp400_eth/ixp400_eth.c
-===================================================================
---- ixp400_eth.orig/ixp400_eth.c
-+++ ixp400_eth/ixp400_eth.c
-@@ -142,22 +142,54 @@
-
- static int datapath_poll = 1; /* default : rx/tx polling, not interrupt driven*/
-
-+#if LINUX_VERSION_CODE <= KERNEL_VERSION(2,6,16)
- MODULE_PARM(ixp400_netdev_max_backlog, "i");
-+#else
-+module_param(ixp400_netdev_max_backlog, int, 0644);
-+#endif
- MODULE_PARM_DESC(ixp400_netdev_max_backlog, "Should be set to the value of /proc/sys/net/core/netdev_max_backlog (perf affecting)");
-+#if LINUX_VERSION_CODE <= KERNEL_VERSION(2,6,16)
- MODULE_PARM(datapath_poll, "i");
-+#else
-+module_param(datapath_poll, int, 0644);
-+#endif
- MODULE_PARM_DESC(datapath_poll, "If non-zero, use polling method for datapath instead of interrupts");
- #endif /* CONFIG_IXP400_NAPI */
-+#if LINUX_VERSION_CODE <= KERNEL_VERSION(2,6,16)
- MODULE_PARM(npe_learning, "i");
-+#else
-+module_param(npe_learning, int, 0644);
-+#endif
- MODULE_PARM_DESC(npe_learning, "If non-zero, NPE MAC Address Learning & Filtering feature will be enabled");
-+#if LINUX_VERSION_CODE <= KERNEL_VERSION(2,6,16)
- MODULE_PARM(log_level, "i");
-+#else
-+module_param(log_level, int, 0644);
-+#endif
- MODULE_PARM_DESC(log_level, "Set log level: 0 - None, 1 - Verbose, 2 - Debug");
-+#if LINUX_VERSION_CODE <= KERNEL_VERSION(2,6,16)
- MODULE_PARM(no_ixp400_sw_init, "i");
-+#else
-+module_param(no_ixp400_sw_init, int, 0644);
-+#endif
- MODULE_PARM_DESC(no_ixp400_sw_init, "If non-zero, do not initialise Intel IXP400 Software Release core components");
-+#if LINUX_VERSION_CODE <= KERNEL_VERSION(2,6,16)
- MODULE_PARM(no_phy_scan, "i");
-+#else
-+module_param(no_phy_scan, int, 0644);
-+#endif
- MODULE_PARM_DESC(no_phy_scan, "If non-zero, use hard-coded phy addresses");
-+#if LINUX_VERSION_CODE <= KERNEL_VERSION(2,6,16)
- MODULE_PARM(phy_reset, "i");
-+#else
-+module_param(phy_reset, int, 0644);
-+#endif
- MODULE_PARM_DESC(phy_reset, "If non-zero, reset the phys");
-+#if LINUX_VERSION_CODE <= KERNEL_VERSION(2,6,16)
- MODULE_PARM(dev_max_count, "i");
-+#else
-+module_param(dev_max_count, int, 0644);
-+#endif
- MODULE_PARM_DESC(dev_max_count, "Number of devices to initialize");
-
- /* boolean values for PHY link speed, duplex, and autonegotiation */
diff --git a/recipes/ixp425-eth/ixp400-eth-1.5.1/netdev_max_backlog.patch b/recipes/ixp425-eth/ixp400-eth-1.5.1/netdev_max_backlog.patch
deleted file mode 100644
index 6891b6b4a9..0000000000
--- a/recipes/ixp425-eth/ixp400-eth-1.5.1/netdev_max_backlog.patch
+++ /dev/null
@@ -1,54 +0,0 @@
---- ixp400_eth/ixp400_eth.c~ 2006-01-09 01:03:11.000000000 +1030
-+++ ixp400_eth/ixp400_eth.c 2006-01-09 01:05:27.000000000 +1030
-@@ -139,12 +139,12 @@
- * skbuf to push into the linux stack, and avoid the performance degradations
- * during overflow.
- */
--static int netdev_max_backlog = 290;
-+static int ixp400_netdev_max_backlog = 290;
-
- static int datapath_poll = 1; /* default : rx/tx polling, not interrupt driven*/
-
--MODULE_PARM(netdev_max_backlog, "i");
--MODULE_PARM_DESC(netdev_max_backlog, "Should be set to the value of /proc/sys/net/core/netdev_max_backlog (perf affecting)");
-+MODULE_PARM(ixp400_netdev_max_backlog, "i");
-+MODULE_PARM_DESC(ixp400_netdev_max_backlog, "Should be set to the value of /proc/sys/net/core/netdev_max_backlog (perf affecting)");
- MODULE_PARM(datapath_poll, "i");
- MODULE_PARM_DESC(datapath_poll, "If non-zero, use polling method for datapath instead of interrupts");
- #endif /* CONFIG_IXP400_NAPI */
-@@ -213,7 +213,7 @@
- * high traffic rates. To measure the maximum throughput between the
- * ports of the driver,
- * - Modify /proc/sys/net/core/netdev_max_backlog value in the kernel
-- * - Adjust netdev_max_backlog=n in the driver's command line
-+ * - Adjust ixp400_netdev_max_backlog=n in the driver's command line
- * in order to get the best rates depending on the testing tool
- * and the OS load.
- *
-@@ -1997,7 +1997,7 @@
- /* check if the system accepts more traffic and
- * against chained mbufs
- */
-- if ((qlevel < netdev_max_backlog)
-+ if ((qlevel < ixp400_netdev_max_backlog)
- && (IX_OSAL_MBUF_NEXT_PKT_IN_CHAIN_PTR(mbuf) == NULL))
- #else
- /* check against chained mbufs
-@@ -3776,13 +3776,13 @@
- #ifndef CONFIG_IXP400_NAPI
- /* set the softirq rx queue thresholds
- * (These numbers are based on tuning experiments)
-- * maxbacklog = (netdev_max_backlog * 10) / 63;
-+ * maxbacklog = (ixp400_netdev_max_backlog * 10) / 63;
- */
-- if (netdev_max_backlog == 0)
-+ if (ixp400_netdev_max_backlog == 0)
- {
-- netdev_max_backlog = 290; /* system default */
-+ ixp400_netdev_max_backlog = 290; /* system default */
- }
-- netdev_max_backlog /= BACKLOG_TUNE;
-+ ixp400_netdev_max_backlog /= BACKLOG_TUNE;
-
- TRACE;
- #endif
diff --git a/recipes/ixp425-eth/ixp400-eth-1.5.1/params.patch b/recipes/ixp425-eth/ixp400-eth-1.5.1/params.patch
deleted file mode 100644
index 86011deaaa..0000000000
--- a/recipes/ixp425-eth/ixp400-eth-1.5.1/params.patch
+++ /dev/null
@@ -1,75 +0,0 @@
-*** ixp/ixp400_eth.c.orig Wed Jun 7 21:31:59 2006
---- ixp/ixp400_eth.c Fri Jun 9 14:55:18 2006
-***************
-*** 112,135 ****
- #define MOD_VERSION "1.5"
-
- /* Module parameters */
-! static int npe_learning = 1; /* default : NPE learning & filtering enable */
-! static int log_level = 0; /* default : no log */
-! static int no_ixp400_sw_init = 0; /* default : init core components of the IXP400 Software */
-! static int no_phy_scan = 0; /* default : do phy discovery */
-! static int phy_reset = 0; /* default : mo phy reset */
-
- /* maximum number of ports supported by this driver ixp0, ixp1 ....
- * The default is to configure all ports defined in EthAcc component
- */
- #ifdef CONFIG_IXP400_ETH_NPEC_ONLY
-! static int dev_max_count = 1; /* only NPEC is used */
-! #elif defined (CONFIG_IXP400_ETH_NPEB_ONLY)
-! static int dev_max_count = 1; /* only NPEB is used */
- #elif defined (CONFIG_ARCH_IXDP425) || defined(CONFIG_ARCH_IXDPG425)\
- || defined (CONFIG_ARCH_ADI_COYOTE)
-! static int dev_max_count = 2; /* only NPEB and NPEC */
- #elif defined (CONFIG_ARCH_IXDP465) || defined(CONFIG_MACH_IXDP465)
-! static int dev_max_count = 3; /* all NPEs are used */
- #endif
-
- #ifndef CONFIG_IXP400_NAPI
---- 112,136 ----
- #define MOD_VERSION "1.5"
-
- /* Module parameters */
-! /* gcc 4.1.1+kernel2.6.16 do not like it if these are static! */
-! int npe_learning = 1; /* default : NPE learning & filtering enable */
-! int log_level = 0; /* default : no log */
-! int no_ixp400_sw_init = 0; /* default : init core components of the IXP400 Software */
-! int no_phy_scan = 0; /* default : do phy discovery */
-! int phy_reset = 0; /* default : mo phy reset */
-
- /* maximum number of ports supported by this driver ixp0, ixp1 ....
- * The default is to configure all ports defined in EthAcc component
- */
- #ifdef CONFIG_IXP400_ETH_NPEC_ONLY
-! int dev_max_count = 1; /* only NPEC is used */
-! #elif defined (CONFIG_IXP400_ETH_NPEB_ONLY)
-! int dev_max_count = 1; /* only NPEB is used */
- #elif defined (CONFIG_ARCH_IXDP425) || defined(CONFIG_ARCH_IXDPG425)\
- || defined (CONFIG_ARCH_ADI_COYOTE)
-! int dev_max_count = 2; /* only NPEB and NPEC */
- #elif defined (CONFIG_ARCH_IXDP465) || defined(CONFIG_MACH_IXDP465)
-! int dev_max_count = 3; /* all NPEs are used */
- #endif
-
- #ifndef CONFIG_IXP400_NAPI
-***************
-*** 138,146 ****
- * skbuf to push into the linux stack, and avoid the performance degradations
- * during overflow.
- */
-! static int ixp400_netdev_max_backlog = 290;
-
-! static int datapath_poll = 1; /* default : rx/tx polling, not interrupt driven*/
-
- MODULE_PARM(ixp400_netdev_max_backlog, "i");
- MODULE_PARM_DESC(ixp400_netdev_max_backlog, "Should be set to the value of /proc/sys/net/core/netdev_max_backlog (perf affecting)");
---- 139,147 ----
- * skbuf to push into the linux stack, and avoid the performance degradations
- * during overflow.
- */
-! int ixp400_netdev_max_backlog = 290;
-
-! int datapath_poll = 1; /* default : rx/tx polling, not interrupt driven*/
-
- MODULE_PARM(ixp400_netdev_max_backlog, "i");
- MODULE_PARM_DESC(ixp400_netdev_max_backlog, "Should be set to the value of /proc/sys/net/core/netdev_max_backlog (perf affecting)");
diff --git a/recipes/ixp425-eth/ixp400-eth-1.5.1/poll-controller.patch b/recipes/ixp425-eth/ixp400-eth-1.5.1/poll-controller.patch
deleted file mode 100644
index 64fb310ee5..0000000000
--- a/recipes/ixp425-eth/ixp400-eth-1.5.1/poll-controller.patch
+++ /dev/null
@@ -1,50 +0,0 @@
-poll controller support
-
- ixp400_eth.c | 22 ++++++++++++++++++++++
- 1 file changed, 22 insertions(+)
-
---- ixp400-eth/ixp400_eth.c 1970-01-01 00:00:00.000000000 +0000
-+++ ixp400-eth/ixp400_eth.c 1970-01-01 00:00:00.000000000 +0000
-@@ -348,6 +348,12 @@ static int dev_pmu_timer_init(void);
- extern void
- ixEthTxFrameDoneQMCallback(IxQMgrQId qId, IxQMgrCallbackId callbackId);
-
-+#ifdef CONFIG_NET_POLL_CONTROLLER
-+/* poll controller (needed for netconsole et al) */
-+static void
-+ixp425eth_poll_controller(struct net_device *dev);
-+#endif
-+
- /* Private device data */
- typedef struct {
- spinlock_t lock; /* multicast management lock */
-@@ -3060,6 +3066,19 @@ static int set_mac_address(struct net_de
- return 0;
- }
-
-+#ifdef CONFIG_NET_POLL_CONTROLLER
-+/*
-+ * Polling receive - used by netconsole and other diagnostic tools
-+ * to allow network i/o with interrupts disabled.
-+ * (stolen from 8139too.c by siddy)
-+ */
-+static void ixp425eth_poll_controller(struct net_device *dev)
-+{
-+ disable_irq(dev->irq);
-+ dev_qmgr_os_isr(dev->irq, dev, NULL);
-+ enable_irq(dev->irq);
-+}
-+#endif
-
- /*
- * TX QDISC
-@@ -3270,6 +3289,9 @@ static int __devinit dev_eth_probe(struc
- ndev->get_stats = dev_get_stats;
- ndev->set_multicast_list = dev_set_multicast_list;
- ndev->flags |= IFF_MULTICAST;
-+#ifdef CONFIG_NET_POLL_CONTROLLER
-+ ndev->poll_controller = ixp425eth_poll_controller;
-+#endif
-
- ndev->set_mac_address = set_mac_address;
-
diff --git a/recipes/ixp425-eth/ixp400-eth-1.5.1/stop-on-rmmod.patch b/recipes/ixp425-eth/ixp400-eth-1.5.1/stop-on-rmmod.patch
deleted file mode 100644
index 2ddc98938a..0000000000
--- a/recipes/ixp425-eth/ixp400-eth-1.5.1/stop-on-rmmod.patch
+++ /dev/null
@@ -1,29 +0,0 @@
-devices must be explicitely stopped when
-the driver is going do be removed, otherwise
-it will simply hang.
-
- ixp400_eth.c | 13 ++++++++++---
- 1 file changed, 10 insertions(+), 3 deletions(-)
-
---- ixp400-eth/ixp400_eth.c 1970-01-01 00:00:00.000000000 +0000
-+++ ixp400-eth/ixp400_eth.c 1970-01-01 00:00:00.000000000 +0000
-@@ -3800,9 +3800,16 @@ void __exit ixp400_eth_exit(void)
-
- TRACE;
-
-- /* We can only get here when the module use count is 0,
-- * so there's no need to stop devices.
-- */
-+ /* stop devices */
-+
-+#if IS_KERNEL26
-+ for (dev_count = 0;
-+ dev_count < dev_max_count; /* module parameter */
-+ dev_count++)
-+ {
-+ do_dev_stop(platform_get_drvdata(&ixp400_eth_devices[dev_count]));
-+ }
-+#endif
-
- if (no_ixp400_sw_init == 0) /* module parameter */
- {
diff --git a/recipes/ixp425-eth/ixp400-eth-1.5/2.6.14.patch b/recipes/ixp425-eth/ixp400-eth-1.5/2.6.14.patch
deleted file mode 100644
index f3426e4287..0000000000
--- a/recipes/ixp425-eth/ixp400-eth-1.5/2.6.14.patch
+++ /dev/null
@@ -1,35 +0,0 @@
- ixp400_eth.c | 8 ++++++--
- 1 file changed, 6 insertions(+), 2 deletions(-)
-
---- ixp400-eth/ixp400_eth.c 1970-01-01 00:00:00.000000000 +0000
-+++ ixp400-eth/ixp400_eth.c 1970-01-01 00:00:00.000000000 +0000
-@@ -1838,7 +1838,11 @@ static inline void dev_eth_type_trans(un
- skb->len -= header_len;
-
- /* fill the pkt arrival time (set at the irq callback entry) */
-+#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,14)
- skb->stamp = irq_stamp;
-+#else
-+ skb_set_timestamp(skb, &irq_stamp);
-+#endif
-
- /* fill the input device field */
- skb->dev = dev;
-@@ -3014,7 +3018,7 @@ static int phy_init(void)
- }
-
- /* set port MAC addr and update the dev struct if successfull */
--int dev_set_mac_address(struct net_device *dev, void *addr)
-+static int set_mac_address(struct net_device *dev, void *addr)
- {
- int res;
- IxEthAccMacAddr npeMacAddr;
-@@ -3266,7 +3270,7 @@ static int __devinit dev_eth_probe(struc
- ndev->set_multicast_list = dev_set_multicast_list;
- ndev->flags |= IFF_MULTICAST;
-
-- ndev->set_mac_address = dev_set_mac_address;
-+ ndev->set_mac_address = set_mac_address;
-
- #ifdef CONFIG_IXP400_NAPI
- ndev->poll = &dev_rx_poll;
diff --git a/recipes/ixp425-eth/ixp400-eth-1.5/2.6.15.patch b/recipes/ixp425-eth/ixp400-eth-1.5/2.6.15.patch
deleted file mode 100644
index 83115d8efa..0000000000
--- a/recipes/ixp425-eth/ixp400-eth-1.5/2.6.15.patch
+++ /dev/null
@@ -1,18 +0,0 @@
-2.6.15 needs platform_device.h
-
- ixp400_eth.c | 4 ++++
- 1 file changed, 4 insertions(+)
-
---- ixp400-eth/ixp400_eth.c 1970-01-01 00:00:00.000000000 +0000
-+++ ixp400-eth/ixp400_eth.c 1970-01-01 00:00:00.000000000 +0000
-@@ -65,6 +65,10 @@
- #include <linux/sysctl.h>
- #include <linux/unistd.h>
-
-+#ifndef to_platform_device
-+#include <linux/platform_device.h>
-+#endif
-+
- /*
- * Intel IXP400 Software specific header files
- */
diff --git a/recipes/ixp425-eth/ixp400-eth-1.5/Makefile.patch b/recipes/ixp425-eth/ixp400-eth-1.5/Makefile.patch
deleted file mode 100644
index 3bc51f0b66..0000000000
--- a/recipes/ixp425-eth/ixp400-eth-1.5/Makefile.patch
+++ /dev/null
@@ -1,36 +0,0 @@
-This is an OpenEmbedded only patch to make the code buildable in
-the OpenEmbedded environment.
-
---- ixp400-eth/Makefile 1970-01-01 00:00:00.000000000 +0000
-+++ ixp400-eth/Makefile 1970-01-01 00:00:00.000000000 +0000
-@@ -0,0 +1,30 @@
-+obj-m := ixp400_eth.o
-+
-+CFLAGS_ixp400_eth.o = -DWall \
-+ -I$(IXP4XX_CSR_DIR) \
-+ -I$(OSAL_DIR)/ \
-+ -I$(OSAL_DIR)/os/linux/include/ \
-+ -I$(OSAL_DIR)/os/linux/include/modules/ \
-+ -I$(OSAL_DIR)/os/linux/include/modules/ioMem/ \
-+ -I$(OSAL_DIR)/os/linux/include/modules/core/ \
-+ -I$(OSAL_DIR)/os/linux/include/modules/bufferMgt/ \
-+ -I$(OSAL_DIR)/os/linux/include/core/ \
-+ -I$(OSAL_DIR)/os/linux/include/platforms/ \
-+ -I$(OSAL_DIR)/os/linux/include/platforms/ixp400/ \
-+ -I$(OSAL_DIR)/os/linux/include/core/ \
-+ -I$(OSAL_DIR)/include/ \
-+ -I$(OSAL_DIR)/include/modules/ \
-+ -I$(OSAL_DIR)/include/modules/bufferMgt/ \
-+ -I$(OSAL_DIR)/include/modules/ioMem/ \
-+ -I$(OSAL_DIR)/include/modules/core/ \
-+ -I$(OSAL_DIR)/include/platforms/ \
-+ -I$(OSAL_DIR)/include/platforms/ixp400/ \
-+ -I$(OSAL_DIR)/include/platforms/ixp400/xp425/ \
-+ -I$(OSAL_DIR)/os/linux/include/platforms/ixp400/ixp425/ \
-+ $(IX_CFLAGS)
-+
-+default:
-+ $(MAKE) ARCH=arm CROSS_COMPILE=$(LINUX_CROSS_COMPILE) $(KERNEL_VERBOSE) symverfile=$(IXP4XX_CSR_SYMVERS) -C $(LINUX_SRC) SUBDIRS=$(PWD) modules
-+
-+clean:
-+ rm -f ixp400_eth.ko
diff --git a/recipes/ixp425-eth/ixp400-eth-1.5/continue-if-qmgr-init-fails.patch b/recipes/ixp425-eth/ixp400-eth-1.5/continue-if-qmgr-init-fails.patch
deleted file mode 100644
index 8508790fa5..0000000000
--- a/recipes/ixp425-eth/ixp400-eth-1.5/continue-if-qmgr-init-fails.patch
+++ /dev/null
@@ -1,22 +0,0 @@
-tries to go on even if queue manager initialization
-fails. this is hand because you'll be allowed to
-insert ixp400_eth immediately after you have removed
-it, without re-inserting ixp400.
-
- ixp400_eth.c | 5 +----
- 1 file changed, 1 insertion(+), 4 deletions(-)
-
---- ixp400-eth/ixp400_eth.c 1970-01-01 00:00:00.000000000 +0000
-+++ ixp400-eth/ixp400_eth.c 1970-01-01 00:00:00.000000000 +0000
-@@ -2850,10 +2850,7 @@ static int qmgr_init(void)
- /* Initialise Queue Manager */
- P_VERBOSE("Initialising Queue Manager...\n");
- if ((res = ixQMgrInit()))
-- {
-- P_ERROR("Error initialising queue manager!\n");
-- return -1;
-- }
-+ P_ERROR("Error initialising queue manager, trying to continue!\n");
-
- TRACE;
-
diff --git a/recipes/ixp425-eth/ixp400-eth-1.5/debug.patch b/recipes/ixp425-eth/ixp400-eth-1.5/debug.patch
deleted file mode 100644
index c684c078d2..0000000000
--- a/recipes/ixp425-eth/ixp400-eth-1.5/debug.patch
+++ /dev/null
@@ -1,131 +0,0 @@
-This patch is not necessary but helps when debugging the build
-
---- ixp400-eth/ixp400_eth.c 1970-01-01 00:00:00.000000000 +0000
-+++ ixp400-eth/ixp400_eth.c 1970-01-01 00:00:00.000000000 +0000
-@@ -1350,9 +1350,10 @@ static int dev_media_check_thread (void*
-
- if (res != IX_ETH_ACC_SUCCESS)
- {
-- P_WARN("ixEthMiiLinkStatus failed on PHY%d.\n"
-+ P_WARN("%s: ixEthMiiLinkStatus failed on PHY%d.\n"
- "\tCan't determine\nthe auto negotiated parameters. "
- "Using default values.\n",
-+ dev->name,
- phyNum);
- /* something is bad, gracefully stops the loop */
- priv->maintenanceCheckStopped = TRUE;
-@@ -2213,7 +2214,8 @@ static int port_enable(struct net_device
- IX_IEEE803_MAC_ADDRESS_SIZE);
- if ((res = ixEthAccPortUnicastMacAddressSet(priv->port_id, &npeMacAddr)))
- {
-- P_VERBOSE("Failed to set MAC address %2.2x:%2.2x:%2.2x:%2.2x:%2.2x:%2.2x for port %d\n",
-+ P_VERBOSE("%s: Failed to set MAC address %2.2x:%2.2x:%2.2x:%2.2x:%2.2x:%2.2x for port %d\n",
-+ dev->name,
- (unsigned)npeMacAddr.macAddress[0],
- (unsigned)npeMacAddr.macAddress[1],
- (unsigned)npeMacAddr.macAddress[2],
-@@ -2707,8 +2709,8 @@ static int do_dev_ioctl(struct net_devic
- down (miiAccessMutex); /* lock the MII register access mutex */
- if ((res = ixEthAccMiiReadRtn (data->phy_id, data->reg_num, &data->val_out)))
- {
-- P_ERROR("Error reading MII reg %d on phy %d\n",
-- data->reg_num, data->phy_id);
-+ P_ERROR("%s: Error reading MII reg %d on phy %d\n",
-+ dev->name, data->reg_num, data->phy_id);
- res = -1;
- }
- up (miiAccessMutex); /* release the MII register access mutex */
-@@ -2720,8 +2722,8 @@ static int do_dev_ioctl(struct net_devic
- down (miiAccessMutex); /* lock the MII register access mutex */
- if ((res = ixEthAccMiiWriteRtn (data->phy_id, data->reg_num, data->val_in)))
- {
-- P_ERROR("Error writing MII reg %d on phy %d\n",
-- data->reg_num, data->phy_id);
-+ P_ERROR("%s: Error writing MII reg %d on phy %d\n",
-+ dev->name, data->reg_num, data->phy_id);
- res = -1;
- }
- up (miiAccessMutex); /* release the MII register access mutex */
-@@ -3049,7 +3051,8 @@ static int set_mac_address(struct net_de
- /* Set MAC addr in h/w (ethAcc checks for MAC address to be valid) */
- if ((res = ixEthAccPortUnicastMacAddressSet(priv->port_id, &npeMacAddr)))
- {
-- P_VERBOSE("Failed to set MAC address %2.2x:%2.2x:%2.2x:%2.2x:%2.2x:%2.2x for port %d\n",
-+ P_VERBOSE("%s: Failed to set MAC address %2.2x:%2.2x:%2.2x:%2.2x:%2.2x:%2.2x for port %d\n",
-+ dev->name,
- (unsigned)npeMacAddr.macAddress[0],
- (unsigned)npeMacAddr.macAddress[1],
- (unsigned)npeMacAddr.macAddress[2],
-@@ -3267,6 +3270,8 @@ static int __devinit dev_eth_probe(struc
- kmalloc(sizeof(struct semaphore), GFP_KERNEL);
- if (!priv->maintenanceCheckThreadComplete)
- {
-+ P_ERROR("%s: Failed to allocate maintenance semaphore %d\n",
-+ ndev->name, priv->port_id);
- goto error;
- }
- priv->lock = SPIN_LOCK_UNLOCKED;
-@@ -3360,7 +3365,11 @@ static int __devinit dev_eth_probe(struc
-
- #if IS_KERNEL26
- if (register_netdev(ndev))
-+ {
-+ P_ERROR("%s: Failed to register netdevice %d\n",
-+ ndev->name, priv->port_id);
- goto error;
-+ }
- #else
- found_devices++;
- #endif /* IS_KERNEL26 */
-@@ -3370,6 +3379,8 @@ static int __devinit dev_eth_probe(struc
- /* register EthAcc callbacks for this port */
- if (dev_rxtxcallback_register(portId, (UINT32)ndev))
- {
-+ P_ERROR("%s: Failed to register callback %d\n",
-+ ndev->name, priv->port_id);
- goto error;
- }
-
-@@ -3393,6 +3404,7 @@ static int __devinit dev_eth_probe(struc
-
- /* Error handling: enter here whenever error detected */
- error:
-+ P_ERROR("%s: dev_eth_probe fails\n", ndev->name);
- TRACE;
-
- #ifdef CONFIG_IXP400_ETH_QDISC_ENABLED
-@@ -3465,21 +3477,21 @@ static int __devexit dev_eth_remove(int
- {
- if (IX_SUCCESS != ixNpeDlNpeStopAndReset(IX_NPEDL_NPEID_NPEA))
- {
-- P_NOTICE("Error Halting NPE for Ethernet port %d!\n", portId);
-+ P_NOTICE("%s: Error Halting NPE for Ethernet port %d!\n", ndev->name, portId);
- }
- }
- if (default_npeImageId[portId] == IX_ETH_NPE_B_IMAGE_ID)
- {
- if (IX_SUCCESS != ixNpeDlNpeStopAndReset(IX_NPEDL_NPEID_NPEB))
- {
-- P_NOTICE("Error Halting NPE for Ethernet port %d!\n", portId);
-+ P_NOTICE("%s: Error Halting NPE for Ethernet port %d!\n", ndev->name, portId);
- }
- }
- if (default_npeImageId[portId] == IX_ETH_NPE_C_IMAGE_ID)
- {
- if (IX_SUCCESS != ixNpeDlNpeStopAndReset(IX_NPEDL_NPEID_NPEC))
- {
-- P_NOTICE("Error Halting NPE for Ethernet port %d!\n", portId);
-+ P_NOTICE("%s: Error Halting NPE for Ethernet port %d!\n", ndev->name, portId);
- }
- }
-
-@@ -3528,6 +3540,9 @@ static int __init ixp400_eth_init(void)
- TRACE;
-
- P_INFO("Initializing IXP400 NPE Ethernet driver software v. " MOD_VERSION " \n");
-+#ifdef IX_OSAL_ENSURE_ON
-+ ixOsalLogLevelSet(IX_OSAL_LOG_LVL_ALL);
-+#endif
-
- TRACE;
-
diff --git a/recipes/ixp425-eth/ixp400-eth-1.5/device-name.patch b/recipes/ixp425-eth/ixp400-eth-1.5/device-name.patch
deleted file mode 100644
index d8bbc97b8c..0000000000
--- a/recipes/ixp425-eth/ixp400-eth-1.5/device-name.patch
+++ /dev/null
@@ -1,47 +0,0 @@
- register the ethernet devices as ethX
-
- ixp400_eth.c | 41 +++++++++++++++++++----------------------
- 1 file changed, 19 insertions(+), 22 deletions(-)
-
---- ixp400-eth/ixp400_eth.c 1970-01-01 00:00:00.000000000 +0000
-+++ ixp400-eth/ixp400_eth.c 1970-01-01 00:00:00.000000000 +0000
-@@ -160,9 +160,6 @@ MODULE_PARM_DESC(phy_reset, "If non-zero
- MODULE_PARM(dev_max_count, "i");
- MODULE_PARM_DESC(dev_max_count, "Number of devices to initialize");
-
--/* devices will be called ixp0 and ixp1 */
--#define DEVICE_NAME "ixp"
--
- /* boolean values for PHY link speed, duplex, and autonegotiation */
- #define PHY_SPEED_10 0
- #define PHY_SPEED_100 1
-@@ -1570,7 +1568,7 @@ static int dev_pmu_timer_setup(void)
- if (request_irq(IX_OSAL_IXP400_XSCALE_PMU_IRQ_LVL,
- dev_pmu_timer_os_isr,
- SA_SHIRQ,
-- DEVICE_NAME,
-+ MODULE_NAME,
- (void *)IRQ_ANY_PARAMETER))
- {
- P_ERROR("Failed to reassign irq to PMU timer interrupt!\n");
-@@ -3009,8 +3008,8 @@ static int phy_init(void)
- if (port_id == IX_ETH_PORT_2) npe_id = "C";
- if (port_id == IX_ETH_PORT_3) npe_id = "A";
-
-- P_INFO("%s%d is using NPE%s and the PHY at address %d\n",
-- DEVICE_NAME, dev_count, npe_id, phyAddresses[port_id]);
-+ P_INFO("ethernet %d using NPE%s and the PHY at address %d\n",
-+ dev_count, npe_id, phyAddresses[port_id]);
-
- /* Set the MAC to the same duplex mode as the phy */
- ixEthAccPortDuplexModeSet(port_id,
-@@ -3215,9 +3215,6 @@ static int __devinit dev_eth_probe(struc
- /* set the private port ID */
- priv->port_id = portId;
-
-- /* set device name */
-- sprintf(ndev->name, DEVICE_NAME"%d", priv->port_id);
--
- TRACE;
-
- /* initialize RX pool */
diff --git a/recipes/ixp425-eth/ixp400-eth-1.5/int-random.patch b/recipes/ixp425-eth/ixp400-eth-1.5/int-random.patch
deleted file mode 100644
index fede9daf90..0000000000
--- a/recipes/ixp425-eth/ixp400-eth-1.5/int-random.patch
+++ /dev/null
@@ -1,16 +0,0 @@
-use the ethernet device interrupts to gather entropy
-
- ixp400_eth.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
---- ixp400-eth/ixp400_eth.c 1970-01-01 00:00:00.000000000 +0000
-+++ ixp400-eth/ixp400_eth.c 1970-01-01 00:00:00.000000000 +0000
-@@ -2864,7 +2864,7 @@ static int qmgr_init(void)
-
- if (request_irq(IX_OSAL_IXP400_QM1_IRQ_LVL,
- dev_qmgr_os_isr,
-- SA_SHIRQ,
-+ SA_SHIRQ | SA_SAMPLE_RANDOM,
- MODULE_NAME,
- (void *)IRQ_ANY_PARAMETER))
- {
diff --git a/recipes/ixp425-eth/ixp400-eth-1.5/le.patch b/recipes/ixp425-eth/ixp400-eth-1.5/le.patch
deleted file mode 100644
index 3d569015e6..0000000000
--- a/recipes/ixp425-eth/ixp400-eth-1.5/le.patch
+++ /dev/null
@@ -1,41 +0,0 @@
-little endian support
-
- ixp400_eth.c | 20 ++++++++++++++++++++
- 1 file changed, 20 insertions(+)
-
---- ixp400-eth/ixp400_eth.c 1970-01-01 00:00:00.000000000 +0000
-+++ ixp400-eth/ixp400_eth.c 1970-01-01 00:00:00.000000000 +0000
-@@ -2040,6 +2040,16 @@ static void rx_cb(UINT32 callbackTag, IX
- skb->tail = skb->data + len;
- skb->len = len;
-
-+#ifndef __ARMEB__
-+ {
-+ /* Byte swap all words containing data from the buffer. */
-+ unsigned long *p = (unsigned long*)((unsigned)skb->data & ~0x3);
-+ unsigned long *e = (unsigned long*)(((unsigned)skb->data + skb->len + 3) & ~0x3);
-+ while (p < e)
-+ *p = ntohl(*p), ++p;
-+ }
-+#endif
-+
- #ifdef DEBUG_DUMP
- skb_dump("rx", skb);
- #endif
-@@ -2431,6 +2441,16 @@ static int dev_hard_start_xmit(struct sk
- return 0;
- }
-
-+#ifndef __ARMEB__
-+ {
-+ /* Byte swap all words containing data from the buffer. */
-+ unsigned long *p = (unsigned long*)((unsigned)skb->data & ~0x3);
-+ unsigned long *e = (unsigned long*)(((unsigned)skb->data + skb->len + 3) & ~0x3);
-+ while (p < e)
-+ *p = ntohl(*p), ++p;
-+ }
-+#endif
-+
- #ifdef DEBUG_DUMP
- skb_dump("tx", skb);
- #endif
diff --git a/recipes/ixp425-eth/ixp400-eth-1.5/mac-address.patch b/recipes/ixp425-eth/ixp400-eth-1.5/mac-address.patch
deleted file mode 100644
index e23eaf5f2b..0000000000
--- a/recipes/ixp425-eth/ixp400-eth-1.5/mac-address.patch
+++ /dev/null
@@ -1,123 +0,0 @@
-Patch to use maclist - get the MAC to use from the board level
-MAC repository based on the device portId.
-
-Signed-off-by: John Bowler <jbowler@acm.org>
-
---- ixp400-eth/ixp400_eth.c 1970-01-01 00:00:00.000000000 +0000
-+++ ixp400-eth/ixp400_eth.c 1970-01-01 00:00:00.000000000 +0000
-@@ -23,10 +23,10 @@
- * This driver is written and optimized for Intel Xscale technology.
- *
- * SETUP NOTES:
-- * By default, this driver uses predefined MAC addresses.
-- * These are set in global var 'default_mac_addr' in this file.
-- * If required, these can be changed at run-time using
-- * the 'ifconfig' tool.
-+ * By default, this driver uses MAC addresses from maclist, if
-+ * these are not available the kernel api to randomly generate
-+ * a locally assigned MAC address is used. The MAC can be
-+ * overridden with ifconfig if absolutely necessary.
- *
- * Example - to set ixp0 MAC address to 00:02:B3:66:88:AA,
- * run ifconfig with the following arguments:
-@@ -64,6 +64,7 @@
- #include <linux/sysctl.h>
- #include <linux/unistd.h>
- #include <linux/version.h>
-+#include <net/maclist.h>
-
- #if KERNEL_VERSION(2,6,0) <= LINUX_VERSION_CODE
- #include <linux/workqueue.h>
-@@ -130,6 +131,8 @@ static int dev_max_count = 1; /* only NP
- static int dev_max_count = 2; /* only NPEB and NPEC */
- #elif defined (CONFIG_ARCH_IXDP465) || defined(CONFIG_MACH_IXDP465)
- static int dev_max_count = 3; /* all NPEs are used */
-+#else
-+static int dev_max_count = -1;/* use maclist_count */
- #endif
-
- #ifndef CONFIG_IXP400_NAPI
-@@ -614,21 +617,6 @@ static phy_cfg_t default_phy_cfg[] =
- #endif
- };
-
--/* Default MAC addresses for EthAcc Ports 1 and 2 (using Intel MAC prefix)
-- * Default is
-- * IX_ETH_PORT_1 -> MAC 00:02:b3:01:01:01
-- * IX_ETH_PORT_2 -> MAC 00:02:b3:02:02:02
-- * IX_ETH_PORT_3 -> MAC 00:02:b3:03:03:03
--*/
--static IxEthAccMacAddr default_mac_addr[] =
--{
-- {{0x00, 0x02, 0xB3, 0x01, 0x01, 0x01}} /* EthAcc Port 0 */
-- ,{{0x00, 0x02, 0xB3, 0x02, 0x02, 0x02}} /* EthAcc Port 1 */
--#if defined (CONFIG_ARCH_IXDP465) || defined(CONFIG_MACH_IXDP465)
-- ,{{0x00, 0x02, 0xB3, 0x03, 0x03, 0x03}} /* EthAcc Port 2 */
--#endif
--};
--
- /* Default mapping of NpeImageIds for EthAcc Ports
- * Default is
- * IX_ETH_PORT_1 -> IX_ETH_NPE_B
-@@ -3325,28 +3313,10 @@ static int __devinit dev_eth_probe(struc
-
- /* Defines the unicast MAC address
- *
-- * Here is a good place to read a board-specific MAC address
-- * from a non-volatile memory, e.g. an external eeprom.
-- *
-- * This memcpy uses a default MAC address from this
-- * source code.
-- *
-- * This can be overriden later by the (optional) command
-- *
-- * ifconfig ixp0 ether 0002b3010101
-- *
-+ * The code reads from the maclist API.
- */
--
-- memcpy(ndev->dev_addr,
-- &default_mac_addr[priv->port_id].macAddress,
-- IX_IEEE803_MAC_ADDRESS_SIZE);
--
-- /* possibly remove this test and the message when a valid MAC address
-- * is not hardcoded in the driver source code.
-- */
-- if (is_valid_ether_addr(ndev->dev_addr))
-- {
-- P_WARN("Use default MAC address %2.2x:%2.2x:%2.2x:%2.2x:%2.2x:%2.2x for port %d\n",
-+ maclist_read((u8(*)[6])&ndev->dev_addr, priv->port_id);
-+ P_INFO("Use MAC address %2.2x:%2.2x:%2.2x:%2.2x:%2.2x:%2.2x for port %d\n",
- (unsigned)ndev->dev_addr[0],
- (unsigned)ndev->dev_addr[1],
- (unsigned)ndev->dev_addr[2],
-@@ -3354,7 +3324,6 @@ static int __devinit dev_eth_probe(struc
- (unsigned)ndev->dev_addr[4],
- (unsigned)ndev->dev_addr[5],
- priv->port_id);
-- }
-
- /* Set/update the internal packet size
- * This can be overriden later by the command
-@@ -3562,12 +3531,15 @@ static int __init ixp400_eth_init(void)
-
- TRACE;
-
-- /* check module parameter range */
-- if (dev_max_count == 0 || dev_max_count > IX_ETH_ACC_NUMBER_OF_PORTS)
-- {
-- P_ERROR("Number of ports supported is dev_max_count <= %d\n", IX_ETH_ACC_NUMBER_OF_PORTS);
-- return -1;
-- }
-+ /* fix dev_max_count to maclist_count - the actual number of
-+ * available MACs
-+ */
-+ if (dev_max_count <= 0 || (dev_max_count > maclist_count() && maclist_count() > 0))
-+ dev_max_count = maclist_count();
-+ if (dev_max_count <= 0)
-+ dev_max_count = 1;
-+ else if (dev_max_count > IX_ETH_ACC_NUMBER_OF_PORTS)
-+ dev_max_count = IX_ETH_ACC_NUMBER_OF_PORTS;
-
- TRACE;
-
diff --git a/recipes/ixp425-eth/ixp400-eth-1.5/modprobe.conf b/recipes/ixp425-eth/ixp400-eth-1.5/modprobe.conf
deleted file mode 100644
index f08b9a404c..0000000000
--- a/recipes/ixp425-eth/ixp400-eth-1.5/modprobe.conf
+++ /dev/null
@@ -1,4 +0,0 @@
-# Add an alias for eth0 to ixp400_eth to cause the S40networking
-# init script to load the ixp400_eth driver on the first boot
-alias eth0 ixp400_eth
-options ixp400_eth dev_max_count=1 \ No newline at end of file
diff --git a/recipes/ixp425-eth/ixp400-eth-1.5/module-param.patch b/recipes/ixp425-eth/ixp400-eth-1.5/module-param.patch
deleted file mode 100644
index c54c45d716..0000000000
--- a/recipes/ixp425-eth/ixp400-eth-1.5/module-param.patch
+++ /dev/null
@@ -1,62 +0,0 @@
- ixp400_eth.c | 32 ++++++++++++++++++++++++++++++++
- 1 files changed, 32 insertions(+)
-
-Index: ixp400_eth/ixp400_eth.c
-===================================================================
---- ixp400_eth.orig/ixp400_eth.c
-+++ ixp400_eth/ixp400_eth.c
-@@ -142,22 +142,54 @@
-
- static int datapath_poll = 1; /* default : rx/tx polling, not interrupt driven*/
-
-+#if LINUX_VERSION_CODE <= KERNEL_VERSION(2,6,16)
- MODULE_PARM(ixp400_netdev_max_backlog, "i");
-+#else
-+module_param(ixp400_netdev_max_backlog, int, 0644);
-+#endif
- MODULE_PARM_DESC(ixp400_netdev_max_backlog, "Should be set to the value of /proc/sys/net/core/netdev_max_backlog (perf affecting)");
-+#if LINUX_VERSION_CODE <= KERNEL_VERSION(2,6,16)
- MODULE_PARM(datapath_poll, "i");
-+#else
-+module_param(datapath_poll, int, 0644);
-+#endif
- MODULE_PARM_DESC(datapath_poll, "If non-zero, use polling method for datapath instead of interrupts");
- #endif /* CONFIG_IXP400_NAPI */
-+#if LINUX_VERSION_CODE <= KERNEL_VERSION(2,6,16)
- MODULE_PARM(npe_learning, "i");
-+#else
-+module_param(npe_learning, int, 0644);
-+#endif
- MODULE_PARM_DESC(npe_learning, "If non-zero, NPE MAC Address Learning & Filtering feature will be enabled");
-+#if LINUX_VERSION_CODE <= KERNEL_VERSION(2,6,16)
- MODULE_PARM(log_level, "i");
-+#else
-+module_param(log_level, int, 0644);
-+#endif
- MODULE_PARM_DESC(log_level, "Set log level: 0 - None, 1 - Verbose, 2 - Debug");
-+#if LINUX_VERSION_CODE <= KERNEL_VERSION(2,6,16)
- MODULE_PARM(no_ixp400_sw_init, "i");
-+#else
-+module_param(no_ixp400_sw_init, int, 0644);
-+#endif
- MODULE_PARM_DESC(no_ixp400_sw_init, "If non-zero, do not initialise Intel IXP400 Software Release core components");
-+#if LINUX_VERSION_CODE <= KERNEL_VERSION(2,6,16)
- MODULE_PARM(no_phy_scan, "i");
-+#else
-+module_param(no_phy_scan, int, 0644);
-+#endif
- MODULE_PARM_DESC(no_phy_scan, "If non-zero, use hard-coded phy addresses");
-+#if LINUX_VERSION_CODE <= KERNEL_VERSION(2,6,16)
- MODULE_PARM(phy_reset, "i");
-+#else
-+module_param(phy_reset, int, 0644);
-+#endif
- MODULE_PARM_DESC(phy_reset, "If non-zero, reset the phys");
-+#if LINUX_VERSION_CODE <= KERNEL_VERSION(2,6,16)
- MODULE_PARM(dev_max_count, "i");
-+#else
-+module_param(dev_max_count, int, 0644);
-+#endif
- MODULE_PARM_DESC(dev_max_count, "Number of devices to initialize");
-
- /* boolean values for PHY link speed, duplex, and autonegotiation */
diff --git a/recipes/ixp425-eth/ixp400-eth-1.5/netdev_max_backlog.patch b/recipes/ixp425-eth/ixp400-eth-1.5/netdev_max_backlog.patch
deleted file mode 100644
index 6891b6b4a9..0000000000
--- a/recipes/ixp425-eth/ixp400-eth-1.5/netdev_max_backlog.patch
+++ /dev/null
@@ -1,54 +0,0 @@
---- ixp400_eth/ixp400_eth.c~ 2006-01-09 01:03:11.000000000 +1030
-+++ ixp400_eth/ixp400_eth.c 2006-01-09 01:05:27.000000000 +1030
-@@ -139,12 +139,12 @@
- * skbuf to push into the linux stack, and avoid the performance degradations
- * during overflow.
- */
--static int netdev_max_backlog = 290;
-+static int ixp400_netdev_max_backlog = 290;
-
- static int datapath_poll = 1; /* default : rx/tx polling, not interrupt driven*/
-
--MODULE_PARM(netdev_max_backlog, "i");
--MODULE_PARM_DESC(netdev_max_backlog, "Should be set to the value of /proc/sys/net/core/netdev_max_backlog (perf affecting)");
-+MODULE_PARM(ixp400_netdev_max_backlog, "i");
-+MODULE_PARM_DESC(ixp400_netdev_max_backlog, "Should be set to the value of /proc/sys/net/core/netdev_max_backlog (perf affecting)");
- MODULE_PARM(datapath_poll, "i");
- MODULE_PARM_DESC(datapath_poll, "If non-zero, use polling method for datapath instead of interrupts");
- #endif /* CONFIG_IXP400_NAPI */
-@@ -213,7 +213,7 @@
- * high traffic rates. To measure the maximum throughput between the
- * ports of the driver,
- * - Modify /proc/sys/net/core/netdev_max_backlog value in the kernel
-- * - Adjust netdev_max_backlog=n in the driver's command line
-+ * - Adjust ixp400_netdev_max_backlog=n in the driver's command line
- * in order to get the best rates depending on the testing tool
- * and the OS load.
- *
-@@ -1997,7 +1997,7 @@
- /* check if the system accepts more traffic and
- * against chained mbufs
- */
-- if ((qlevel < netdev_max_backlog)
-+ if ((qlevel < ixp400_netdev_max_backlog)
- && (IX_OSAL_MBUF_NEXT_PKT_IN_CHAIN_PTR(mbuf) == NULL))
- #else
- /* check against chained mbufs
-@@ -3776,13 +3776,13 @@
- #ifndef CONFIG_IXP400_NAPI
- /* set the softirq rx queue thresholds
- * (These numbers are based on tuning experiments)
-- * maxbacklog = (netdev_max_backlog * 10) / 63;
-+ * maxbacklog = (ixp400_netdev_max_backlog * 10) / 63;
- */
-- if (netdev_max_backlog == 0)
-+ if (ixp400_netdev_max_backlog == 0)
- {
-- netdev_max_backlog = 290; /* system default */
-+ ixp400_netdev_max_backlog = 290; /* system default */
- }
-- netdev_max_backlog /= BACKLOG_TUNE;
-+ ixp400_netdev_max_backlog /= BACKLOG_TUNE;
-
- TRACE;
- #endif
diff --git a/recipes/ixp425-eth/ixp400-eth-1.5/params.patch b/recipes/ixp425-eth/ixp400-eth-1.5/params.patch
deleted file mode 100644
index 86011deaaa..0000000000
--- a/recipes/ixp425-eth/ixp400-eth-1.5/params.patch
+++ /dev/null
@@ -1,75 +0,0 @@
-*** ixp/ixp400_eth.c.orig Wed Jun 7 21:31:59 2006
---- ixp/ixp400_eth.c Fri Jun 9 14:55:18 2006
-***************
-*** 112,135 ****
- #define MOD_VERSION "1.5"
-
- /* Module parameters */
-! static int npe_learning = 1; /* default : NPE learning & filtering enable */
-! static int log_level = 0; /* default : no log */
-! static int no_ixp400_sw_init = 0; /* default : init core components of the IXP400 Software */
-! static int no_phy_scan = 0; /* default : do phy discovery */
-! static int phy_reset = 0; /* default : mo phy reset */
-
- /* maximum number of ports supported by this driver ixp0, ixp1 ....
- * The default is to configure all ports defined in EthAcc component
- */
- #ifdef CONFIG_IXP400_ETH_NPEC_ONLY
-! static int dev_max_count = 1; /* only NPEC is used */
-! #elif defined (CONFIG_IXP400_ETH_NPEB_ONLY)
-! static int dev_max_count = 1; /* only NPEB is used */
- #elif defined (CONFIG_ARCH_IXDP425) || defined(CONFIG_ARCH_IXDPG425)\
- || defined (CONFIG_ARCH_ADI_COYOTE)
-! static int dev_max_count = 2; /* only NPEB and NPEC */
- #elif defined (CONFIG_ARCH_IXDP465) || defined(CONFIG_MACH_IXDP465)
-! static int dev_max_count = 3; /* all NPEs are used */
- #endif
-
- #ifndef CONFIG_IXP400_NAPI
---- 112,136 ----
- #define MOD_VERSION "1.5"
-
- /* Module parameters */
-! /* gcc 4.1.1+kernel2.6.16 do not like it if these are static! */
-! int npe_learning = 1; /* default : NPE learning & filtering enable */
-! int log_level = 0; /* default : no log */
-! int no_ixp400_sw_init = 0; /* default : init core components of the IXP400 Software */
-! int no_phy_scan = 0; /* default : do phy discovery */
-! int phy_reset = 0; /* default : mo phy reset */
-
- /* maximum number of ports supported by this driver ixp0, ixp1 ....
- * The default is to configure all ports defined in EthAcc component
- */
- #ifdef CONFIG_IXP400_ETH_NPEC_ONLY
-! int dev_max_count = 1; /* only NPEC is used */
-! #elif defined (CONFIG_IXP400_ETH_NPEB_ONLY)
-! int dev_max_count = 1; /* only NPEB is used */
- #elif defined (CONFIG_ARCH_IXDP425) || defined(CONFIG_ARCH_IXDPG425)\
- || defined (CONFIG_ARCH_ADI_COYOTE)
-! int dev_max_count = 2; /* only NPEB and NPEC */
- #elif defined (CONFIG_ARCH_IXDP465) || defined(CONFIG_MACH_IXDP465)
-! int dev_max_count = 3; /* all NPEs are used */
- #endif
-
- #ifndef CONFIG_IXP400_NAPI
-***************
-*** 138,146 ****
- * skbuf to push into the linux stack, and avoid the performance degradations
- * during overflow.
- */
-! static int ixp400_netdev_max_backlog = 290;
-
-! static int datapath_poll = 1; /* default : rx/tx polling, not interrupt driven*/
-
- MODULE_PARM(ixp400_netdev_max_backlog, "i");
- MODULE_PARM_DESC(ixp400_netdev_max_backlog, "Should be set to the value of /proc/sys/net/core/netdev_max_backlog (perf affecting)");
---- 139,147 ----
- * skbuf to push into the linux stack, and avoid the performance degradations
- * during overflow.
- */
-! int ixp400_netdev_max_backlog = 290;
-
-! int datapath_poll = 1; /* default : rx/tx polling, not interrupt driven*/
-
- MODULE_PARM(ixp400_netdev_max_backlog, "i");
- MODULE_PARM_DESC(ixp400_netdev_max_backlog, "Should be set to the value of /proc/sys/net/core/netdev_max_backlog (perf affecting)");
diff --git a/recipes/ixp425-eth/ixp400-eth-1.5/poll-controller.patch b/recipes/ixp425-eth/ixp400-eth-1.5/poll-controller.patch
deleted file mode 100644
index 64fb310ee5..0000000000
--- a/recipes/ixp425-eth/ixp400-eth-1.5/poll-controller.patch
+++ /dev/null
@@ -1,50 +0,0 @@
-poll controller support
-
- ixp400_eth.c | 22 ++++++++++++++++++++++
- 1 file changed, 22 insertions(+)
-
---- ixp400-eth/ixp400_eth.c 1970-01-01 00:00:00.000000000 +0000
-+++ ixp400-eth/ixp400_eth.c 1970-01-01 00:00:00.000000000 +0000
-@@ -348,6 +348,12 @@ static int dev_pmu_timer_init(void);
- extern void
- ixEthTxFrameDoneQMCallback(IxQMgrQId qId, IxQMgrCallbackId callbackId);
-
-+#ifdef CONFIG_NET_POLL_CONTROLLER
-+/* poll controller (needed for netconsole et al) */
-+static void
-+ixp425eth_poll_controller(struct net_device *dev);
-+#endif
-+
- /* Private device data */
- typedef struct {
- spinlock_t lock; /* multicast management lock */
-@@ -3060,6 +3066,19 @@ static int set_mac_address(struct net_de
- return 0;
- }
-
-+#ifdef CONFIG_NET_POLL_CONTROLLER
-+/*
-+ * Polling receive - used by netconsole and other diagnostic tools
-+ * to allow network i/o with interrupts disabled.
-+ * (stolen from 8139too.c by siddy)
-+ */
-+static void ixp425eth_poll_controller(struct net_device *dev)
-+{
-+ disable_irq(dev->irq);
-+ dev_qmgr_os_isr(dev->irq, dev, NULL);
-+ enable_irq(dev->irq);
-+}
-+#endif
-
- /*
- * TX QDISC
-@@ -3270,6 +3289,9 @@ static int __devinit dev_eth_probe(struc
- ndev->get_stats = dev_get_stats;
- ndev->set_multicast_list = dev_set_multicast_list;
- ndev->flags |= IFF_MULTICAST;
-+#ifdef CONFIG_NET_POLL_CONTROLLER
-+ ndev->poll_controller = ixp425eth_poll_controller;
-+#endif
-
- ndev->set_mac_address = set_mac_address;
-
diff --git a/recipes/ixp425-eth/ixp400-eth-1.5/stop-on-rmmod.patch b/recipes/ixp425-eth/ixp400-eth-1.5/stop-on-rmmod.patch
deleted file mode 100644
index 2ddc98938a..0000000000
--- a/recipes/ixp425-eth/ixp400-eth-1.5/stop-on-rmmod.patch
+++ /dev/null
@@ -1,29 +0,0 @@
-devices must be explicitely stopped when
-the driver is going do be removed, otherwise
-it will simply hang.
-
- ixp400_eth.c | 13 ++++++++++---
- 1 file changed, 10 insertions(+), 3 deletions(-)
-
---- ixp400-eth/ixp400_eth.c 1970-01-01 00:00:00.000000000 +0000
-+++ ixp400-eth/ixp400_eth.c 1970-01-01 00:00:00.000000000 +0000
-@@ -3800,9 +3800,16 @@ void __exit ixp400_eth_exit(void)
-
- TRACE;
-
-- /* We can only get here when the module use count is 0,
-- * so there's no need to stop devices.
-- */
-+ /* stop devices */
-+
-+#if IS_KERNEL26
-+ for (dev_count = 0;
-+ dev_count < dev_max_count; /* module parameter */
-+ dev_count++)
-+ {
-+ do_dev_stop(platform_get_drvdata(&ixp400_eth_devices[dev_count]));
-+ }
-+#endif
-
- if (no_ixp400_sw_init == 0) /* module parameter */
- {
diff --git a/recipes/ixp425-eth/ixp400-eth_1.4.bb b/recipes/ixp425-eth/ixp400-eth_1.4.bb
deleted file mode 100644
index 6b1ff0c8d2..0000000000
--- a/recipes/ixp425-eth/ixp400-eth_1.4.bb
+++ /dev/null
@@ -1,54 +0,0 @@
-# This is the Intel GPL IXP4XX ethernet driver (Linux) plus patches
-# to make it work on 2.6 kernels.
-#
-LICENSE = "GPL"
-SRC_URI = "ftp://aiedownload.intel.com/df-support/8500/eng/GPL_ixp400LinuxEthernetDriverPatch-1_4.zip"
-SRC_URI += "file://ixp400-le-be.patch;patch=1"
-SRC_URI += "file://makefile.patch;patch=1"
-SRC_URI += "file://2.6.13.patch;patch=1"
-SRC_URI += "file://2.6.14.patch;patch=1"
-SRC_URI += "file://ixp400_pollcontroller.patch;patch=1"
-SRC_URI += "file://2.6.14-mm.patch;patch=1"
-SRC_URI += "file://modprobe.conf"
-PR = "r9"
-
-DEPENDS = "ixp4xx-csr"
-RDEPENDS = "ixp4xx-csr"
-
-S = "${WORKDIR}"
-
-COMPATIBLE_HOST = "^arm.*-linux.*"
-COMPATIBLE_MACHINE = "(nslu2|ixp4xx)"
-
-PROVIDES = "virtual/ixp-eth"
-RPROVIDES = "ixp-eth"
-
-inherit module
-
-# This is a somewhat arbitrary choice:
-OSAL_DIR = "${STAGING_KERNEL_DIR}/ixp_osal"
-
-IX_TARGET = "linux${SITEINFO_ENDIANESS}"
-
-EXTRA_OEMAKE = "'CC=${KERNEL_CC}' \
- 'LD=${KERNEL_LD}' \
- 'PWD=${S}' \
- 'IX_TARGET=${IX_TARGET}' \
- 'IXP4XX_CSR_DIR=${STAGING_INCDIR}/linux/ixp4xx-csr' \
- 'OSAL_DIR=${OSAL_DIR}' \
- 'IX_CFLAGS=-DIX_UTOPIAMODE=0 -DIX_MPHYSINGLEPORT=1 -DCONFIG_IXP400_ETH_NPEB_ONLY=1' \
- 'LINUX_SRC=${STAGING_KERNEL_DIR}' \
- 'LINUX_CROSS_COMPILE=${HOST_PREFIX}' \
- "
-
-do_compile () {
- unset CFLAGS CPPFLAGS CXXFLAGS LDFLAGS
- oe_runmake
-}
-
-do_install () {
- install -d ${D}${base_libdir}/modules/${KERNEL_VERSION}/kernel/drivers/net
- install -m 0644 ixp400_eth.ko ${D}${base_libdir}/modules/${KERNEL_VERSION}/kernel/drivers/net/
- install -d ${D}${sysconfdir}/modprobe.d
- install -m 0644 modprobe.conf ${D}${sysconfdir}/modprobe.d/eth0
-}
diff --git a/recipes/ixp425-eth/ixp400-eth_1.5.1.bb b/recipes/ixp425-eth/ixp400-eth_1.5.1.bb
deleted file mode 100644
index 2fa04fc672..0000000000
--- a/recipes/ixp425-eth/ixp400-eth_1.5.1.bb
+++ /dev/null
@@ -1,87 +0,0 @@
-DEFAULT_PREFERENCE = "-1"
-# This is the Intel GPL IXP4XX ethernet driver (Linux) plus patches
-# to make it work on 2.6 kernels.
-#
-HOMEPAGE = "http://www.intel.com/design/network/products/npfamily/ixp420.htm"
-LICENSE = "GPL"
-PR = "r0"
-
-DEPENDS = "ixp-osal"
-DEPENDS = "ixp4xx-csr"
-RDEPENDS = "ixp4xx-csr"
-
-SRC_URI = "http://downloadmirror.intel.com/df-support/10159/eng/GPL_ixp400LinuxEthernetDriverPatch-1_5_1.zip"
-SRC_URI += "file://2.6.14.patch;patch=1"
-SRC_URI += "file://2.6.15.patch;patch=1"
-SRC_URI += "file://device-name.patch;patch=1"
-SRC_URI += "file://poll-controller.patch;patch=1"
-SRC_URI += "file://le.patch;patch=1"
-SRC_URI += "file://int-random.patch;patch=1"
-SRC_URI += "file://stop-on-rmmod.patch;patch=1"
-SRC_URI += "file://continue-if-qmgr-init-fails.patch;patch=1"
-SRC_URI += "file://netdev_max_backlog.patch;patch=1"
-SRC_URI += "file://debug.patch;patch=1"
-SRC_URI += "file://Makefile.patch;patch=1"
-SRC_URI += "file://params.patch;patch=1"
-SRC_URI += "file://module-param.patch;patch=1"
-SRC_URI += "file://modprobe.conf"
-
-S = "${WORKDIR}"
-
-COMPATIBLE_HOST = "^arm.*-linux.*"
-COMPATIBLE_MACHINE = "(nslu2|ixp4xx)"
-
-PROVIDES = "virtual/ixp-eth"
-RPROVIDES = "ixp-eth"
-
-inherit module
-
-# This is a somewhat arbitrary choice:
-OSAL_DIR = "${STAGING_KERNEL_DIR}/ixp_osal"
-
-IX_TARGET = "linux${SITEINFO_ENDIANESS}"
-IX_ENSURE = ""
-#IX_ENSURE = "-DIX_OSAL_ENSURE_ON=1"
-# The following controls the name of the ethernet devices which get
-# registered, the default (if this is empty) is ixp0, ixp1, otherwise
-# it is eth0, eth1
-DEVICE_NAME = "-DIX_DEVICE_NAME_ETH=1"
-
-IXP4XX_CSR_SYMVERS = "${STAGING_KERNEL_DIR}/ixp400-csr.symvers"
-
-EXTRA_OEMAKE = "'PWD=${S}' \
- 'IX_TARGET=${IX_TARGET}' \
- 'IXP4XX_CSR_DIR=${STAGING_INCDIR}/linux/ixp4xx-csr' \
- 'IXP4XX_CSR_SYMVERS=${IXP4XX_CSR_SYMVERS}' \
- 'OSAL_DIR=${OSAL_DIR}' \
- 'IX_CFLAGS=-DIX_UTOPIAMODE=0 -DIX_MPHYSINGLEPORT=1 ${IX_ENSURE} ${DEVICE_NAME} -DIX_COMPONENT_NAME=-1' \
- 'LINUX_SRC=${STAGING_KERNEL_DIR}' \
- 'LINUX_CROSS_COMPILE=${HOST_PREFIX}' \
- "
-
-# This is to check for unresolved symbol errors and ensure the build
-# fails, an error here probably means too much as been deconfigured
-# out of ixp4xx-csr.
-KCONFIG_FILE = "${STAGING_KERNEL_DIR}/kernel-config"
-do_compile_append () {
- . '${KCONFIG_FILE}'
- echo "MODPOST: checking that all symbols are resolved"
- if '${STAGING_KERNEL_DIR}/scripts/mod/modpost' \
- ${CONFIG_MODVERSIONS:+-m} \
- ${CONFIG_MODULE_SRCVERSION_ALL:+-a} \
- -i '${STAGING_KERNEL_DIR}/ixp400-csr.symvers' \
- ixp400_eth.o 2>&1 | egrep .
- then
- echo "MODPOST errors - see above"
- return 1
- else
- return 0
- fi
-}
-
-do_install () {
- install -d ${D}${base_libdir}/modules/${KERNEL_VERSION}/kernel/drivers/net
- install -m 0644 ixp400_eth.ko ${D}${base_libdir}/modules/${KERNEL_VERSION}/kernel/drivers/net/
- install -d ${D}${sysconfdir}/modprobe.d
- install -m 0644 modprobe.conf ${D}${sysconfdir}/modprobe.d/eth0
-}
diff --git a/recipes/ixp425-eth/ixp400-eth_1.5.bb b/recipes/ixp425-eth/ixp400-eth_1.5.bb
deleted file mode 100644
index 5e25deb1d4..0000000000
--- a/recipes/ixp425-eth/ixp400-eth_1.5.bb
+++ /dev/null
@@ -1,86 +0,0 @@
-# This is the Intel GPL IXP4XX ethernet driver (Linux) plus patches
-# to make it work on 2.6 kernels.
-#
-HOMEPAGE = "http://www.intel.com/design/network/products/npfamily/ixp420.htm"
-LICENSE = "GPL"
-PR = "r15"
-
-DEPENDS = "ixp-osal"
-DEPENDS = "ixp4xx-csr"
-RDEPENDS = "ixp4xx-csr"
-
-SRC_URI = "ftp://aiedownload.intel.com/df-support/9519/eng/GPL_ixp400LinuxEthernetDriverPatch-1_5.zip"
-SRC_URI += "file://2.6.14.patch;patch=1"
-SRC_URI += "file://2.6.15.patch;patch=1"
-SRC_URI += "file://device-name.patch;patch=1"
-SRC_URI += "file://poll-controller.patch;patch=1"
-SRC_URI += "file://le.patch;patch=1"
-SRC_URI += "file://int-random.patch;patch=1"
-SRC_URI += "file://stop-on-rmmod.patch;patch=1"
-SRC_URI += "file://continue-if-qmgr-init-fails.patch;patch=1"
-SRC_URI += "file://netdev_max_backlog.patch;patch=1"
-SRC_URI += "file://debug.patch;patch=1"
-SRC_URI += "file://Makefile.patch;patch=1"
-SRC_URI += "file://params.patch;patch=1"
-SRC_URI += "file://module-param.patch;patch=1"
-SRC_URI += "file://modprobe.conf"
-
-S = "${WORKDIR}"
-
-COMPATIBLE_HOST = "^arm.*-linux.*"
-COMPATIBLE_MACHINE = "(nslu2|ixp4xx)"
-
-PROVIDES = "virtual/ixp-eth"
-RPROVIDES = "ixp-eth"
-
-inherit module
-
-# This is a somewhat arbitrary choice:
-OSAL_DIR = "${STAGING_KERNEL_DIR}/ixp_osal"
-
-IX_TARGET = "linux${SITEINFO_ENDIANESS}"
-IX_ENSURE = ""
-#IX_ENSURE = "-DIX_OSAL_ENSURE_ON=1"
-# The following controls the name of the ethernet devices which get
-# registered, the default (if this is empty) is ixp0, ixp1, otherwise
-# it is eth0, eth1
-DEVICE_NAME = "-DIX_DEVICE_NAME_ETH=1"
-
-IXP4XX_CSR_SYMVERS = "${STAGING_KERNEL_DIR}/ixp400-csr.symvers"
-
-EXTRA_OEMAKE = "'PWD=${S}' \
- 'IX_TARGET=${IX_TARGET}' \
- 'IXP4XX_CSR_DIR=${STAGING_INCDIR}/linux/ixp4xx-csr' \
- 'IXP4XX_CSR_SYMVERS=${IXP4XX_CSR_SYMVERS}' \
- 'OSAL_DIR=${OSAL_DIR}' \
- 'IX_CFLAGS=-DIX_UTOPIAMODE=0 -DIX_MPHYSINGLEPORT=1 ${IX_ENSURE} ${DEVICE_NAME} -DIX_COMPONENT_NAME=-1' \
- 'LINUX_SRC=${STAGING_KERNEL_DIR}' \
- 'LINUX_CROSS_COMPILE=${HOST_PREFIX}' \
- "
-
-# This is to check for unresolved symbol errors and ensure the build
-# fails, an error here probably means too much as been deconfigured
-# out of ixp4xx-csr.
-KCONFIG_FILE = "${STAGING_KERNEL_DIR}/kernel-config"
-do_compile_append () {
- . '${KCONFIG_FILE}'
- echo "MODPOST: checking that all symbols are resolved"
- if '${STAGING_KERNEL_DIR}/scripts/mod/modpost' \
- ${CONFIG_MODVERSIONS:+-m} \
- ${CONFIG_MODULE_SRCVERSION_ALL:+-a} \
- -i '${STAGING_KERNEL_DIR}/ixp400-csr.symvers' \
- ixp400_eth.o 2>&1 | egrep .
- then
- echo "MODPOST errors - see above"
- return 1
- else
- return 0
- fi
-}
-
-do_install () {
- install -d ${D}${base_libdir}/modules/${KERNEL_VERSION}/kernel/drivers/net
- install -m 0644 ixp400_eth.ko ${D}${base_libdir}/modules/${KERNEL_VERSION}/kernel/drivers/net/
- install -d ${D}${sysconfdir}/modprobe.d
- install -m 0644 modprobe.conf ${D}${sysconfdir}/modprobe.d/eth0
-}
diff --git a/recipes/ixp425-eth/ixp425-eth-1.2/2.6.13.patch b/recipes/ixp425-eth/ixp425-eth-1.2/2.6.13.patch
deleted file mode 100644
index e5825740bb..0000000000
--- a/recipes/ixp425-eth/ixp425-eth-1.2/2.6.13.patch
+++ /dev/null
@@ -1,39 +0,0 @@
---- ./ixp425_eth.c 2005-10-01 00:45:45.180897520 -0700
-+++ ./ixp425_eth.c 2005-10-01 00:50:45.179775259 -0700
-@@ -797,7 +797,9 @@
- skb->pkt_type = PACKET_HOST; /* Default type */
- skb->ip_summed = 0;
- skb->priority = 0;
-+#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,13)
- skb->security = 0;
-+#endif
- #ifdef CONFIG_NET_SCHED
- skb->tc_index = 0;
- #endif
-@@ -2564,8 +2566,14 @@
- }
-
- /* set port MAC addr and update the dev struct if successfull */
-+#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,13)
- int dev_set_mac_address(struct net_device *dev, struct sockaddr *saddr)
- {
-+#else
-+static int set_mac_address(struct net_device *dev, void *saddrIn)
-+{
-+ struct sockaddr *saddr = saddrIn;
-+#endif
- int res;
- priv_data_t *priv = dev->priv;
- IxEthAccMacAddr npeMacAddr;
-@@ -2700,7 +2708,11 @@
- #ifdef CONFIG_NET_POLL_CONTROLLER
- ndev->poll_controller = ixp425eth_poll_controller;
- #endif
-+#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,13)
- ndev->set_mac_address = dev_set_mac_address;
-+#else
-+ ndev->set_mac_address = set_mac_address;
-+#endif
-
- TRACE;
-
diff --git a/recipes/ixp425-eth/ixp425-eth-1.2/2.6.14.patch b/recipes/ixp425-eth/ixp425-eth-1.2/2.6.14.patch
deleted file mode 100644
index 57f441c5bc..0000000000
--- a/recipes/ixp425-eth/ixp425-eth-1.2/2.6.14.patch
+++ /dev/null
@@ -1,24 +0,0 @@
---- ./ixp425_eth.c 2005-10-01 00:50:45.179775259 -0700
-+++ ./ixp425_eth.c 2005-10-01 00:54:10.976725245 -0700
-@@ -777,7 +777,9 @@
- * before re-using it on the Rx-path
- */
- skb->nfmark = 0;
-+#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,14)
- skb->nfcache = 0;
-+#endif
- nf_conntrack_put(skb->nfct);
- skb->nfct = NULL;
- #ifdef CONFIG_NETFILTER_DEBUG
-@@ -1451,7 +1453,11 @@
- skb->len -= header_len;
-
- /* fill the pkt arrival time (set at the irq callback entry) */
-+#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,14)
- skb->stamp = irq_stamp;
-+#else
-+ skb_set_timestamp(skb, &irq_stamp);
-+#endif
-
- /* fill the input device field */
- skb->dev = dev;
diff --git a/recipes/ixp425-eth/ixp425-eth-1.2/ixp400linuxethernetdriver-1_2-kernel26_hr_20050929.patch b/recipes/ixp425-eth/ixp425-eth-1.2/ixp400linuxethernetdriver-1_2-kernel26_hr_20050929.patch
deleted file mode 100644
index e4ef3f96c8..0000000000
--- a/recipes/ixp425-eth/ixp425-eth-1.2/ixp400linuxethernetdriver-1_2-kernel26_hr_20050929.patch
+++ /dev/null
@@ -1,1468 +0,0 @@
-diff -Naur ixp425_eth.orig/Makefile ixp425_eth/Makefile
---- ixp425_eth.orig/Makefile 1970-01-01 01:00:00.000000000 +0100
-+++ ixp425_eth/Makefile 2005-09-28 19:03:50.000000000 +0200
-@@ -0,0 +1,36 @@
-+obj-m := ixp425_eth.o
-+
-+PWD := $(shell pwd)
-+
-+LINUX_SRC := $($(IX_TARGET)_KERNEL_DIR)
-+
-+OSAL_DIR := $(IX_XSCALE_SW)/../ixp_osal
-+CFLAGS_ixp425_eth.o = -DWall \
-+ -I$(IX_XSCALE_SW)/src/include \
-+ -I$(OSAL_DIR)/ \
-+ -I$(OSAL_DIR)/os/linux/include/ \
-+ -I$(OSAL_DIR)/os/linux/include/modules/ \
-+ -I$(OSAL_DIR)/os/linux/include/modules/ioMem/ \
-+ -I$(OSAL_DIR)/os/linux/include/modules/core/ \
-+ -I$(OSAL_DIR)/os/linux/include/modules/bufferMgt/ \
-+ -I$(OSAL_DIR)/os/linux/include/core/ \
-+ -I$(OSAL_DIR)/os/linux/include/platforms/ \
-+ -I$(OSAL_DIR)/os/linux/include/platforms/ixp400/ \
-+ -I$(OSAL_DIR)/os/linux/include/core/ \
-+ -I$(OSAL_DIR)/include/ \
-+ -I$(OSAL_DIR)/include/modules/ \
-+ -I$(OSAL_DIR)/include/modules/bufferMgt/ \
-+ -I$(OSAL_DIR)/include/modules/ioMem/ \
-+ -I$(OSAL_DIR)/include/modules/core/ \
-+ -I$(OSAL_DIR)/include/platforms/ \
-+ -I$(OSAL_DIR)/include/platforms/ixp400/ \
-+
-+# -DDEBUG
-+
-+# -DDEBUG_DUMP
-+
-+default:
-+ $(MAKE) ARCH=arm CROSS_COMPILE=$(LINUX_CROSS_COMPILE) V=1 -C $(LINUX_SRC) SUBDIRS=$(PWD) modules
-+
-+clean:
-+ rm -f ixp425_eth.ko
-diff -Naur ixp425_eth.orig/Readme-Kernel-2_6-Patch.txt ixp425_eth/Readme-Kernel-2_6-Patch.txt
---- ixp425_eth.orig/Readme-Kernel-2_6-Patch.txt 1970-01-01 01:00:00.000000000 +0100
-+++ ixp425_eth/Readme-Kernel-2_6-Patch.txt 2005-09-28 20:26:19.000000000 +0200
-@@ -0,0 +1,33 @@
-+This file describes a patch to use version 1.2 of the ethernet driver
-+for Intel Ixp4XX with Linux 2.6 kernels.
-+
-+Authors/History
-+---------------
-+
-+This patch is based on the nslu2-linux project's patches for version
-+1.1 of the same driver. The changes were adapted to version 1.2 by
-+Hannes Reich & Cian Masterson.
-+
-+Status
-+------
-+
-+This code has been tested on a Linksys NSLU2. It works in big-endian
-+mode, performance seems around 10% faster than 1.4.
-+
-+The code does not work in little-endian mode. It appears as though the
-+hardware is initialised correctly, but packet receive / transmit done
-+callbacks are never called.
-+
-+The driver has not been tested in "polling mode".
-+
-+Licence Information
-+-------------------
-+
-+This patch is licenced under the same terms as the original Ethernet
-+driver (GPL v2).
-+
-+References
-+----------
-+
-+The nslu2-linux project's patch for version 1.1 of the driver is at
-+http://nslu.sourceforge.net/downloads/ixp425_eth.c.patch
-\ No newline at end of file
-diff -Naur ixp425_eth.orig/ixp425_eth.c ixp425_eth/ixp425_eth.c
---- ixp425_eth.orig/ixp425_eth.c 2005-08-26 21:44:19.000000000 +0200
-+++ ixp425_eth/ixp425_eth.c 2005-09-02 00:01:59.000000000 +0200
-@@ -47,21 +47,18 @@
- */
- #include <linux/config.h>
- #include <linux/module.h>
--#include <linux/kernel.h>
-+#include <linux/moduleparam.h>
- #include <linux/init.h>
-+#include <linux/kernel.h>
- #include <linux/ioport.h>
-+#include <linux/device.h>
- #include <linux/netdevice.h>
- #include <linux/etherdevice.h>
--#include <linux/delay.h>
- #include <linux/mii.h>
--#include <linux/socket.h>
--#include <linux/cache.h>
- #include <asm/io.h>
- #include <asm/errno.h>
- #include <net/pkt_sched.h>
- #include <net/ip.h>
--#include <linux/sysctl.h>
--#include <linux/unistd.h>
-
- /*
- * Intel IXP400 Software specific header files
-@@ -93,8 +90,8 @@
- MODULE_DESCRIPTION("IXP425 NPE Ethernet driver");
- MODULE_LICENSE("GPL");
- MODULE_AUTHOR("Intel Corporation");
--#define MODULE_NAME "ixp425_eth"
--#define MODULE_VERSION "1.2"
-+#define DRV_NAME "ixp425_eth"
-+#define DRV_VERSION "1.2A"
-
- /* Module parameters */
- static int npe_learning = 1; /* default : NPE learning & filtering enable */
-@@ -122,26 +119,23 @@
- */
- static int netdev_max_backlog = 290;
-
--MODULE_PARM(npe_learning, "i");
-+module_param(npe_learning, int, 4);
- MODULE_PARM_DESC(npe_learning, "If non-zero, NPE MAC Address Learning & Filtering feature will be enabled");
--MODULE_PARM(log_level, "i");
-+module_param(log_level, int, 6);
- MODULE_PARM_DESC(log_level, "Set log level: 0 - None, 1 - Verbose, 2 - Debug");
--MODULE_PARM(no_csr_init, "i");
-+module_param(no_csr_init, int, 0);
- MODULE_PARM_DESC(no_csr_init, "If non-zero, do not initialise Intel IXP400 Software Release core components");
--MODULE_PARM(no_phy_scan, "i");
-+module_param(no_phy_scan, int, 0);
- MODULE_PARM_DESC(no_phy_scan, "If non-zero, use hard-coded phy addresses");
--MODULE_PARM(datapath_poll, "i");
-+module_param(datapath_poll, int, 0);
- MODULE_PARM_DESC(datapath_poll, "If non-zero, use polling method for datapath instead of interrupts");
--MODULE_PARM(phy_reset, "i");
-+module_param(phy_reset, int, 0);
- MODULE_PARM_DESC(phy_reset, "If non-zero, reset the phys");
--MODULE_PARM(netdev_max_backlog, "i");
-+module_param(netdev_max_backlog, int, 4);
- MODULE_PARM_DESC(netdev_max_backlog, "Should be set to the value of /proc/sys/net/core/netdev_max_backlog (perf affecting)");
--MODULE_PARM(dev_max_count, "i");
-+module_param(dev_max_count, int, 4);
- MODULE_PARM_DESC(dev_max_count, "Number of devices to initialize");
-
--/* devices will be called ixp0 and ixp1 */
--#define DEVICE_NAME "ixp"
--
- /* boolean values for PHY link speed, duplex, and autonegotiation */
- #define PHY_SPEED_10 0
- #define PHY_SPEED_100 1
-@@ -257,36 +251,35 @@
- */
- /* Print kernel error */
- #define P_ERROR(args...) \
-- printk(KERN_ERR MODULE_NAME ": " args)
-+ printk(KERN_ERR DRV_NAME ": " args)
- /* Print kernel warning */
- #define P_WARN(args...) \
-- printk(KERN_WARNING MODULE_NAME ": " args)
-+ printk(KERN_WARNING DRV_NAME ": " args)
- /* Print kernel notice */
- #define P_NOTICE(args...) \
-- printk(KERN_NOTICE MODULE_NAME ": " args)
-+ printk(KERN_NOTICE DRV_NAME ": " args)
- /* Print kernel info */
- #define P_INFO(args...) \
-- printk(KERN_INFO MODULE_NAME ": " args)
-+ printk(KERN_INFO DRV_NAME ": " args)
- /* Print verbose message. Enabled/disabled by 'log_level' param */
- #define P_VERBOSE(args...) \
-- if (log_level >= 1) printk(MODULE_NAME ": " args)
-+ if (log_level >= 1) printk(DRV_NAME ": " args)
- /* Print debug message. Enabled/disabled by 'log_level' param */
- #define P_DEBUG(args...) \
- if (log_level >= 2) { \
-- printk("%s: %s()\n", MODULE_NAME, __FUNCTION__); \
-+ printk("%s: %s()\n", DRV_NAME, __FUNCTION__); \
- printk(args); }
-
- #ifdef DEBUG
- /* Print trace message */
- #define TRACE \
-- if (log_level >= 2) printk("%s: %s(): line %d\n", MODULE_NAME, __FUNCTION__, __LINE__)
-+ if (log_level >= 2) printk("%s: %s(): line %d\n", DRV_NAME, __FUNCTION__, __LINE__)
- #else
- /* no trace */
- #define TRACE
- #endif
-
- /* extern Linux kernel data */
--extern struct softnet_data softnet_data[]; /* used to get the current queue level */
- extern unsigned long loops_per_jiffy; /* used to calculate CPU clock speed */
-
- /* internal Ethernet Access layer polling entry points */
-@@ -295,10 +288,12 @@
- extern void
- ixEthTxFrameDoneQMCallback(IxQMgrQId qId, IxQMgrCallbackId callbackId);
-
-+#ifdef CONFIG_NET_POLL_CONTROLLER
-+static void ixp425eth_poll_controller(struct net_device *dev);
-+#endif
-+
- /* Private device data */
- typedef struct {
-- spinlock_t lock; /* multicast management lock */
--
- unsigned int msdu_size;
- unsigned int replenish_size;
- unsigned int pkt_size;
-@@ -338,17 +333,11 @@
- /* TX MBUF pool */
- IX_OSAL_MBUF_POOL *tx_pool;
-
-- /* id of thread for the link duplex monitoring */
-- int maintenanceCheckThreadId;
--
-- /* mutex locked by thread, until the thread exits */
-- struct semaphore *maintenanceCheckThreadComplete;
--
-- /* Used to stop the kernel thread for link monitoring. */
-- volatile BOOL maintenanceCheckStopped;
-+ /* link duplex monitoring */
-+ struct work_struct mii_job;
-
-- /* used for tx timeout */
-- struct tq_struct tq_timeout;
-+ /* handle tx timeouts */
-+ struct work_struct tx_timeout_job;
-
- /* used to control the message output */
- UINT32 devFlags;
-@@ -370,11 +359,13 @@
- */
-
- /* values used inside the irq */
-+#ifdef IXP425ETH_POLLING_MODE
- static unsigned long timer_countup_ticks;
-+static unsigned int rx_queue_id = IX_QMGR_MAX_NUM_QUEUES;
-+#endif
- static IxQMgrDispatcherFuncPtr dispatcherFunc;
- static struct timeval irq_stamp; /* time of interrupt */
- static unsigned int maxbacklog = RX_MBUF_POOL_SIZE;
--static unsigned int rx_queue_id = IX_QMGR_MAX_NUM_QUEUES;
-
- /* Implements a software queue for skbufs
- * This queue is written in the tx done process and
-@@ -523,13 +514,18 @@
- #endif
- };
-
-+/*
-+ * Shared workqueue thread for device maintenance tasks.
-+ */
-+static struct workqueue_struct *npe_eth_workqueue;
-+
- /* Mutex lock used to coordinate access to IxEthAcc functions
- * which manipulate the MII registers on the PHYs
- */
--static struct semaphore *miiAccessMutex;
-+static DECLARE_MUTEX(miiAccessMutex);
-
- /* mutex locked when maintenance is being performed */
--static struct semaphore *maintenance_mutex;
-+static DECLARE_MUTEX(maintenance_mutex);
-
- /* Flags which is set when the corresponding IRQ is running,
- */
-@@ -592,7 +588,7 @@
- printk(">> mbuf:\n");
- hex_dump(mbuf, sizeof(*mbuf));
- printk(">> m_data:\n");
-- hex_dump(__va(IX_OSAL_MBUF_MDATA(mbuf)), IX_OSAL_MBUF_MLEN(mbuf));
-+ hex_dump(IX_OSAL_MBUF_MDATA(mbuf), IX_OSAL_MBUF_MLEN(mbuf));
- printk("\n-------------------------\n");
- }
-
-@@ -791,6 +787,8 @@
- #ifdef CONFIG_NETFILTER
- #if defined(CONFIG_BRIDGE) || defined(CONFIG_BRIDGE_MODULE)
- /* We need to free the memory attached to the nf_bridge pointer to avoid a memory leak */
-+ nf_bridge_put(skb->nf_bridge);
-+ skb->nf_bridge = NULL;
-
- #endif
- #endif /* CONFIG_NETFILTER */
-@@ -1041,135 +1039,63 @@
- * KERNEL THREADS
- */
-
--/* flush the pending signals for a thread and
-- * check if a thread is killed (e.g. system shutdown)
-- */
--static BOOL dev_thread_signal_killed(void)
--{
-- int killed = FALSE;
-- if (signal_pending (current))
-- {
-- spin_lock_irq(&current->sigmask_lock);
-- if (sigismember(&(current->pending.signal), SIGKILL)
-- || sigismember(&(current->pending.signal), SIGTERM))
-- {
-- /* someone kills this thread */
-- killed = TRUE;
-- }
-- flush_signals(current);
-- spin_unlock_irq(&current->sigmask_lock);
-- }
-- return killed;
--}
--
--/* This timer will check the PHY for the link duplex and
-+/* This workqueue job will check the PHY for the link duplex and
- * update the MAC accordingly. It also executes some buffer
- * maintenance to release mbuf in excess or replenish after
- * a severe starvation
- *
- * This function loops and wake up every 3 seconds.
- */
--static int dev_media_check_thread (void* arg)
-+static void dev_media_check_work (void* arg)
- {
- struct net_device *dev = (struct net_device *) arg;
- priv_data_t *priv = dev->priv;
-- int linkUp;
-- int speed100;
-- int fullDuplex = -1; /* unknown duplex mode */
-- int newDuplex;
-- int autonegotiate;
-- unsigned phyNum = phyAddresses[priv->port_id];
-- int res;
-
-- TRACE;
-
-- /* Lock the mutex for this thread.
-- This mutex can be used to wait until the thread exits
-- */
-- down (priv->maintenanceCheckThreadComplete);
--
-- daemonize();
-- reparent_to_init();
-- spin_lock_irq(&current->sigmask_lock);
-- sigemptyset(&current->blocked);
-- recalc_sigpending(current);
-- spin_unlock_irq(&current->sigmask_lock);
--
-- snprintf(current->comm, sizeof(current->comm), "ixp425 %s", dev->name);
-+ /*
-+ * Determine the link status
-+ */
-
-- TRACE;
--
-- while (1)
-+ if (default_phy_cfg[priv->port_id].linkMonitor)
- {
-- /* We may have been woken up by a signal. If so, we need to
-- * flush it out and check for thread termination
-- */
-- if (dev_thread_signal_killed())
-- {
-- priv->maintenanceCheckStopped = TRUE;
-- }
--
-- /* If the interface is down, or the thread is killed,
-- * or gracefully aborted, we need to exit this loop
-- */
-- if (priv->maintenanceCheckStopped)
-- {
-- break;
-- }
--
-- /*
-- * Determine the link status
-- */
-+ int linkUp;
-+ int speed100;
-+ int fullDuplex = -1; /* unknown duplex mode */
-+ int newDuplex;
-+ int autonegotiate;
-+ unsigned phyNum = phyAddresses[priv->port_id];
-+ int res;
-
- TRACE;
-
-- if (default_phy_cfg[priv->port_id].linkMonitor)
-- {
-- /* lock the MII register access mutex */
-- down(miiAccessMutex);
-+ /* lock the MII register access mutex */
-+ down(&miiAccessMutex);
-
-- res = ixEthMiiLinkStatus(phyNum,
-- &linkUp,
-- &speed100,
-- &newDuplex,
-- &autonegotiate);
-- /* release the MII register access mutex */
-- up(miiAccessMutex);
--
-- /* We may have been woken up by a signal. If so, we need to
-- * flush it out and check for thread termination
-- */
-- if (dev_thread_signal_killed())
-- {
-- priv->maintenanceCheckStopped = TRUE;
-- }
-+ res = ixEthMiiLinkStatus(phyNum,
-+ &linkUp,
-+ &speed100,
-+ &newDuplex,
-+ &autonegotiate);
-+ /* release the MII register access mutex */
-+ up(&miiAccessMutex);
-+
-+ if (res != IX_ETH_ACC_SUCCESS)
-+ {
-+ P_WARN("ixEthMiiLinkStatus failed on PHY%d.\n"
-+ "\tCan't determine\nthe auto negotiated parameters. "
-+ "Using default values.\n",
-+ phyNum);
-+ /* this shouldn't happen. exit the thread if it does */
-+ goto out;
-+ }
-
-- /* If the interface is down, or the thread is killed,
-- * or gracefully aborted, we need to exit this loop
-- */
-- if (priv->maintenanceCheckStopped)
-- {
-- break;
-- }
--
-- if (res != IX_ETH_ACC_SUCCESS)
-+ if (linkUp)
-+ {
-+ if (! netif_carrier_ok(dev))
- {
-- P_WARN("ixEthMiiLinkStatus failed on PHY%d.\n"
-- "\tCan't determine\nthe auto negotiated parameters. "
-- "Using default values.\n",
-- phyNum);
-- /* something is bad, gracefully stops the loop */
-- priv->maintenanceCheckStopped = TRUE;
-- break;
-+ /* inform the kernel of a change in link state */
-+ netif_carrier_on(dev);
- }
--
-- if (linkUp)
-- {
-- if (! netif_carrier_ok(dev))
-- {
-- /* inform the kernel of a change in link state */
-- netif_carrier_on(dev);
-- }
-
- /*
- * Update the MAC mode to match the PHY mode if
-@@ -1218,18 +1144,14 @@
- * long
- */
- dev_buff_maintenance(dev);
--
-- /* Now sleep for 3 seconds */
-- current->state = TASK_INTERRUPTIBLE;
-- schedule_timeout(MEDIA_CHECK_INTERVAL);
-- } /* while (1) ... */
--
-- /* free the mutex for this thread. */
-- up (priv->maintenanceCheckThreadComplete);
--
-- return 0;
-+ /* reschedule to run in 3 seconds */
-+ queue_delayed_work(npe_eth_workqueue, &priv->mii_job, 3*HZ);
-+out:
-+ return;
- }
-
-+#ifdef IXP425ETH_POLLING_MODE
-+
- /*
- * TIMERS
- *
-@@ -1263,12 +1185,14 @@
- restore_flags(flags);
- }
-
-+#endif /* IXP425ETH_POLLING_MODE */
-+
- /* Internal ISR : run a few thousand times per second and calls
- * the queue manager dispatcher entry point.
- */
--static void dev_qmgr_os_isr(int irg, void *dev_id, struct pt_regs *regs)
-+static irqreturn_t dev_qmgr_os_isr(int irg, void *dev_id, struct pt_regs *regs)
- {
-- int qlevel = softnet_data[0].input_pkt_queue.qlen;
-+ int qlevel = __get_cpu_var(softnet_data).input_pkt_queue.qlen;
-
- /* at the interrupt entry, the queue contains already a few entries
- * so it is safe to decrease the number of entries
-@@ -1302,14 +1226,17 @@
-
- /* call the queue manager entry point */
- dispatcherFunc(IX_QMGR_QUELOW_GROUP);
-+ return IRQ_HANDLED;
- }
-
-+#ifdef IXP425ETH_POLLING_MODE
-+
- /* Internal ISR : run a few thousand times per second and calls
- * the ethernet entry point.
- */
--static void dev_poll_os_isr(int irg, void *dev_id, struct pt_regs *regs)
-+static irqreturn_t dev_poll_os_isr(int irg, void *dev_id, struct pt_regs *regs)
- {
-- int qlevel = softnet_data[0].input_pkt_queue.qlen;
-+ int qlevel = __get_cpu_var(softnet_data).input_pkt_queue.qlen;
- dev_pmu_timer_restart(); /* set up the timer for the next interrupt */
-
- /* at the interrupt entry, the queue contains already a few entries
-@@ -1346,6 +1273,7 @@
- ixEthRxFrameQMCallback(rx_queue_id,0);
- ixEthTxFrameDoneQMCallback(0,0);
-
-+ return IRQ_HANDLED;
- }
-
- /* initialize the PMU timer */
-@@ -1400,46 +1328,33 @@
- restore_flags(flags);
- }
-
--/* This timer will call ixEthDBDatabaseMaintenance every
-- * IX_ETH_DB_MAINTENANCE_TIME jiffies
-- */
--static void maintenance_timer_cb(unsigned long data);
--
--static struct timer_list maintenance_timer = {
-- function:&maintenance_timer_cb
--};
-+#endif /* IXP425ETH_POLLING_MODE */
-
--static void maintenance_timer_task(void *data);
-
--/* task spawned by timer interrupt for EthDB maintenance */
--static struct tq_struct tq_maintenance = {
-- routine:maintenance_timer_task
--};
-+static void db_maintenance_code(void *data);
-+static DECLARE_WORK(db_maintenance_job, db_maintenance_code, NULL);
-
--static void maintenance_timer_set(void)
-+static inline
-+void schedule_db_maintenance(void)
- {
-- maintenance_timer.expires = jiffies + DB_MAINTENANCE_TIME;
-- add_timer(&maintenance_timer);
-+ queue_delayed_work(npe_eth_workqueue, &db_maintenance_job,
-+ DB_MAINTENANCE_TIME);
- }
-
--static void maintenance_timer_clear(void)
-+static inline
-+void cancel_db_maintenance(void)
- {
-- del_timer_sync(&maintenance_timer);
-+ cancel_delayed_work(&db_maintenance_job);
- }
-
--static void maintenance_timer_task(void *data)
-+static void db_maintenance_code(void *data)
- {
-- down(maintenance_mutex);
-+ down(&maintenance_mutex);
- ixEthDBDatabaseMaintenance();
-- up(maintenance_mutex);
-+ up(&maintenance_mutex);
-+ schedule_db_maintenance();
- }
-
--static void maintenance_timer_cb(unsigned long data)
--{
-- schedule_task(&tq_maintenance);
--
-- maintenance_timer_set();
--}
-
- /*
- * DATAPLANE
-@@ -1553,7 +1468,7 @@
- * and its constants are taken from the eth_type_trans()
- * function.
- */
-- struct ethhdr *eth = skb->mac.ethernet;
-+ struct ethhdr *eth = eth_hdr(skb);
- unsigned short hproto = ntohs(eth->h_proto);
-
- if (hproto >= 1536)
-@@ -1595,7 +1510,7 @@
- * mode is set This costs
- * a lookup inside the packet payload.
- */
-- struct ethhdr *eth = skb->mac.ethernet;
-+ struct ethhdr *eth = eth_hdr(skb);
- unsigned char *hdest = eth->h_dest;
-
- if (memcmp(hdest, dev->dev_addr, ETH_ALEN)!=0)
-@@ -1654,7 +1569,7 @@
- dev = (struct net_device *)callbackTag;
- priv = dev->priv;
-
-- qlevel = softnet_data[0].input_pkt_queue.qlen;
-+ qlevel = __get_cpu_var(softnet_data).input_pkt_queue.qlen;
- /* check if the system accepts more traffic and
- * against chained mbufs
- */
-@@ -1754,10 +1669,6 @@
-
- TRACE;
-
-- /* if called from irq handler, lock already acquired */
-- if (!in_irq())
-- spin_lock_irq(&priv->lock);
--
- /* clear multicast addresses that were set the last time (if exist) */
- ixEthAccPortMulticastAddressLeaveAll (priv->port_id);
-
-@@ -1838,10 +1749,10 @@
- }
-
- Exit:
-- if (!in_irq())
-- spin_unlock_irq(&priv->lock);
-+ return;
- }
-
-+#ifdef IXP425ETH_POLLING_MODE
- /* The QMgr dispatch entry point can be called from the
- * IX_OSAL_IXP400_QM1_IRQ_LVL irq (which will trigger
- * an interrupt for every packet) or a timer (which will
-@@ -1893,8 +1804,8 @@
- /* poll the datapath from a timer IRQ */
- if (request_irq(IX_OSAL_IXP400_XSCALE_PMU_IRQ_LVL,
- dev_poll_os_isr,
-- SA_SHIRQ,
-- MODULE_NAME,
-+ SA_SHIRQ | SA_SAMPLE_RANDOM,
-+ DRV_NAME,
- (void *)IRQ_ANY_PARAMETER))
- {
- P_ERROR("Failed to reassign irq to PMU timer interrupt!\n");
-@@ -1918,6 +1829,8 @@
- return 0;
- }
-
-+#endif /* IXP425ETH_POLLING_MODE */
-+
- /* Enable the MAC port.
- * Called on do_dev_open, dev_tx_timeout and mtu size changes
- */
-@@ -1946,23 +1859,6 @@
- return convert_error_ethAcc(res);
- }
-
-- /* restart the link-monitoring thread if necessary */
-- if (priv->maintenanceCheckStopped)
-- {
-- /* Starts the driver monitoring thread, if configured */
-- priv->maintenanceCheckStopped = FALSE;
--
-- priv->maintenanceCheckThreadId =
-- kernel_thread(dev_media_check_thread,
-- (void *) dev,
-- CLONE_FS | CLONE_FILES);
-- if (priv->maintenanceCheckThreadId < 0)
-- {
-- P_ERROR("%s: Failed to start thread for media checks\n", dev->name);
-- priv->maintenanceCheckStopped = TRUE;
-- }
-- }
--
- /* force replenish if necessary */
- dev_rx_buff_prealloc(priv);
-
-@@ -2019,38 +1915,11 @@
- static void port_disable(struct net_device *dev)
- {
- priv_data_t *priv = dev->priv;
-- int res;
- IX_STATUS status;
-
- P_DEBUG("port_disable(%s)\n", dev->name);
-
-- if (!netif_queue_stopped(dev))
-- {
-- dev->trans_start = jiffies;
-- netif_stop_queue(dev);
-- }
--
-- if (priv->maintenanceCheckStopped)
-- {
-- /* thread is not running */
-- }
-- else
-- {
-- /* thread is running */
-- priv->maintenanceCheckStopped = TRUE;
-- /* Wake up the media-check thread with a signal.
-- It will check the 'running' flag and exit */
-- if ((res = kill_proc (priv->maintenanceCheckThreadId, SIGKILL, 1)))
-- {
-- P_ERROR("%s: unable to signal thread\n", dev->name);
-- }
-- else
-- {
-- /* wait for the thread to exit. */
-- down (priv->maintenanceCheckThreadComplete);
-- up (priv->maintenanceCheckThreadComplete);
-- }
-- }
-+ netif_stop_queue(dev);
-
- /* Set callbacks when port is disabled */
- ixEthAccPortTxDoneCallbackRegister(priv->port_id,
-@@ -2100,7 +1969,6 @@
- ixEthAccPortTxDoneCallbackRegister(priv->port_id,
- tx_done_queue_stopped_cb,
- (UINT32)dev);
-- dev->trans_start = jiffies;
- netif_stop_queue (dev);
- }
- return 0;
-@@ -2143,12 +2011,19 @@
- int res;
-
- /* prevent the maintenance task from running while bringing up port */
-- down(maintenance_mutex);
-+ down(&maintenance_mutex);
-
- /* bring up the port */
- res = port_enable(dev);
-
-- up(maintenance_mutex);
-+ up(&maintenance_mutex);
-+
-+ if(!res)
-+ {
-+ /* schedule mii job to run in 3 seconds */
-+ priv_data_t *priv = dev->priv;
-+ queue_delayed_work(npe_eth_workqueue, &priv->mii_job, 3*HZ);
-+ }
-
- return res;
- }
-@@ -2158,28 +2033,34 @@
- */
- static int do_dev_stop(struct net_device *dev)
- {
-+ priv_data_t *priv = dev->priv;
-+
- TRACE;
-
-+ cancel_delayed_work(&priv->mii_job);
-+ cancel_delayed_work(&priv->tx_timeout_job);
-+ netif_stop_queue(dev);
-+ netif_carrier_off(dev);
- /* prevent the maintenance task from running while bringing up port */
-- down(maintenance_mutex);
-+ down(&maintenance_mutex);
-
- /* bring the port down */
- port_disable(dev);
-
-- up(maintenance_mutex);
-+ up(&maintenance_mutex);
-
- return 0;
- }
-
- static void
--dev_tx_timeout_task(void *dev_id)
-+dev_tx_timeout_work(void *arg)
- {
-- struct net_device *dev = (struct net_device *)dev_id;
-+ struct net_device *dev = (struct net_device *)arg;
- priv_data_t *priv = dev->priv;
-
- P_WARN("%s: Tx Timeout for port %d\n", dev->name, priv->port_id);
-
-- down(maintenance_mutex);
-+ down(&maintenance_mutex);
- port_disable(dev);
-
- /* Note to user: Consider performing other reset operations here
-@@ -2202,7 +2083,7 @@
- port_enable(dev);
- }
-
-- up(maintenance_mutex);
-+ up(&maintenance_mutex);
- }
-
-
-@@ -2212,8 +2093,7 @@
- priv_data_t *priv = dev->priv;
-
- TRACE;
-- schedule_task(&priv->tq_timeout);
--
-+ queue_work(npe_eth_workqueue, &priv->tx_timeout_job);
- }
-
- /* update the maximum msdu value for this device */
-@@ -2270,14 +2150,14 @@
- }
-
- /* safer to stop maintenance task while bringing port down and up */
-- down(maintenance_mutex);
-+ down(&maintenance_mutex);
-
- if (ixEthDBFilteringPortMaximumFrameSizeSet(priv->port_id,
- new_msdu_size))
- {
- P_ERROR("%s: ixEthDBFilteringPortMaximumFrameSizeSet failed for port %d\n",
- dev->name, priv->port_id);
-- up(maintenance_mutex);
-+ up(&maintenance_mutex);
-
- return -1;
- }
-@@ -2287,7 +2167,7 @@
- /* update the driver mtu value */
- dev->mtu = new_mtu_size;
-
-- up(maintenance_mutex);
-+ up(&maintenance_mutex);
-
- return 0;
- }
-@@ -2316,27 +2196,27 @@
- /* Read MII PHY register */
- case SIOCGMIIREG:
- case SIOCDEVPRIVATE+1:
-- down (miiAccessMutex); /* lock the MII register access mutex */
-+ down (&miiAccessMutex); /* lock the MII register access mutex */
- if ((res = ixEthAccMiiReadRtn (data->phy_id, data->reg_num, &data->val_out)))
- {
- P_ERROR("Error reading MII reg %d on phy %d\n",
- data->reg_num, data->phy_id);
- res = -1;
- }
-- up (miiAccessMutex); /* release the MII register access mutex */
-+ up (&miiAccessMutex); /* release the MII register access mutex */
- return res;
-
- /* Write MII PHY register */
- case SIOCSMIIREG:
- case SIOCDEVPRIVATE+2:
-- down (miiAccessMutex); /* lock the MII register access mutex */
-+ down (&miiAccessMutex); /* lock the MII register access mutex */
- if ((res = ixEthAccMiiWriteRtn (data->phy_id, data->reg_num, data->val_in)))
- {
- P_ERROR("Error writing MII reg %d on phy %d\n",
- data->reg_num, data->phy_id);
- res = -1;
- }
-- up (miiAccessMutex); /* release the MII register access mutex */
-+ up (&miiAccessMutex); /* release the MII register access mutex */
- return res;
-
- /* set the MTU size */
-@@ -2373,7 +2253,7 @@
-
- TRACE;
-
-- invalidate_dcache_range((unsigned int)&ethStats, sizeof(ethStats));
-+ IX_ACC_DATA_CACHE_INVALIDATE(&ethStats, sizeof(ethStats));
- if ((res = ixEthAccMibIIStatsGetClear(priv->port_id, &ethStats)))
- {
- P_ERROR("%s: ixEthAccMibIIStatsGet failed for port %d, res = %d\n",
-@@ -2462,8 +2342,8 @@
- */
- if (request_irq(IX_OSAL_IXP400_QM1_IRQ_LVL,
- dev_qmgr_os_isr,
-- SA_SHIRQ,
-- MODULE_NAME,
-+ SA_SHIRQ | SA_SAMPLE_RANDOM,
-+ DRV_NAME,
- (void *)IRQ_ANY_PARAMETER))
- {
- P_ERROR("Failed to request_irq to Queue Manager interrupt!\n");
-@@ -2582,15 +2462,6 @@
- BOOL physcan[IXP425_ETH_ACC_MII_MAX_ADDR];
- int i, phy_found, num_phys_to_set, dev_count;
-
-- /* initialise the MII register access mutex */
-- miiAccessMutex = (struct semaphore *) kmalloc(sizeof(struct semaphore), GFP_KERNEL);
-- if (!miiAccessMutex)
-- return -ENOMEM;
--
-- init_MUTEX(miiAccessMutex);
--
-- TRACE;
--
- /* detect the PHYs (ethMii requires the PHYs to be detected)
- * and provides a maximum number of PHYs to search for.
- */
-@@ -2680,8 +2551,8 @@
- if (port_id == IX_ETH_PORT_1) npe_id = "B";
- if (port_id == IX_ETH_PORT_2) npe_id = "C";
-
-- P_INFO("%s%d is using NPE%s and the PHY at address %d\n",
-- DEVICE_NAME, dev_count, npe_id, phyAddresses[port_id]);
-+ P_INFO("npe%d is using NPE%s and the PHY at address %d\n",
-+ dev_count, npe_id, phyAddresses[port_id]);
-
- /* Set the MAC to the same duplex mode as the phy */
- ixEthAccPortDuplexModeSet(port_id,
-@@ -2693,12 +2564,11 @@
- }
-
- /* set port MAC addr and update the dev struct if successfull */
--int dev_set_mac_address(struct net_device *dev, void *addr)
-+int dev_set_mac_address(struct net_device *dev, struct sockaddr *saddr)
- {
- int res;
- priv_data_t *priv = dev->priv;
- IxEthAccMacAddr npeMacAddr;
-- struct sockaddr *saddr = (struct sockaddr *)addr;
-
- /* Get MAC addr from parameter */
- memcpy(&npeMacAddr.macAddress,
-@@ -2758,7 +2628,7 @@
-
- static struct Qdisc_ops dev_qdisc_ops =
- {
-- NULL, NULL, "ixp425_eth", 0,
-+ NULL, NULL, DRV_NAME, 0,
- dev_qdisc_no_enqueue,
- dev_qdisc_no_dequeue,
- dev_qdisc_no_enqueue,
-@@ -2771,35 +2641,13 @@
- /* Initialize device structs.
- * Resource allocation is deffered until do_dev_open
- */
--static int __devinit dev_eth_probe(struct net_device *dev)
-+static int __devinit dev_eth_probe(struct device *dev)
- {
-- static int found_devices = 0;
-- priv_data_t *priv;
--
-- TRACE;
--
-- /* there is a limited number of devices */
-- if (found_devices >= dev_max_count) /* module parameter */
-- return -ENODEV;
--
-- SET_MODULE_OWNER(dev);
--
-- /* set device name */
-- strcpy(dev->name, found_devices ? DEVICE_NAME "1" : DEVICE_NAME "0");
--
-- /* allocate and initialize priv struct */
-- priv = dev->priv = kmalloc(sizeof(priv_data_t), GFP_KERNEL);
-- if (dev->priv == NULL)
-- return -ENOMEM;
--
-- memset(dev->priv, 0, sizeof(priv_data_t));
--
-- TRACE;
--
-- /* set the mapping between port ID and devices
-- *
-- */
-- priv->port_id = default_portId[found_devices];
-+ int res = -ENOMEM;
-+ struct platform_device *pdev = to_platform_device(dev);
-+ struct net_device *ndev = dev_get_drvdata(dev);
-+ priv_data_t *priv = (priv_data_t*)ndev->priv;
-+ priv->port_id = pdev->id;
-
- TRACE;
-
-@@ -2809,9 +2657,8 @@
- if(priv->rx_pool == NULL)
- {
- P_ERROR("%s: Buffer RX Pool init failed on port %d\n",
-- dev->name, priv->port_id);
-- kfree(dev->priv);
-- return -ENOMEM;
-+ ndev->name, priv->port_id);
-+ goto out;
- }
-
- TRACE;
-@@ -2822,45 +2669,38 @@
- if(priv->tx_pool == NULL)
- {
- P_ERROR("%s: Buffer TX Pool init failed on port %d\n",
-- dev->name, priv->port_id);
-- kfree(dev->priv);
-- return -ENOMEM;
-+ ndev->name, priv->port_id);
-+ goto out;
- }
-
-- TRACE;
-+ TRACE;
-
-- /* initialise the MII register access mutex */
-- priv->maintenanceCheckThreadComplete = (struct semaphore *)
-- kmalloc(sizeof(struct semaphore), GFP_KERNEL);
-- if (!priv->maintenanceCheckThreadComplete)
-- {
-- kfree(dev->priv);
-- return -ENOMEM;
-- }
-- priv->lock = SPIN_LOCK_UNLOCKED;
-- init_MUTEX(priv->maintenanceCheckThreadComplete);
-- priv->maintenanceCheckStopped = TRUE;
--
-- /* initialize ethernet device (default handlers) */
-- ether_setup(dev);
-+ /* initialise the MII and tx timeout jobs */
-+ INIT_WORK(&priv->mii_job, dev_media_check_work, ndev);
-+ INIT_WORK(&priv->tx_timeout_job, dev_tx_timeout_work, ndev);
-
- TRACE;
-
-- /* fill in dev struct callbacks with customized handlers */
-- dev->open = do_dev_open;
-- dev->stop = do_dev_stop;
-+ /* initialize ethernet device (default handlers) */
-+ ether_setup(ndev);
-
-- dev->hard_start_xmit = dev_hard_start_xmit;
-+ /* fill in dev struct callbacks with customized handlers */
-+ ndev->open = do_dev_open;
-+ ndev->stop = do_dev_stop;
-
-- dev->watchdog_timeo = DEV_WATCHDOG_TIMEO;
-- dev->tx_timeout = dev_tx_timeout;
-- dev->change_mtu = dev_change_mtu;
-- dev->do_ioctl = do_dev_ioctl;
-- dev->get_stats = dev_get_stats;
-- dev->set_multicast_list = dev_set_multicast_list;
-- dev->flags |= IFF_MULTICAST;
-+ ndev->hard_start_xmit = dev_hard_start_xmit;
-
-- dev->set_mac_address = dev_set_mac_address;
-+ ndev->watchdog_timeo = DEV_WATCHDOG_TIMEO;
-+ ndev->tx_timeout = dev_tx_timeout;
-+ ndev->change_mtu = dev_change_mtu;
-+ ndev->do_ioctl = do_dev_ioctl;
-+ ndev->get_stats = dev_get_stats;
-+ ndev->set_multicast_list = dev_set_multicast_list;
-+ ndev->flags |= IFF_MULTICAST;
-+#ifdef CONFIG_NET_POLL_CONTROLLER
-+ ndev->poll_controller = ixp425eth_poll_controller;
-+#endif
-+ ndev->set_mac_address = dev_set_mac_address;
-
- TRACE;
-
-@@ -2878,22 +2718,22 @@
- *
- */
-
-- memcpy(dev->dev_addr,
-+ memcpy(ndev->dev_addr,
- &default_mac_addr[priv->port_id].macAddress,
- IX_IEEE803_MAC_ADDRESS_SIZE);
-
- /* possibly remove this test and the message when a valid MAC address
- * is not hardcoded in the driver source code.
- */
-- if (is_valid_ether_addr(dev->dev_addr))
-+ if (is_valid_ether_addr(ndev->dev_addr))
- {
- P_WARN("Use default MAC address %2.2x:%2.2x:%2.2x:%2.2x:%2.2x:%2.2x for port %d\n",
-- (unsigned)dev->dev_addr[0],
-- (unsigned)dev->dev_addr[1],
-- (unsigned)dev->dev_addr[2],
-- (unsigned)dev->dev_addr[3],
-- (unsigned)dev->dev_addr[4],
-- (unsigned)dev->dev_addr[5],
-+ (unsigned)ndev->dev_addr[0],
-+ (unsigned)ndev->dev_addr[1],
-+ (unsigned)ndev->dev_addr[2],
-+ (unsigned)ndev->dev_addr[3],
-+ (unsigned)ndev->dev_addr[4],
-+ (unsigned)ndev->dev_addr[5],
- priv->port_id);
- }
-
-@@ -2903,62 +2743,132 @@
- */
- TRACE;
-
-- dev_change_msdu(dev, dev->mtu + dev->hard_header_len + VLAN_HDR);
--
-- priv->tq_timeout.routine = dev_tx_timeout_task;
-- priv->tq_timeout.data = (void *)dev;
-+ dev_change_msdu(ndev, ndev->mtu + ndev->hard_header_len + VLAN_HDR);
-
- #ifdef CONFIG_IXP425_ETH_QDISC_ENABLED
- /* configure and enable a fast TX queuing discipline */
- TRACE;
-
-- priv->qdisc = qdisc_create_dflt(dev, &dev_qdisc_ops);
-- dev->qdisc_sleeping = priv->qdisc;
-- dev->qdisc = priv->qdisc;
-+ priv->qdisc = qdisc_create_dflt(ndev, &dev_qdisc_ops);
-+ ndev->qdisc_sleeping = priv->qdisc;
-+ ndev->qdisc = priv->qdisc;
-
-- if (!dev->qdisc_sleeping)
-+ if (!ndev->qdisc_sleeping)
- {
- P_ERROR("%s: qdisc_create_dflt failed on port %d\n",
-- dev->name, priv->port_id);
-- kfree(dev->priv);
-- return -ENOMEM;
-+ ndev->name, priv->port_id);
-+ goto out;
- }
- #endif
-
- /* set the internal maximum queueing capabilities */
-- dev->tx_queue_len = TX_MBUF_POOL_SIZE;
-+ ndev->tx_queue_len = TX_MBUF_POOL_SIZE;
-
-- if (!netif_queue_stopped(dev))
-- {
-- TRACE;
-+ if ((res = register_netdev(ndev)))
-+ P_ERROR("Failed to register netdev. res = %d\n", res);
-+out:
-+ return res;
-+}
-
-- dev->trans_start = jiffies;
-- netif_stop_queue(dev);
-- }
-+#ifdef CONFIG_NET_POLL_CONTROLLER
-+/*
-+ * Polling receive - used by netconsole and other diagnostic tools
-+ * to allow network i/o with interrupts disabled.
-+ * (stolen from 8139too.c by siddy)
-+ */
-+static void ixp425eth_poll_controller(struct net_device *dev)
-+{
-+ disable_irq(dev->irq);
-+ dev_qmgr_os_isr(dev->irq, dev, NULL);
-+ enable_irq(dev->irq);
-+}
-+#endif
-
-- found_devices++;
-+static int __devinit npe_eth_init_device(struct device *dev)
-+{
-+ int res = -ENOMEM;
-+ int ixRes = 0;
-+ struct platform_device *pdev = to_platform_device(dev);
-+ struct net_device *ndev = alloc_etherdev(sizeof(priv_data_t));
-+ if (ndev == NULL) {
-+ P_ERROR("could not allocate device.\n");
-+ goto out;
-+ }
-+ SET_MODULE_OWNER(ndev);
-+ SET_NETDEV_DEV(ndev, dev);
-+ ixEthAccTxSchedulingDisciplineSet(pdev->id, FIFO_NO_PRIORITY);
-+ dev_set_drvdata(dev, ndev);
-+ res = dev_eth_probe(dev);
-+ if (res == 0) {
-+ /* This was added in v0.1.8 of the driver. It seems that we need to
-+ * enable the port before the user can set a mac address for the port
-+ * using 'ifconfig hw ether ...'. To enable the port we must first
-+ * register Q callbacks, so we register the portDisable callbacks to
-+ * ensure that no buffers are passed up to the kernel until the port is
-+ * brought up properly (ifconfig up)
-+ */
-+ if ((ixRes = ixEthAccPortTxDoneCallbackRegister(pdev->id,
-+ tx_done_disable_cb,
-+ (UINT32)dev)))
-
-- TRACE;
-+ {
-+ TRACE;
-+ res = convert_error_ethAcc(ixRes);
-+ goto out;
-+ }
-+ if ((ixRes = ixEthAccPortRxCallbackRegister(pdev->id,
-+ rx_disable_cb,
-+ (UINT32)dev)))
-+ {
-+ TRACE;
-+ res = convert_error_ethAcc(ixRes);
-+ goto out;
-+ }
-+ port_enable(ndev);
-+ } else {
-+ dev_set_drvdata(dev, NULL);
-+ kfree(ndev);
-+ }
-+out:
-+ return res;
-+}
-
-+static int __devexit npe_eth_fini_device(struct device *dev)
-+{
-+ struct net_device *ndev = dev_get_drvdata(dev);
-+ dev_set_drvdata(dev, NULL);
-+ unregister_netdev(ndev);
-+ kfree(ndev);
- return 0;
- }
-
--
- /* Module initialization and cleanup */
-
- #ifdef MODULE
-
--static struct net_device ixp425_devices[IX_ETH_ACC_NUMBER_OF_PORTS];
-+static struct device_driver npe_eth_driver = {
-+ .name = DRV_NAME,
-+ .bus = &platform_bus_type,
-+ .probe = npe_eth_init_device,
-+ .remove = npe_eth_fini_device,
-+};
-
--int init_module(void)
--{
-- int res, dev_count;
-- IxEthAccPortId portId;
-- struct net_device *dev;
-+static struct platform_device npe_eth_devs[] = {
-+ {
-+ .name = DRV_NAME,
-+ .id = IX_ETH_PORT_1,
-+ },
-+ {
-+ .name = DRV_NAME,
-+ .id = IX_ETH_PORT_2,
-+ }
-+};
-
-- TRACE;
-+static int __init ixp425_eth_init(void)
-+{
-+ int res;
-
-- P_INFO("Initializing IXP425 NPE Ethernet driver software v. " MODULE_VERSION " \n");
-+ P_INFO("Initializing IXP425 NPE Ethernet driver software v. " DRV_VERSION " \n");
-
- TRACE;
-
-@@ -3037,82 +2947,16 @@
-
- TRACE;
-
-- /* Initialise the driver structure */
-- for (dev_count = 0;
-- dev_count < dev_max_count; /* module parameter */
-- dev_count++)
-- {
-- portId = default_portId[dev_count];
--
-- dev = &ixp425_devices[dev_count];
--
-- dev->init = dev_eth_probe;
--
-- TRACE;
--
-- if ((res = register_netdev(dev)))
-- {
-- TRACE;
--
-- P_ERROR("Failed to register netdev. res = %d\n", res);
-- return res;
-- }
--
-- TRACE;
--
-- /* register "safe" callbacks. This ensure that no traffic will be
-- * sent to the stack until the port is brought up (ifconfig up)
-- */
-- if ((res = ixEthAccPortTxDoneCallbackRegister(portId,
-- tx_done_disable_cb,
-- (UINT32)dev)))
--
-- {
-- TRACE;
-- return convert_error_ethAcc(res);
-- }
-- if ((res = ixEthAccPortRxCallbackRegister(portId,
-- rx_disable_cb,
-- (UINT32)dev)))
-- {
-- TRACE;
-- return convert_error_ethAcc(res);
-- }
-- }
--
-- TRACE;
--
-- if (no_csr_init == 0 && datapath_poll != 0 ) /* module parameter */
-- {
-- /* The QMgr dispatch entry point is called from the
-- * IX_OSAL_IXP400_QM1_IRQ_LVL irq (which will trigger
-- * an interrupt for every packet)
-- * This function setup the datapath in polling mode
-- * for better performances.
-- */
--
-- if ((res = ethAcc_datapath_poll_setup()))
-- {
-- TRACE;
-- return res;
-- }
-- }
--
-- TRACE;
--
-- /* initialise the DB Maintenance task mutex */
-- maintenance_mutex = (struct semaphore *) kmalloc(sizeof(struct semaphore), GFP_KERNEL);
-- if (!maintenance_mutex)
-+ npe_eth_workqueue = create_workqueue(DRV_NAME);
-+ if (npe_eth_workqueue == NULL)
- return -ENOMEM;
-
-- init_MUTEX(maintenance_mutex);
--
- TRACE;
-
- /* Do not start the EthDB maintenance thread if learning & filtering feature is disabled */
- if (npe_learning) /* module parameter */
- {
-- maintenance_timer_set();
-+ schedule_db_maintenance();
- }
-
- TRACE;
-@@ -3127,12 +2971,29 @@
- }
- netdev_max_backlog /= BACKLOG_TUNE;
-
-+ res = driver_register(&npe_eth_driver);
-+ if (res != 0) {
-+ P_ERROR("Failed to register NPE EThernet driver (res = %d)\n", res);
-+ return res;
-+ }
-+
- TRACE;
-
-+ res = platform_device_register(&npe_eth_devs[0]);
-+ if (res != 0) {
-+ P_ERROR("Failed to register NPE platform device 0 (res = %d)\n", res);
-+ return res;
-+ }
-+ res = platform_device_register(&npe_eth_devs[1]);
-+ if (res != 0) {
-+ P_ERROR("Failed to register NPE platform device 1 (res = %d)\n", res);
-+ return res;
-+ }
-+
- return 0;
- }
-
--void cleanup_module(void)
-+static void __exit ixp425_eth_exit(void)
- {
- int dev_count;
-
-@@ -3147,7 +3008,9 @@
- {
- TRACE;
-
-+#ifdef IXP425ETH_POLLING_MODE
- dev_pmu_timer_disable(); /* stop the timer */
-+#endif
-
- if (irq_pmu_used)
- {
-@@ -3169,19 +3032,10 @@
-
- TRACE;
-
-- /* stop the maintenance timer */
-- maintenance_timer_clear();
--
-- TRACE;
--
-- /* Wait for maintenance task to complete (if started) */
-- if (npe_learning) /* module parameter */
-- {
-- TRACE;
--
-- down(maintenance_mutex);
-- up(maintenance_mutex);
-- }
-+ /* stop the maintenance timer and destroy the driver's work queue */
-+ cancel_db_maintenance();
-+ flush_workqueue(npe_eth_workqueue);
-+ destroy_workqueue(npe_eth_workqueue);
-
- TRACE;
-
-@@ -3194,37 +3048,39 @@
- dev_count < dev_max_count; /* module parameter */
- dev_count++)
- {
-- struct net_device *dev = &ixp425_devices[dev_count];
-- priv_data_t *priv = dev->priv;
-- if (priv != NULL)
-+ IxEthAccPortId portId = default_portId[dev_count];
-+
-+ if (default_npeImageId[portId] == IX_ETH_NPE_B_IMAGE_ID)
- {
-- IxEthAccPortId portId = default_portId[dev_count];
--
-- if (default_npeImageId[portId] == IX_ETH_NPE_B_IMAGE_ID)
-+ if (IX_SUCCESS != ixNpeDlNpeStopAndReset(IX_NPEDL_NPEID_NPEB))
- {
-- if (IX_SUCCESS != ixNpeDlNpeStopAndReset(IX_NPEDL_NPEID_NPEB))
-- {
-- P_NOTICE("Error Halting NPE for Ethernet port %d!\n", portId);
-- }
-+ P_NOTICE("Error Halting NPE for Ethernet port %d!\n", portId);
- }
-- if (default_npeImageId[portId] == IX_ETH_NPE_C_IMAGE_ID)
-+ }
-+ if (default_npeImageId[portId] == IX_ETH_NPE_C_IMAGE_ID)
-+ {
-+ if (IX_SUCCESS != ixNpeDlNpeStopAndReset(IX_NPEDL_NPEID_NPEC))
- {
-- if (IX_SUCCESS != ixNpeDlNpeStopAndReset(IX_NPEDL_NPEID_NPEC))
-- {
-- P_NOTICE("Error Halting NPE for Ethernet port %d!\n", portId);
-- }
-+ P_NOTICE("Error Halting NPE for Ethernet port %d!\n", portId);
- }
-- unregister_netdev(dev);
-- kfree(dev->priv);
-- dev->priv = NULL;
- }
- }
-
- TRACE;
-
-+ driver_unregister(&npe_eth_driver);
-+ platform_device_unregister(&npe_eth_devs[1]);
-+ platform_device_unregister(&npe_eth_devs[0]);
-+
-+ TRACE;
-+
- P_VERBOSE("IXP425 NPE Ethernet driver software uninstalled\n");
- }
-
- #endif /* MODULE */
-
-+module_init(ixp425_eth_init);
-+module_exit(ixp425_eth_exit);
-+
-+
-
diff --git a/recipes/ixp425-eth/ixp425-eth-1.2/makefile.patch b/recipes/ixp425-eth/ixp425-eth-1.2/makefile.patch
deleted file mode 100644
index f26c28e351..0000000000
--- a/recipes/ixp425-eth/ixp425-eth-1.2/makefile.patch
+++ /dev/null
@@ -1,11 +0,0 @@
---- ./Makefile 2005-10-01 00:36:42.634757244 -0700
-+++ ./Makefile 2005-10-01 00:39:00.107407852 -0700
-@@ -6,7 +6,7 @@
-
- OSAL_DIR := $(IX_XSCALE_SW)/../ixp_osal
- CFLAGS_ixp425_eth.o = -DWall \
-- -I$(IX_XSCALE_SW)/src/include \
-+ -I$(IXP4XX_CSR_DIR) \
- -I$(OSAL_DIR)/ \
- -I$(OSAL_DIR)/os/linux/include/ \
- -I$(OSAL_DIR)/os/linux/include/modules/ \
diff --git a/recipes/ixp425-eth/ixp425-eth_1.1.bb b/recipes/ixp425-eth/ixp425-eth_1.1.bb
deleted file mode 100644
index 92e11e3fd2..0000000000
--- a/recipes/ixp425-eth/ixp425-eth_1.1.bb
+++ /dev/null
@@ -1,46 +0,0 @@
-DEPENDS = "ixp4xx-csr patcher-native"
-LICENSE = "GPL"
-SRC_URI = "http://www.intel.com/design/network/swsup/ixp400LinuxEthernetDriverPatch-1_1.zip \
- http://nslu.sourceforge.net/downloads/ixp425_eth.c.patch \
- file://makefile.patch;patch=1 \
- file://ethhdr.patch;patch=1 \
- file://intdriven.patch;patch=1 \
- file://pollcontroller.patch;patch=1 \
- file://mm4.patch;patch=1"
-SRC_URI += "file://2.6.13.patch;patch=1"
-SRC_URI += "file://2.6.14.patch;patch=1"
-SRC_URI += "file://modprobe.conf"
-PR = "r15"
-
-RDEPENDS = "ixp4xx-csr"
-
-S = "${WORKDIR}"
-
-COMPATIBLE_HOST = "^armeb-linux.*"
-
-PROVIDES = "virtual/ixp-eth"
-RPROVIDES = "ixp-eth"
-
-inherit module
-
-do_pre_patch () {
- patcher -p 0 -i ixp425_eth_1_1_update_nf_bridge.patch
- patcher -f -p 0 -i ixp425_eth.c.patch
-}
-
-addtask pre_patch before do_patch
-
-do_compile () {
- unset CFLAGS CPPFLAGS CXXFLAGS LDFLAGS
- oe_runmake 'KDIR=${STAGING_KERNEL_DIR}' \
- 'CC=${KERNEL_CC}' \
- 'LD=${KERNEL_LD}' \
- 'EXTRA_CFLAGS=-I${STAGING_INCDIR}/linux/ixp4xx-csr -I${STAGING_KERNEL_DIR}/include -DCPU=33 -DXSCALE=33'
-}
-
-do_install () {
- install -d ${D}${base_libdir}/modules/${KERNEL_VERSION}/kernel/drivers/net
- install -m 0644 ixp425_eth.ko ${D}${base_libdir}/modules/${KERNEL_VERSION}/kernel/drivers/net/
- install -d ${D}${sysconfdir}/modprobe.d
- install -m 0644 modprobe.conf ${D}${sysconfdir}/modprobe.d/eth0
-}
diff --git a/recipes/ixp425-eth/ixp425-eth_1.2.bb b/recipes/ixp425-eth/ixp425-eth_1.2.bb
deleted file mode 100644
index 9d537d9126..0000000000
--- a/recipes/ixp425-eth/ixp425-eth_1.2.bb
+++ /dev/null
@@ -1,46 +0,0 @@
-# This is the Intel GPL IXP4XX ethernet driver (Linux) plus patches
-# to make it work on 2.6 kernels.
-#
-LICENSE = "GPL"
-SRC_URI = "ftp://download.intel.com/design/network/swsup/ixp400linuxethernetdriverpatch-1_2.zip"
-SRC_URI += "file://ixp400linuxethernetdriver-1_2-kernel26_hr_20050929.patch;patch=1"
-SRC_URI += "file://makefile.patch;patch=1"
-SRC_URI += "file://2.6.13.patch;patch=1"
-SRC_URI += "file://2.6.14.patch;patch=1"
-SRC_URI += "file://modprobe.conf"
-PR = "r4"
-
-DEPENDS = "ixp4xx-csr"
-RDEPENDS = "ixp4xx-csr"
-
-S = "${WORKDIR}"
-
-COMPATIBLE_HOST = "^armeb-linux.*"
-
-PROVIDES = "virtual/ixp-eth"
-RPROVIDES = "ixp-eth"
-
-inherit module
-
-# This is a somewhat arbitrary choice:
-OSAL_DIR = "${STAGING_KERNEL_DIR}/ixp_osal"
-
-EXTRA_OEMAKE = "'CC=${KERNEL_CC}' \
- 'LD=${KERNEL_LD}' \
- 'IXP4XX_CSR_DIR=${STAGING_INCDIR}/linux/ixp4xx-csr' \
- 'OSAL_DIR=${OSAL_DIR}' \
- 'LINUX_SRC=${STAGING_KERNEL_DIR}' \
- 'LINUX_CROSS_COMPILE=${HOST_PREFIX}' \
- "
-
-do_compile () {
- unset CFLAGS CPPFLAGS CXXFLAGS LDFLAGS
- oe_runmake
-}
-
-do_install () {
- install -d ${D}${base_libdir}/modules/${KERNEL_VERSION}/kernel/drivers/net
- install -m 0644 ixp425_eth.ko ${D}${base_libdir}/modules/${KERNEL_VERSION}/kernel/drivers/net/
- install -d ${D}${sysconfdir}/modprobe.d
- install -m 0644 modprobe.conf ${D}${sysconfdir}/modprobe.d/eth0
-}
diff --git a/recipes/ixp4xx/ixp-osal-1.5/2.6.patch b/recipes/ixp4xx/ixp-osal-1.5/2.6.patch
deleted file mode 100644
index 3e47fe28de..0000000000
--- a/recipes/ixp4xx/ixp-osal-1.5/2.6.patch
+++ /dev/null
@@ -1,413 +0,0 @@
-diff -Naur ixp_osal.orig/Makefile ixp_osal/Makefile
---- ixp_osal.orig/Makefile 2005-08-24 00:16:37.000000000 +0200
-+++ ixp_osal/Makefile 2005-08-24 00:18:02.000000000 +0200
-@@ -172,7 +172,7 @@
-
- # TODO push this to linux make
- ifeq ($(IX_OSAL_MK_HOST_OS), linux)
--INCLUDE_DIRS += $(LINUX_SRC)/include/asm-arm/arch-ixp425/
-+INCLUDE_DIRS += $(LINUX_SRC)/include/asm-arm/arch-ixp4xx/
- endif
-
- CFLAGS += $(INCLUDE_DIRS:%=-I%)
-diff -Naur ixp_osal.orig/include/linux-2.6.h ixp_osal/include/linux-2.6.h
---- ixp_osal.orig/include/linux-2.6.h 1970-01-01 01:00:00.000000000 +0100
-+++ ixp_osal/include/linux-2.6.h 2005-08-26 15:20:23.000000000 +0200
-@@ -0,0 +1,52 @@
-+/* */
-+
-+#include "asm/page.h"
-+
-+#if !defined (IXP425_TIMER_BASE_PHYS)
-+# define IXP425_TIMER_BASE_PHYS IXP4XX_TIMER_BASE_PHYS
-+#endif
-+#if !defined (IRQ_IXP425_XSCALE_PMU)
-+# define IRQ_IXP425_XSCALE_PMU IRQ_IXP4XX_XSCALE_PMU
-+#endif
-+#if !defined (IXP425_QMGR_BASE_PHYS)
-+# define IXP425_QMGR_BASE_PHYS IXP4XX_QMGR_BASE_PHYS
-+#endif
-+#if !defined (IXP425_PERIPHERAL_BASE_PHYS)
-+# define IXP425_PERIPHERAL_BASE_PHYS IXP4XX_PERIPHERAL_BASE_PHYS
-+#endif
-+#if !defined (IXP425_PERIPHERAL_BASE_VIRT)
-+# define IXP425_PERIPHERAL_BASE_VIRT IXP4XX_PERIPHERAL_BASE_VIRT
-+#endif
-+#if !defined (IXP425_EXP_CFG_BASE_PHYS)
-+# define IXP425_EXP_CFG_BASE_PHYS IXP4XX_EXP_CFG_BASE_PHYS
-+#endif
-+#if !defined (IXP425_EXP_CFG_BASE_VIRT)
-+# define IXP425_EXP_CFG_BASE_VIRT IXP4XX_EXP_CFG_BASE_VIRT
-+#endif
-+#if !defined (IXP425_PCI_CFG_BASE_PHYS)
-+# define IXP425_PCI_CFG_BASE_PHYS IXP4XX_PCI_CFG_BASE_PHYS
-+#endif
-+#if !defined (IXP425_PCI_CFG_BASE_VIRT)
-+# define IXP425_PCI_CFG_BASE_VIRT IXP4XX_PCI_CFG_BASE_VIRT
-+#endif
-+#if !defined (IXP425_EXP_BUS_BASE2_PHYS)
-+# define IXP425_EXP_BUS_BASE2_PHYS IXP4XX_EXP_BUS_CS2_BASE_PHYS
-+#endif
-+#if !defined (IXP425_EthA_BASE_PHYS)
-+# define IXP425_EthA_BASE_PHYS (IXP4XX_PERIPHERAL_BASE_PHYS + 0x9000)
-+#endif
-+#if !defined (IXP425_EthB_BASE_PHYS)
-+# define IXP425_EthB_BASE_PHYS (IXP4XX_PERIPHERAL_BASE_PHYS + 0xA000)
-+#endif
-+#if !defined (IXP425_ICMR)
-+# define IXP425_ICMR IXP4XX_ICMR
-+#endif
-+#if !defined (IXP425_USB_BASE_PHYS)
-+# define IXP425_USB_BASE_PHYS IXP4XX_USB_BASE_PHYS
-+#endif
-+#if !defined (IXP425_INTC_BASE_PHYS)
-+# define IXP425_INTC_BASE_PHYS IXP4XX_INTC_BASE_PHYS
-+#endif
-+#if !defined (IRQ_IXP425_USB)
-+# define IRQ_IXP425_USB IRQ_IXP4XX_USB
-+#endif
-diff -Naur ixp_osal.orig/os/linux/include/core/IxOsalOs.h ixp_osal/os/linux/include/core/IxOsalOs.h
---- ixp_osal.orig/os/linux/include/core/IxOsalOs.h 2005-08-24 00:16:37.000000000 +0200
-+++ ixp_osal/os/linux/include/core/IxOsalOs.h 2005-08-26 01:56:22.000000000 +0200
-@@ -56,6 +56,7 @@
- #include <linux/cache.h>
- #include <linux/mm.h>
- #include <linux/config.h>
-+#include <linux/version.h>
- #include <asm/pgalloc.h>
-
- /**
-@@ -66,9 +67,23 @@
-
- #define IX_OSAL_OS_MMU_PHYS_TO_VIRT(addr) ((addr) ? phys_to_virt((unsigned int)(addr)) : 0)
-
--#define IX_OSAL_OS_CACHE_INVALIDATE(addr, size) ( invalidate_dcache_range((__u32)addr, (__u32)addr + size ))
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,0))
-+/*
-+ * 2.6 kernels do not export the required cache functions.
-+ */
-+extern void ixOsalCacheInvalidateRange(unsigned long start, unsigned long size);
-+extern void ixOsalCacheFlushRange(unsigned long start, unsigned long size);
-+
-+#define IX_OSAL_OS_CACHE_INVALIDATE(addr, size) \
-+ixOsalCacheInvalidateRange((unsigned long)addr, (unsigned long)addr + size)
-+#define IX_OSAL_OS_CACHE_FLUSH(addr, size) \
-+ixOsalCacheFlushRange((unsigned long)addr, (unsigned long)addr + size )
-
-+#else
-+
-+#define IX_OSAL_OS_CACHE_INVALIDATE(addr, size) ( invalidate_dcache_range((__u32)addr, (__u32)addr + size ))
- #define IX_OSAL_OS_CACHE_FLUSH(addr, size) ( clean_dcache_range((__u32)addr, (__u32)addr + size ))
-+#endif /* (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,0)) */
-
- #define printf printk /* For backword compatibility, needs to move to better location */
-
-diff -Naur ixp_osal.orig/os/linux/include/platforms/ixp400/IxOsalOsIxp400.h ixp_osal/os/linux/include/platforms/ixp400/IxOsalOsIxp400.h
---- ixp_osal.orig/os/linux/include/platforms/ixp400/IxOsalOsIxp400.h 2005-08-24 00:16:37.000000000 +0200
-+++ ixp_osal/os/linux/include/platforms/ixp400/IxOsalOsIxp400.h 2005-08-26 15:20:23.000000000 +0200
-@@ -53,6 +53,8 @@
- #include "asm/hardware.h"
- #include "asm/arch/irqs.h"
-
-+#include <linux-2.6.h> /* Glue */
-+
- /* physical addresses to be used when requesting memory with IX_OSAL_MEM_MAP */
- #define IX_OSAL_IXP400_INTC_PHYS_BASE IXP425_INTC_BASE_PHYS
- #define IX_OSAL_IXP400_GPIO_PHYS_BASE IXP425_GPIO_BASE_PHYS
-@@ -108,7 +110,6 @@
- #define IX_OSAL_IXP400_NPEB_VIRT_BASE IXP425_NPEB_BASE_VIRT
- #define IX_OSAL_IXP400_NPEC_VIRT_BASE IXP425_NPEC_BASE_VIRT
- #define IX_OSAL_IXP400_PERIPHERAL_VIRT_BASE IXP425_PERIPHERAL_BASE_VIRT
--#define IX_OSAL_IXP400_QMGR_VIRT_BASE IXP425_QMGR_BASE_VIRT
- #define IX_OSAL_IXP400_OSTS_VIRT_BASE IXP425_TIMER_BASE_VIRT
- #define IX_OSAL_IXP400_USB_VIRT_BASE IXP425_USB_BASE_VIRT
- #define IX_OSAL_IXP400_EXP_CFG_VIRT_BASE IXP425_EXP_CFG_BASE_VIRT
-@@ -239,12 +240,21 @@
- * Queue Manager
- */
- {
-+#ifdef IXP425_QMGR_BASE_VIRT
- IX_OSAL_STATIC_MAP, /* type */
- IX_OSAL_IXP400_QMGR_PHYS_BASE, /* physicalAddress */
- IX_OSAL_IXP400_QMGR_MAP_SIZE, /* size */
- IX_OSAL_IXP400_QMGR_VIRT_BASE, /* virtualAddress */
- NULL, /* mapFunction */
- NULL, /* unmapFunction */
-+#else
-+ IX_OSAL_DYNAMIC_MAP, /* type */
-+ IX_OSAL_IXP400_QMGR_PHYS_BASE, /* physicalAddress */
-+ IX_OSAL_IXP400_QMGR_MAP_SIZE, /* size */
-+ 0, /* virtualAddress */
-+ ixOsalLinuxMemMap, /* mapFunction */
-+ ixOsalLinuxMemUnmap, /* unmapFunction */
-+#endif
- 0, /* refCount */
- IX_OSAL_BE | IX_OSAL_LE_DC, /* endianType */
- "qMgr" /* name */
-diff -Naur ixp_osal.orig/os/linux/make/macros.mk ixp_osal/os/linux/make/macros.mk
---- ixp_osal.orig/os/linux/make/macros.mk 2005-08-24 00:16:37.000000000 +0200
-+++ ixp_osal/os/linux/make/macros.mk 2005-08-26 15:17:37.000000000 +0200
-@@ -71,10 +71,12 @@
- ################################################################
- # Linux Compiler & linker commands
-
--ifeq ($(IX_OSAL_MK_TARGET_ENDIAN), linuxbe)
--LINUX_CROSS_COMPILE := $(HARDHAT_BASE)/devkit/arm/xscale_be/bin/xscale_be-
--else
--LINUX_CROSS_COMPILE := $(HARDHAT_BASE)/devkit/arm/xscale_le/bin/xscale_le-
-+ifeq "$(LINUX_CROSS_COMPILE)" ""
-+ ifeq ($(IX_OSAL_MK_TARGET_ENDIAN), linuxbe)
-+ LINUX_CROSS_COMPILE := $(HARDHAT_BASE)/devkit/arm/xscale_be/bin/xscale_be-
-+ else
-+ LINUX_CROSS_COMPILE := $(HARDHAT_BASE)/devkit/arm/xscale_le/bin/xscale_le-
-+ endif
- endif
-
- LINUX_SRC := $($(IX_TARGET)_KERNEL_DIR)
-@@ -91,9 +93,11 @@
- LINUX_MACH_CFLAGS := -D__LINUX_ARM_ARCH__=5 -mcpu=xscale -mtune=xscale
-
- CFLAGS := -D__KERNEL__ -I$(LINUX_SRC)/include -Wall -Wno-trigraphs -fno-common \
-- -pipe -mapcs-32 -mshort-load-bytes -msoft-float -DMODULE \
-+ -pipe -mapcs-32 -msoft-float -DMODULE \
- -D__linux -DCPU=33 -DXSCALE=33 $(LINUX_MACH_CFLAGS) -DEXPORT_SYMTAB
-
-+# -mshort-load-bytes removed by Marc Singer's patch TODO(hannes) why?
-+
- # Linux linker flags
- LDFLAGS := -r
-
-diff -Naur ixp_osal.orig/os/linux/src/core/IxOsalOsCacheMMU.c ixp_osal/os/linux/src/core/IxOsalOsCacheMMU.c
---- ixp_osal.orig/os/linux/src/core/IxOsalOsCacheMMU.c 2005-08-24 00:16:37.000000000 +0200
-+++ ixp_osal/os/linux/src/core/IxOsalOsCacheMMU.c 2005-08-26 01:56:22.000000000 +0200
-@@ -210,3 +210,59 @@
- free_pages ((unsigned int) memptr, order);
- }
- }
-+
-+
-+/*
-+ * 2.6 kernels do not export the required cache functions.
-+ */
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,0))
-+
-+#define _IX_STR(x) #x
-+#define IX_STR(x) _IX_STR(x)
-+#define IX_CLM IX_STR(IX_OSAL_CACHE_LINE_SIZE-1)
-+
-+/*
-+ * reimplementation of kernel's invalidate_dcache_range()
-+ */
-+void
-+ixOsalCacheInvalidateRange(unsigned long start, unsigned long size)
-+{
-+ __asm__
-+ (" tst %0, #" IX_CLM "\n"
-+ " mcrne p15, 0, %0, c7, c10, 1 @ clean D cache line\n"
-+ " bic %0, %0, #" IX_CLM "\n"
-+ " tst %1, #" IX_CLM "\n"
-+ " mcrne p15, 0, %1, c7, c10, 1 @ clean D cache line\n"
-+ "1: mcr p15, 0, %0, c7, c6, 1 @ invalidate D cache line\n"
-+ " add %0, %0, #" IX_STR(IX_OSAL_CACHE_LINE_SIZE) "\n"
-+ " cmp %0, %1\n"
-+ " blo 1b\n"
-+ " mcr p15, 0, %0, c7, c10, 4 @ drain write & fill buffer\n"
-+ : /* no output */
-+ : "r"(start), "r"(size)
-+ : "cc");
-+}
-+
-+/*
-+ * reimplementation of kernel's invalidate_dcache_range()
-+ */
-+void
-+ixOsalCacheFlushRange(unsigned long start, unsigned long size)
-+{
-+ __asm__
-+ (" bic %0, %0, #" IX_CLM "\n"
-+ "1: mcr p15, 0, %0, c7, c10, 1 @ clean D cache line\n"
-+ " add %0, %0, #" IX_STR(IX_OSAL_CACHE_LINE_SIZE) "\n"
-+ " cmp %0, %1\n"
-+ " blo 1b\n"
-+ " mcr p15, 0, %0, c7, c10, 4 @ drain write & fill buffer\n"
-+ : /* no output */
-+ : "r"(start), "r"(size)
-+ : "cc");
-+}
-+
-+#undef _IX_STR
-+#undef IX_STR
-+#undef IX_CLM
-+
-+#endif /* (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,0)) */
-diff -Naur ixp_osal.orig/os/linux/src/core/IxOsalOsMsgQ.c ixp_osal/os/linux/src/core/IxOsalOsMsgQ.c
---- ixp_osal.orig/os/linux/src/core/IxOsalOsMsgQ.c 2005-08-24 00:16:37.000000000 +0200
-+++ ixp_osal/os/linux/src/core/IxOsalOsMsgQ.c 2005-08-24 00:18:02.000000000 +0200
-@@ -45,9 +45,9 @@
- * -- End Intel Copyright Notice --
- */
- #include <linux/linkage.h>
-+#include <linux/spinlock.h>
- #include <linux/ipc.h>
- #include <linux/msg.h>
--#include <linux/spinlock.h>
- #include <linux/interrupt.h>
-
- #include "IxOsal.h"
-diff -Naur ixp_osal.orig/os/linux/src/core/IxOsalOsSemaphore.c ixp_osal/os/linux/src/core/IxOsalOsSemaphore.c
---- ixp_osal.orig/os/linux/src/core/IxOsalOsSemaphore.c 2005-08-24 00:16:37.000000000 +0200
-+++ ixp_osal/os/linux/src/core/IxOsalOsSemaphore.c 2005-08-26 15:58:16.000000000 +0200
-@@ -46,7 +46,7 @@
- */
-
- #include <linux/slab.h>
--#include <asm-arm/hardirq.h>
-+#include <linux/hardirq.h>
- #include "IxOsal.h"
-
- /* Define a large number */
-@@ -93,7 +93,7 @@
- {
-
- IX_STATUS ixStatus = IX_SUCCESS;
-- UINT32 timeoutTime;
-+ unsigned long timeoutTime;
-
- if (sid == NULL)
- {
-diff -Naur ixp_osal.orig/os/linux/src/core/IxOsalOsServices.c ixp_osal/os/linux/src/core/IxOsalOsServices.c
---- ixp_osal.orig/os/linux/src/core/IxOsalOsServices.c 2005-08-24 00:16:37.000000000 +0200
-+++ ixp_osal/os/linux/src/core/IxOsalOsServices.c 2005-08-26 15:53:22.000000000 +0200
-@@ -53,6 +53,7 @@
- #include <linux/time.h>
- #include <linux/sched.h>
- #include <linux/slab.h>
-+#include <linux/interrupt.h>
-
- #include "IxOsal.h"
-
-@@ -88,7 +89,7 @@
- /*
- * General interrupt handler
- */
--static void
-+static irqreturn_t
- ixOsalOsIsrProxy (int irq, void *dev_id, struct pt_regs *regs)
- {
- IxOsalInfoType *isr_proxy_info = (IxOsalInfoType *) dev_id;
-@@ -97,6 +98,7 @@
- "ixOsalOsIsrProxy: Interrupt used before ixOsalIrqBind was invoked");
-
- isr_proxy_info->routine (isr_proxy_info->parameter);
-+ return IRQ_HANDLED;
- }
-
- /*
-@@ -104,11 +106,12 @@
- * This handler saves the interrupted Program Counter (PC)
- * into a global variable
- */
--static void
-+static irqreturn_t
- ixOsalOsIsrProxyWithPC (int irq, void *dev_id, struct pt_regs *regs)
- {
- ixOsalLinuxInterruptedPc = regs->ARM_pc;
- ixOsalOsIsrProxy(irq, dev_id, regs);
-+ return IRQ_HANDLED;
- }
-
- /**************************************
-@@ -190,10 +193,15 @@
- PUBLIC UINT32
- ixOsalIrqLock ()
- {
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,0))
-+ unsigned long flags;
-+ local_irq_save(flags);
-+#else
- UINT32 flags;
- save_flags (flags);
- cli ();
-- return flags;
-+#endif
-+ return (UINT32)flags;
- }
-
- /* Enable interrupts and task scheduling,
-@@ -203,7 +211,11 @@
- PUBLIC void
- ixOsalIrqUnlock (UINT32 lockKey)
- {
-+# if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,0))
-+ local_irq_restore((unsigned long)lockKey);
-+# else
- restore_flags (lockKey);
-+# endif
- }
-
- PUBLIC UINT32
-@@ -315,10 +327,11 @@
- PUBLIC void
- ixOsalSleep (UINT32 milliseconds)
- {
-- if (milliseconds != 0)
-+ signed long delay = milliseconds*HZ;
-+ if ( delay >= 1000 )
- {
- current->state = TASK_INTERRUPTIBLE;
-- schedule_timeout ((milliseconds * HZ) / 1000);
-+ schedule_timeout (delay / 1000);
- }
- else
- {
-diff -Naur ixp_osal.orig/os/linux/src/core/IxOsalOsSymbols.c ixp_osal/os/linux/src/core/IxOsalOsSymbols.c
---- ixp_osal.orig/os/linux/src/core/IxOsalOsSymbols.c 2005-08-24 00:16:37.000000000 +0200
-+++ ixp_osal/os/linux/src/core/IxOsalOsSymbols.c 2005-08-30 19:19:33.000000000 +0200
-@@ -64,6 +64,10 @@
-
- EXPORT_SYMBOL (ixOsalCacheDmaMalloc);
- EXPORT_SYMBOL (ixOsalCacheDmaFree);
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,0))
-+EXPORT_SYMBOL (ixOsalCacheInvalidateRange);
-+EXPORT_SYMBOL (ixOsalCacheFlushRange);
-+#endif
-
- EXPORT_SYMBOL (ixOsalThreadCreate);
- EXPORT_SYMBOL (ixOsalThreadStart);
-diff -Naur ixp_osal.orig/os/linux/src/core/IxOsalOsThread.c ixp_osal/os/linux/src/core/IxOsalOsThread.c
---- ixp_osal.orig/os/linux/src/core/IxOsalOsThread.c 2005-08-24 00:16:37.000000000 +0200
-+++ ixp_osal/os/linux/src/core/IxOsalOsThread.c 2005-08-26 00:50:32.000000000 +0200
-@@ -46,6 +46,7 @@
- */
-
- #include <linux/sched.h>
-+#include <linux/version.h>
-
- #include "IxOsal.h"
-
-@@ -65,11 +66,11 @@
- void *arg = IxOsalOsThreadData.arg;
- static int seq = 0;
-
-- daemonize ();
-+ daemonize ("IxOsal %d", ++seq);
-
-+#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,0))
- exit_files (current);
--
-- snprintf(current->comm, sizeof(current->comm), "IxOsal %d", ++seq);
-+#endif
-
- up (&IxOsalThreadMutex);
-
-diff -Naur ixp_osal.orig/os/linux/src/modules/ioMem/IxOsalOsIoMem.c ixp_osal/os/linux/src/modules/ioMem/IxOsalOsIoMem.c
---- ixp_osal.orig/os/linux/src/modules/ioMem/IxOsalOsIoMem.c 2005-08-24 00:16:37.000000000 +0200
-+++ ixp_osal/os/linux/src/modules/ioMem/IxOsalOsIoMem.c 2005-08-24 00:18:02.000000000 +0200
-@@ -45,6 +45,7 @@
- * -- End Intel Copyright Notice --
- */
-
-+#include <asm/page.h>
- #include <asm/io.h>
- #include <linux/ioport.h>
-
diff --git a/recipes/ixp4xx/ixp-osal-2.0/2.6.patch b/recipes/ixp4xx/ixp-osal-2.0/2.6.patch
deleted file mode 100644
index 6c143859a4..0000000000
--- a/recipes/ixp4xx/ixp-osal-2.0/2.6.patch
+++ /dev/null
@@ -1,363 +0,0 @@
-diff -Naur ixp_osal.orig/include/linux-2.6.h ixp_osal/include/linux-2.6.h
---- ixp_osal.orig/include/linux-2.6.h 1970-01-01 01:00:00.000000000 +0100
-+++ ixp_osal/include/linux-2.6.h 2005-08-26 15:20:23.000000000 +0200
-@@ -0,0 +1,52 @@
-+/* */
-+
-+#include "asm/page.h"
-+
-+#if !defined (IXP425_TIMER_BASE_PHYS)
-+# define IXP425_TIMER_BASE_PHYS IXP4XX_TIMER_BASE_PHYS
-+#endif
-+#if !defined (IRQ_IXP425_XSCALE_PMU)
-+# define IRQ_IXP425_XSCALE_PMU IRQ_IXP4XX_XSCALE_PMU
-+#endif
-+#if !defined (IXP425_QMGR_BASE_PHYS)
-+# define IXP425_QMGR_BASE_PHYS IXP4XX_QMGR_BASE_PHYS
-+#endif
-+#if !defined (IXP425_PERIPHERAL_BASE_PHYS)
-+# define IXP425_PERIPHERAL_BASE_PHYS IXP4XX_PERIPHERAL_BASE_PHYS
-+#endif
-+#if !defined (IXP425_PERIPHERAL_BASE_VIRT)
-+# define IXP425_PERIPHERAL_BASE_VIRT IXP4XX_PERIPHERAL_BASE_VIRT
-+#endif
-+#if !defined (IXP425_EXP_CFG_BASE_PHYS)
-+# define IXP425_EXP_CFG_BASE_PHYS IXP4XX_EXP_CFG_BASE_PHYS
-+#endif
-+#if !defined (IXP425_EXP_CFG_BASE_VIRT)
-+# define IXP425_EXP_CFG_BASE_VIRT IXP4XX_EXP_CFG_BASE_VIRT
-+#endif
-+#if !defined (IXP425_PCI_CFG_BASE_PHYS)
-+# define IXP425_PCI_CFG_BASE_PHYS IXP4XX_PCI_CFG_BASE_PHYS
-+#endif
-+#if !defined (IXP425_PCI_CFG_BASE_VIRT)
-+# define IXP425_PCI_CFG_BASE_VIRT IXP4XX_PCI_CFG_BASE_VIRT
-+#endif
-+#if !defined (IXP425_EXP_BUS_BASE2_PHYS)
-+# define IXP425_EXP_BUS_BASE2_PHYS IXP4XX_EXP_BUS_CS2_BASE_PHYS
-+#endif
-+#if !defined (IXP425_EthA_BASE_PHYS)
-+# define IXP425_EthA_BASE_PHYS (IXP4XX_PERIPHERAL_BASE_PHYS + 0x9000)
-+#endif
-+#if !defined (IXP425_EthB_BASE_PHYS)
-+# define IXP425_EthB_BASE_PHYS (IXP4XX_PERIPHERAL_BASE_PHYS + 0xA000)
-+#endif
-+#if !defined (IXP425_ICMR)
-+# define IXP425_ICMR IXP4XX_ICMR
-+#endif
-+#if !defined (IXP425_USB_BASE_PHYS)
-+# define IXP425_USB_BASE_PHYS IXP4XX_USB_BASE_PHYS
-+#endif
-+#if !defined (IXP425_INTC_BASE_PHYS)
-+# define IXP425_INTC_BASE_PHYS IXP4XX_INTC_BASE_PHYS
-+#endif
-+#if !defined (IRQ_IXP425_USB)
-+# define IRQ_IXP425_USB IRQ_IXP4XX_USB
-+#endif
-diff -Naur ixp_osal.orig/os/linux/include/core/IxOsalOs.h ixp_osal/os/linux/include/core/IxOsalOs.h
---- ixp_osal.orig/os/linux/include/core/IxOsalOs.h 2005-08-24 00:16:37.000000000 +0200
-+++ ixp_osal/os/linux/include/core/IxOsalOs.h 2005-08-26 01:56:22.000000000 +0200
-@@ -56,6 +56,7 @@
- #include <linux/cache.h>
- #include <linux/mm.h>
- #include <linux/config.h>
-+#include <linux/version.h>
- #include <asm/pgalloc.h>
-
- /**
-@@ -66,9 +67,23 @@
-
- #define IX_OSAL_OS_MMU_PHYS_TO_VIRT(addr) ((addr) ? phys_to_virt((unsigned int)(addr)) : 0)
-
--#define IX_OSAL_OS_CACHE_INVALIDATE(addr, size) ( invalidate_dcache_range((__u32)addr, (__u32)addr + size ))
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,0))
-+/*
-+ * 2.6 kernels do not export the required cache functions.
-+ */
-+extern void ixOsalCacheInvalidateRange(unsigned long start, unsigned long size);
-+extern void ixOsalCacheFlushRange(unsigned long start, unsigned long size);
-+
-+#define IX_OSAL_OS_CACHE_INVALIDATE(addr, size) \
-+ixOsalCacheInvalidateRange((unsigned long)addr, (unsigned long)addr + size)
-+#define IX_OSAL_OS_CACHE_FLUSH(addr, size) \
-+ixOsalCacheFlushRange((unsigned long)addr, (unsigned long)addr + size )
-
-+#else
-+
-+#define IX_OSAL_OS_CACHE_INVALIDATE(addr, size) ( invalidate_dcache_range((__u32)addr, (__u32)addr + size ))
- #define IX_OSAL_OS_CACHE_FLUSH(addr, size) ( clean_dcache_range((__u32)addr, (__u32)addr + size ))
-+#endif /* (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,0)) */
-
- #define printf printk /* For backword compatibility, needs to move to better location */
-
-diff -Naur ixp_osal.orig/os/linux/src/core/IxOsalOsCacheMMU.c ixp_osal/os/linux/src/core/IxOsalOsCacheMMU.c
---- ixp_osal.orig/os/linux/src/core/IxOsalOsCacheMMU.c 2005-08-24 00:16:37.000000000 +0200
-+++ ixp_osal/os/linux/src/core/IxOsalOsCacheMMU.c 2005-08-26 01:56:22.000000000 +0200
-@@ -210,3 +210,59 @@
- free_pages ((unsigned int) memptr, order);
- }
- }
-+
-+
-+/*
-+ * 2.6 kernels do not export the required cache functions.
-+ */
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,0))
-+
-+#define _IX_STR(x) #x
-+#define IX_STR(x) _IX_STR(x)
-+#define IX_CLM IX_STR(IX_OSAL_CACHE_LINE_SIZE-1)
-+
-+/*
-+ * reimplementation of kernel's invalidate_dcache_range()
-+ */
-+void
-+ixOsalCacheInvalidateRange(unsigned long start, unsigned long size)
-+{
-+ __asm__
-+ (" tst %0, #" IX_CLM "\n"
-+ " mcrne p15, 0, %0, c7, c10, 1 @ clean D cache line\n"
-+ " bic %0, %0, #" IX_CLM "\n"
-+ " tst %1, #" IX_CLM "\n"
-+ " mcrne p15, 0, %1, c7, c10, 1 @ clean D cache line\n"
-+ "1: mcr p15, 0, %0, c7, c6, 1 @ invalidate D cache line\n"
-+ " add %0, %0, #" IX_STR(IX_OSAL_CACHE_LINE_SIZE) "\n"
-+ " cmp %0, %1\n"
-+ " blo 1b\n"
-+ " mcr p15, 0, %0, c7, c10, 4 @ drain write & fill buffer\n"
-+ : /* no output */
-+ : "r"(start), "r"(size)
-+ : "cc");
-+}
-+
-+/*
-+ * reimplementation of kernel's invalidate_dcache_range()
-+ */
-+void
-+ixOsalCacheFlushRange(unsigned long start, unsigned long size)
-+{
-+ __asm__
-+ (" bic %0, %0, #" IX_CLM "\n"
-+ "1: mcr p15, 0, %0, c7, c10, 1 @ clean D cache line\n"
-+ " add %0, %0, #" IX_STR(IX_OSAL_CACHE_LINE_SIZE) "\n"
-+ " cmp %0, %1\n"
-+ " blo 1b\n"
-+ " mcr p15, 0, %0, c7, c10, 4 @ drain write & fill buffer\n"
-+ : /* no output */
-+ : "r"(start), "r"(size)
-+ : "cc");
-+}
-+
-+#undef _IX_STR
-+#undef IX_STR
-+#undef IX_CLM
-+
-+#endif /* (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,0)) */
-diff -Naur ixp_osal.orig/os/linux/src/core/IxOsalOsMsgQ.c ixp_osal/os/linux/src/core/IxOsalOsMsgQ.c
---- ixp_osal.orig/os/linux/src/core/IxOsalOsMsgQ.c 2005-08-24 00:16:37.000000000 +0200
-+++ ixp_osal/os/linux/src/core/IxOsalOsMsgQ.c 2005-08-24 00:18:02.000000000 +0200
-@@ -45,9 +45,9 @@
- * -- End Intel Copyright Notice --
- */
- #include <linux/linkage.h>
-+#include <linux/spinlock.h>
- #include <linux/ipc.h>
- #include <linux/msg.h>
--#include <linux/spinlock.h>
- #include <linux/interrupt.h>
-
- #include "IxOsal.h"
-diff -Naur ixp_osal.orig/os/linux/src/core/IxOsalOsSemaphore.c ixp_osal/os/linux/src/core/IxOsalOsSemaphore.c
---- ixp_osal.orig/os/linux/src/core/IxOsalOsSemaphore.c 2005-08-24 00:16:37.000000000 +0200
-+++ ixp_osal/os/linux/src/core/IxOsalOsSemaphore.c 2005-08-26 15:58:16.000000000 +0200
-@@ -46,7 +46,7 @@
- */
-
- #include <linux/slab.h>
--#include <asm-arm/hardirq.h>
-+#include <linux/hardirq.h>
- #include "IxOsal.h"
-
- /* Define a large number */
-@@ -93,7 +93,7 @@
- {
-
- IX_STATUS ixStatus = IX_SUCCESS;
-- UINT32 timeoutTime;
-+ unsigned long timeoutTime;
-
- if (sid == NULL)
- {
-diff -Naur ixp_osal.orig/os/linux/src/core/IxOsalOsSymbols.c ixp_osal/os/linux/src/core/IxOsalOsSymbols.c
---- ixp_osal.orig/os/linux/src/core/IxOsalOsSymbols.c 2005-08-24 00:16:37.000000000 +0200
-+++ ixp_osal/os/linux/src/core/IxOsalOsSymbols.c 2005-08-30 19:19:33.000000000 +0200
-@@ -64,6 +64,10 @@
-
- EXPORT_SYMBOL (ixOsalCacheDmaMalloc);
- EXPORT_SYMBOL (ixOsalCacheDmaFree);
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,0))
-+EXPORT_SYMBOL (ixOsalCacheInvalidateRange);
-+EXPORT_SYMBOL (ixOsalCacheFlushRange);
-+#endif
-
- EXPORT_SYMBOL (ixOsalThreadCreate);
- EXPORT_SYMBOL (ixOsalThreadStart);
-diff -Naur ixp_osal.orig/os/linux/src/modules/ioMem/IxOsalOsIoMem.c ixp_osal/os/linux/src/modules/ioMem/IxOsalOsIoMem.c
---- ixp_osal.orig/os/linux/src/modules/ioMem/IxOsalOsIoMem.c 2005-08-24 00:16:37.000000000 +0200
-+++ ixp_osal/os/linux/src/modules/ioMem/IxOsalOsIoMem.c 2005-08-24 00:18:02.000000000 +0200
-@@ -45,6 +45,7 @@
- * -- End Intel Copyright Notice --
- */
-
-+#include <asm/page.h>
- #include <asm/io.h>
- #include <linux/ioport.h>
-
---- ixp_osal/os/linux/include/platforms/ixp400/IxOsalOsIxp400.h.orig 2005-04-17 20:56:27.000000000 -0700
-+++ ixp_osal/os/linux/include/platforms/ixp400/IxOsalOsIxp400.h 2005-10-01 16:27:05.566984144 -0700
-@@ -53,6 +53,8 @@
- #include "asm/hardware.h"
- #include "asm/arch/irqs.h"
-
-+#include <linux-2.6.h> /* Glue */
-+
- /* physical addresses to be used when requesting memory with IX_OSAL_MEM_MAP */
- #define IX_OSAL_IXP400_INTC_PHYS_BASE IXP425_INTC_BASE_PHYS
- #define IX_OSAL_IXP400_GPIO_PHYS_BASE IXP425_GPIO_BASE_PHYS
-@@ -108,7 +110,6 @@
- #define IX_OSAL_IXP400_NPEB_VIRT_BASE IXP425_NPEB_BASE_VIRT
- #define IX_OSAL_IXP400_NPEC_VIRT_BASE IXP425_NPEC_BASE_VIRT
- #define IX_OSAL_IXP400_PERIPHERAL_VIRT_BASE IXP425_PERIPHERAL_BASE_VIRT
--#define IX_OSAL_IXP400_QMGR_VIRT_BASE IXP425_QMGR_BASE_VIRT
- #define IX_OSAL_IXP400_OSTS_VIRT_BASE IXP425_TIMER_BASE_VIRT
- #define IX_OSAL_IXP400_USB_VIRT_BASE IXP425_USB_BASE_VIRT
- #define IX_OSAL_IXP400_EXP_CFG_VIRT_BASE IXP425_EXP_CFG_BASE_VIRT
---- ixp_osal/os/linux/include/platforms/ixp400/ixp425/IxOsalOsIxp425Sys.h.orig 2005-04-17 20:56:27.000000000 -0700
-+++ ixp_osal/os/linux/include/platforms/ixp400/ixp425/IxOsalOsIxp425Sys.h 2005-10-01 16:31:05.670092880 -0700
-@@ -85,12 +85,21 @@
- * Queue Manager
- */
- {
-+#ifdef IXP425_QMGR_BASE_VIRT
- IX_OSAL_STATIC_MAP, /* type */
- IX_OSAL_IXP400_QMGR_PHYS_BASE, /* physicalAddress */
- IX_OSAL_IXP400_QMGR_MAP_SIZE, /* size */
- IX_OSAL_IXP400_QMGR_VIRT_BASE, /* virtualAddress */
- NULL, /* mapFunction */
- NULL, /* unmapFunction */
-+#else
-+ IX_OSAL_DYNAMIC_MAP, /* type */
-+ IX_OSAL_IXP400_QMGR_PHYS_BASE, /* physicalAddress */
-+ IX_OSAL_IXP400_QMGR_MAP_SIZE, /* size */
-+ 0, /* virtualAddress */
-+ ixOsalLinuxMemMap, /* mapFunction */
-+ ixOsalLinuxMemUnmap, /* unmapFunction */
-+#endif
- 0, /* refCount */
- IX_OSAL_BE | IX_OSAL_LE_DC, /* endianType */
- "qMgr" /* name */
---- ixp_osal/os/linux/src/core/IxOsalOsServices.c.orig 2005-04-17 20:56:28.000000000 -0700
-+++ ixp_osal/os/linux/src/core/IxOsalOsServices.c 2005-10-01 16:37:00.876444607 -0700
-@@ -54,6 +54,7 @@
- #include <linux/time.h>
- #include <linux/sched.h>
- #include <linux/slab.h>
-+#include <linux/interrupt.h>
-
- #include "IxOsal.h"
-
-@@ -89,7 +90,7 @@
- /*
- * General interrupt handler
- */
--static void
-+static irqreturn_t
- ixOsalOsIsrProxy (int irq, void *dev_id, struct pt_regs *regs)
- {
- IxOsalInfoType *isr_proxy_info = (IxOsalInfoType *) dev_id;
-@@ -98,6 +99,7 @@
- "ixOsalOsIsrProxy: Interrupt used before ixOsalIrqBind was invoked");
-
- isr_proxy_info->routine (isr_proxy_info->parameter);
-+ return IRQ_HANDLED;
- }
-
- /*
-@@ -105,11 +107,12 @@
- * This handler saves the interrupted Program Counter (PC)
- * into a global variable
- */
--static void
-+static irqreturn_t
- ixOsalOsIsrProxyWithPC (int irq, void *dev_id, struct pt_regs *regs)
- {
- ixOsalLinuxInterruptedPc = regs->ARM_pc;
- ixOsalOsIsrProxy(irq, dev_id, regs);
-+ return IRQ_HANDLED;
- }
-
- /**************************************
-@@ -191,10 +194,15 @@
- PUBLIC UINT32
- ixOsalIrqLock ()
- {
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,0))
-+ unsigned long flags;
-+ local_irq_save(flags);
-+#else
- UINT32 flags;
- save_flags (flags);
- cli ();
-- return flags;
-+#endif
-+ return (UINT32)flags;
- }
-
- /* Enable interrupts and task scheduling,
-@@ -204,7 +212,11 @@
- PUBLIC void
- ixOsalIrqUnlock (UINT32 lockKey)
- {
-+# if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,0))
-+ local_irq_restore((unsigned long)lockKey);
-+# else
- restore_flags (lockKey);
-+# endif
- }
-
- PUBLIC UINT32
-@@ -329,7 +341,7 @@
- PUBLIC void
- ixOsalSleep (UINT32 milliseconds)
- {
-- if (milliseconds != 0)
-+ if (milliseconds*HZ >= 1000)
- {
- set_current_state(TASK_INTERRUPTIBLE);
- schedule_timeout ((milliseconds * HZ) / 1000);
---- ixp_osal/os/linux/src/core/IxOsalOsThread.c.orig 2005-04-17 20:56:28.000000000 -0700
-+++ ixp_osal/os/linux/src/core/IxOsalOsThread.c 2005-10-01 16:38:58.227829064 -0700
-@@ -46,6 +46,7 @@
- */
-
- #include <linux/sched.h>
-+#include <linux/version.h>
-
- #include "IxOsal.h"
-
-@@ -65,12 +66,12 @@
- void *arg = IxOsalOsThreadData.arg;
- static int seq = 0;
-
-- daemonize ();
-+ daemonize ("IxOsal %d", ++seq);
-+#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,0))
- reparent_to_init ();
-
- exit_files (current);
--
-- snprintf(current->comm, sizeof(current->comm), "IxOsal %d", ++seq);
-+#endif
-
- up (&IxOsalThreadMutex);
-
diff --git a/recipes/ixp4xx/ixp-osal-2.0/Makefile.patch b/recipes/ixp4xx/ixp-osal-2.0/Makefile.patch
deleted file mode 100644
index f852ea2b26..0000000000
--- a/recipes/ixp4xx/ixp-osal-2.0/Makefile.patch
+++ /dev/null
@@ -1,27 +0,0 @@
-diff -Naur ixp_osal.orig/Makefile ixp_osal/Makefile
---- ixp_osal.orig/Makefile 2005-08-24 00:16:37.000000000 +0200
-+++ ixp_osal/Makefile 2005-08-24 00:18:02.000000000 +0200
-@@ -172,7 +172,7 @@
-
- # TODO push this to linux make
- ifeq ($(IX_OSAL_MK_HOST_OS), linux)
--INCLUDE_DIRS += $(LINUX_SRC)/include/asm-arm/arch-ixp425/
-+INCLUDE_DIRS += $(LINUX_SRC)/include/asm-arm/arch-ixp4xx/
- endif
-
- CFLAGS += $(INCLUDE_DIRS:%=-I%)
---- ixp_osal/os/linux/make/macros.mk.orig 2005-10-01 15:50:19.544167880 -0700
-+++ ixp_osal/os/linux/make/macros.mk 2005-10-01 15:50:43.053647239 -0700
-@@ -88,10 +88,10 @@
- # Compiler & linker options
-
- # Compiler flags
--LINUX_MACH_CFLAGS := -D__LINUX_ARM_ARCH__=5 -mcpu=xscale -mtune=xscale
-+LINUX_MACH_CFLAGS := -D__LINUX_ARM_ARCH__=5 -mtune=xscale
-
- CFLAGS := -D__KERNEL__ -I$(LINUX_SRC)/include -Wall -Wno-trigraphs -fno-common \
-- -pipe -mapcs-32 -mshort-load-bytes -msoft-float -DMODULE \
-+ -pipe -mapcs-32 -msoft-float -DMODULE \
- -D__linux -DCPU=33 -DXSCALE=33 $(LINUX_MACH_CFLAGS) -DEXPORT_SYMTAB
-
- # Linux linker flags
diff --git a/recipes/ixp4xx/ixp-osal-2.0/le.patch b/recipes/ixp4xx/ixp-osal-2.0/le.patch
deleted file mode 100644
index ecb93d7d76..0000000000
--- a/recipes/ixp4xx/ixp-osal-2.0/le.patch
+++ /dev/null
@@ -1,50 +0,0 @@
-diff -urp ixp_osal/.pc/le.patch/include/modules/ioMem/IxOsalMemAccess.h ixp_osal/include/modules/ioMem/IxOsalMemAccess.h
---- ixp_osal/.pc/le.patch/include/modules/ioMem/IxOsalMemAccess.h 2005-04-17 20:56:25.000000000 -0700
-+++ ixp_osal/include/modules/ioMem/IxOsalMemAccess.h 2005-11-19 16:44:33.414684841 -0800
-@@ -84,7 +84,7 @@
-
- #elif defined (IX_OSAL_LINUX_LE)
-
--#define IX_SDRAM_LE_DATA_COHERENT
-+#define IX_SDRAM_LE_ADDRESS_COHERENT
-
- #elif defined (IX_OSAL_WINCE_LE)
-
-diff -urp ixp_osal/.pc/le.patch/os/linux/include/platforms/ixp400/IxOsalOsIxp400CustomizedMapping.h ixp_osal/os/linux/include/platforms/ixp400/IxOsalOsIxp400CustomizedMapping.h
---- ixp_osal/.pc/le.patch/os/linux/include/platforms/ixp400/IxOsalOsIxp400CustomizedMapping.h 2005-04-17 20:56:27.000000000 -0700
-+++ ixp_osal/os/linux/include/platforms/ixp400/IxOsalOsIxp400CustomizedMapping.h 2005-11-19 16:45:35.298578949 -0800
-@@ -171,7 +171,7 @@
- ***************************/
- #if (IX_COMPONENT_NAME == ix_qmgr)
-
--#define IX_OSAL_LE_DC_MAPPING
-+#define IX_OSAL_LE_AC_MAPPING
-
- #endif /* qmgr */
-
-diff -urp ixp_osal/.pc/le.patch/os/linux/include/platforms/ixp400/ixp425/IxOsalOsIxp425Sys.h ixp_osal/os/linux/include/platforms/ixp400/ixp425/IxOsalOsIxp425Sys.h
---- ixp_osal/.pc/le.patch/os/linux/include/platforms/ixp400/ixp425/IxOsalOsIxp425Sys.h 2005-11-19 15:53:11.808771607 -0800
-+++ ixp_osal/os/linux/include/platforms/ixp400/ixp425/IxOsalOsIxp425Sys.h 2005-11-19 16:51:40.729574072 -0800
-@@ -101,7 +101,7 @@ IxOsalMemoryMap ixOsalGlobalMemoryMap[]
- ixOsalLinuxMemUnmap, /* unmapFunction */
- #endif
- 0, /* refCount */
-- IX_OSAL_BE | IX_OSAL_LE_DC, /* endianType */
-+ IX_OSAL_BE | IX_OSAL_LE_AC, /* endianType */
- "qMgr" /* name */
- },
-
-diff -bBdurN hannes/ixp_osal/include/modules/ioMem/IxOsalIoMem.h merged/ixp_osal/include/modules/ioMem/IxOsalIoMem.h
---- ixp_osal/include/modules/ioMem/IxOsalIoMem.h 2005-04-17 20:56:25.000000000 -0700
-+++ ixp_osal/include/modules/ioMem/IxOsalIoMem.h 2005-10-07 16:20:27.786083595 -0700
-@@ -105,8 +105,8 @@
- #endif /* ndef __wince */
-
- #define IX_OSAL_SWAP_SHORT(sData) ((sData >> 8) | ((sData & 0xFF) << 8))
--#define IX_OSAL_SWAP_SHORT_ADDRESS(sAddr) ((sAddr) ^ 0x2)
--#define IX_OSAL_SWAP_BYTE_ADDRESS(bAddr) ((bAddr) ^ 0x3)
-+#define IX_OSAL_SWAP_SHORT_ADDRESS(sAddr) ((UINT16*)((UINT32)(sAddr) ^ 0x2))
-+#define IX_OSAL_SWAP_BYTE_ADDRESS(bAddr) ((UINT8*)((UINT32)(bAddr) ^ 0x3))
-
- #define IX_OSAL_BE_XSTOBUSL(wData) (wData)
- #define IX_OSAL_BE_XSTOBUSS(sData) (sData)
diff --git a/recipes/ixp4xx/ixp-osal-2.1.1/2.6.patch b/recipes/ixp4xx/ixp-osal-2.1.1/2.6.patch
deleted file mode 100644
index 9725b447c8..0000000000
--- a/recipes/ixp4xx/ixp-osal-2.1.1/2.6.patch
+++ /dev/null
@@ -1,143 +0,0 @@
- os/linux/src/core/IxOsalOsMsgQ.c | 2 +-
- os/linux/src/core/IxOsalOsSemaphore.c | 6 +++---
- os/linux/src/core/IxOsalOsServices.c | 20 ++++++++++++++++----
- os/linux/src/core/IxOsalOsThread.c | 7 +------
- 4 files changed, 21 insertions(+), 14 deletions(-)
-
---- ixp_osal/os/linux/src/core/IxOsalOsMsgQ.c 1970-01-01 00:00:00.000000000 +0000
-+++ ixp_osal/os/linux/src/core/IxOsalOsMsgQ.c 1970-01-01 00:00:00.000000000 +0000
-@@ -45,9 +45,9 @@
- * -- End Intel Copyright Notice --
- */
- #include <linux/linkage.h>
-+#include <linux/spinlock.h>
- #include <linux/ipc.h>
- #include <linux/msg.h>
--#include <linux/spinlock.h>
- #include <linux/interrupt.h>
-
- #include "IxOsal.h"
---- ixp_osal/os/linux/src/core/IxOsalOsSemaphore.c 1970-01-01 00:00:00.000000000 +0000
-+++ ixp_osal/os/linux/src/core/IxOsalOsSemaphore.c 1970-01-01 00:00:00.000000000 +0000
-@@ -46,7 +46,7 @@
- */
-
- #include <linux/slab.h>
--#include <asm-arm/hardirq.h>
-+#include <linux/hardirq.h>
- #include "IxOsal.h"
-
- /* Define a large number */
-@@ -93,7 +93,7 @@ ixOsalSemaphoreWait (IxOsalOsSemaphore *
- {
-
- IX_STATUS ixStatus = IX_SUCCESS;
-- UINT32 timeoutTime;
-+ unsigned long timeoutTime;
-
- if (sid == NULL)
- {
-@@ -261,7 +261,7 @@ ixOsalMutexInit (IxOsalMutex * mutex)
- PUBLIC IX_STATUS
- ixOsalMutexLock (IxOsalMutex * mutex, INT32 timeout)
- {
-- UINT32 timeoutTime;
-+ unsigned long timeoutTime;
-
- if (in_irq ())
- {
---- ixp_osal/os/linux/src/core/IxOsalOsServices.c 1970-01-01 00:00:00.000000000 +0000
-+++ ixp_osal/os/linux/src/core/IxOsalOsServices.c 1970-01-01 00:00:00.000000000 +0000
-@@ -54,6 +54,7 @@
- #include <linux/time.h>
- #include <linux/sched.h>
- #include <linux/slab.h>
-+#include <linux/interrupt.h>
-
- #include "IxOsal.h"
-
-@@ -89,7 +90,7 @@ static IxOsalInfoType IxOsalInfo[NR_IRQS
- /*
- * General interrupt handler
- */
--static void
-+static irqreturn_t
- ixOsalOsIsrProxy (int irq, void *dev_id, struct pt_regs *regs)
- {
- IxOsalInfoType *isr_proxy_info = (IxOsalInfoType *) dev_id;
-@@ -98,6 +99,7 @@ ixOsalOsIsrProxy (int irq, void *dev_id,
- "ixOsalOsIsrProxy: Interrupt used before ixOsalIrqBind was invoked");
-
- isr_proxy_info->routine (isr_proxy_info->parameter);
-+ return IRQ_HANDLED;
- }
-
- /*
-@@ -105,11 +107,12 @@ ixOsalOsIsrProxy (int irq, void *dev_id,
- * This handler saves the interrupted Program Counter (PC)
- * into a global variable
- */
--static void
-+static irqreturn_t
- ixOsalOsIsrProxyWithPC (int irq, void *dev_id, struct pt_regs *regs)
- {
- ixOsalLinuxInterruptedPc = regs->ARM_pc;
- ixOsalOsIsrProxy(irq, dev_id, regs);
-+ return IRQ_HANDLED;
- }
-
- /**************************************
-@@ -191,10 +194,15 @@ ixOsalIrqUnbind (UINT32 vector)
- PUBLIC UINT32
- ixOsalIrqLock ()
- {
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,0))
-+ unsigned long flags;
-+ local_irq_save(flags);
-+#else
- UINT32 flags;
- save_flags (flags);
- cli ();
-- return flags;
-+#endif
-+ return (UINT32)flags;
- }
-
- /* Enable interrupts and task scheduling,
-@@ -204,7 +212,11 @@ ixOsalIrqLock ()
- PUBLIC void
- ixOsalIrqUnlock (UINT32 lockKey)
- {
-+# if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,0))
-+ local_irq_restore((unsigned long)lockKey);
-+# else
- restore_flags (lockKey);
-+# endif
- }
-
- PUBLIC UINT32
-@@ -329,7 +341,7 @@ ixOsalBusySleep (UINT32 microseconds)
- PUBLIC void
- ixOsalSleep (UINT32 milliseconds)
- {
-- if (milliseconds != 0)
-+ if (milliseconds*HZ >= 1000)
- {
- set_current_state(TASK_INTERRUPTIBLE);
- schedule_timeout ((milliseconds * HZ) / 1000);
---- ixp_osal/os/linux/src/core/IxOsalOsThread.c 1970-01-01 00:00:00.000000000 +0000
-+++ ixp_osal/os/linux/src/core/IxOsalOsThread.c 1970-01-01 00:00:00.000000000 +0000
-@@ -65,12 +65,7 @@ thread_internal (void *unused)
- void *arg = IxOsalOsThreadData.arg;
- static int seq = 0;
-
-- daemonize ();
-- reparent_to_init ();
--
-- exit_files (current);
--
-- snprintf(current->comm, sizeof(current->comm), "IxOsal %d", ++seq);
-+ daemonize ("IxOsal %d", ++seq);
-
- up (&IxOsalThreadMutex);
-
diff --git a/recipes/ixp4xx/ixp-osal-2.1.1/Makefile.patch b/recipes/ixp4xx/ixp-osal-2.1.1/Makefile.patch
deleted file mode 100644
index 1558e9cdb3..0000000000
--- a/recipes/ixp4xx/ixp-osal-2.1.1/Makefile.patch
+++ /dev/null
@@ -1,30 +0,0 @@
- Makefile | 2 +-
- os/linux/make/macros.mk | 4 ++--
- 2 files changed, 3 insertions(+), 3 deletions(-)
-
---- ixp_osal/Makefile 1970-01-01 00:00:00.000000000 +0000
-+++ ixp_osal/Makefile 1970-01-01 00:00:00.000000000 +0000
-@@ -185,7 +185,7 @@ endif
- INCLUDE_DIRS = include $(OSAL_DIRS:%=$(MAIN_INC_PREFIX)/%) $(OSAL_DIRS:%=$(OS_INC_PREFIX)/%)
-
- ifeq ($(IX_OSAL_MK_HOST_OS), linux)
--INCLUDE_DIRS += $(LINUX_SRC)/include/asm-arm/arch-ixp425/
-+INCLUDE_DIRS += $(LINUX_SRC)/include/asm-arm/arch-ixp4xx/
- endif
-
- CFLAGS += $(INCLUDE_DIRS:%=-I%)
---- ixp_osal/os/linux/make/macros.mk 1970-01-01 00:00:00.000000000 +0000
-+++ ixp_osal/os/linux/make/macros.mk 1970-01-01 00:00:00.000000000 +0000
-@@ -88,10 +88,10 @@ AR := $(LINUX_CROSS_COMPILE)ar
- # Compiler & linker options
-
- # Compiler flags
--LINUX_MACH_CFLAGS := -D__LINUX_ARM_ARCH__=5 -mcpu=xscale -mtune=xscale
-+LINUX_MACH_CFLAGS := -D__LINUX_ARM_ARCH__=5 -mtune=xscale
-
- CFLAGS := -D__KERNEL__ -I$(LINUX_SRC)/include -Wall -Wno-trigraphs -fno-common \
-- -pipe -mapcs-32 -mshort-load-bytes -msoft-float -DMODULE \
-+ -pipe -msoft-float -DMODULE \
- -D__linux -DCPU=33 -DXSCALE=33 $(LINUX_MACH_CFLAGS) -DEXPORT_SYMTAB
-
- # Linux linker flags
diff --git a/recipes/ixp4xx/ixp-osal-2.1.1/assert.patch b/recipes/ixp4xx/ixp-osal-2.1.1/assert.patch
deleted file mode 100644
index a03113dcc2..0000000000
--- a/recipes/ixp4xx/ixp-osal-2.1.1/assert.patch
+++ /dev/null
@@ -1,41 +0,0 @@
-# Unnecessary patch - reduces the code size slightly, gives clearer
-# messages if IX_OSAL_ENSURE_ON is set
-# include/IxOsalAssert.h | 4 ++--
-# os/linux/include/core/IxOsalOsAssert.h | 9 ++++++++-
-# 2 files changed, 10 insertions(+), 3 deletions(-)
-#
---- ixp_osal/include/IxOsalAssert.h 1970-01-01 00:00:00.000000000 +0000
-+++ ixp_osal/include/IxOsalAssert.h 1970-01-01 00:00:00.000000000 +0000
-@@ -72,8 +72,8 @@
- */
- #ifdef IX_OSAL_ENSURE_ON
- #define IX_OSAL_ENSURE(c, str) do { \
--if (!(c)) ixOsalLog (IX_OSAL_LOG_LVL_MESSAGE, IX_OSAL_LOG_DEV_STDOUT, str, \
--0, 0, 0, 0, 0, 0); } while (0)
-+if (!(c)) ixOsalLog (IX_OSAL_LOG_LVL_MESSAGE, IX_OSAL_LOG_DEV_STDOUT, __FILE__ ": line %d: " str, \
-+__LINE__, 0, 0, 0, 0, 0); } while (0)
-
- #else
- #define IX_OSAL_ENSURE(c, str)
---- ixp_osal/os/linux/include/core/IxOsalOsAssert.h 1970-01-01 00:00:00.000000000 +0000
-+++ ixp_osal/os/linux/include/core/IxOsalOsAssert.h 1970-01-01 00:00:00.000000000 +0000
-@@ -47,11 +47,18 @@
-
- #ifndef IxOsalOsAssert_H
- #define IxOsalOsAssert_H
-+#ifdef IX_OSAL_ENSURE_ON
- #define IX_OSAL_OS_ASSERT(c) if(!(c)) \
- { \
-- ixOsalLog (IX_OSAL_LOG_LVL_ERROR, IX_OSAL_LOG_DEV_STDOUT, "Assertion failure \n", 0, 0, 0, 0, 0, 0);\
-+ ixOsalLog (IX_OSAL_LOG_LVL_ERROR, IX_OSAL_LOG_DEV_STDOUT, "%s line %d: Assertion failure: %s\n", (int)__FILE__, __LINE__, (int)#c, 0, 0, 0);\
- BUG(); \
- }
-+#else
-+#define IX_OSAL_OS_ASSERT(c) if(!(c)) \
-+ { \
-+ BUG(); \
-+ }
-+#endif
-
- /*
- * Place holder.
diff --git a/recipes/ixp4xx/ixp-osal-2.1.1/invalidate-cache.patch b/recipes/ixp4xx/ixp-osal-2.1.1/invalidate-cache.patch
deleted file mode 100644
index 33c1d132db..0000000000
--- a/recipes/ixp4xx/ixp-osal-2.1.1/invalidate-cache.patch
+++ /dev/null
@@ -1,115 +0,0 @@
- os/linux/include/core/IxOsalOs.h | 17 ++++++++++
- os/linux/src/core/IxOsalOsCacheMMU.c | 56 +++++++++++++++++++++++++++++++++++
- os/linux/src/core/IxOsalOsSymbols.c | 4 ++
- 3 files changed, 76 insertions(+), 1 deletion(-)
-
---- ixp_osal/os/linux/include/core/IxOsalOs.h 1970-01-01 00:00:00.000000000 +0000
-+++ ixp_osal/os/linux/include/core/IxOsalOs.h 1970-01-01 00:00:00.000000000 +0000
-@@ -56,6 +56,7 @@
- #include <linux/cache.h>
- #include <linux/mm.h>
- #include <linux/config.h>
-+#include <linux/version.h>
- #include <asm/pgalloc.h>
-
- /**
-@@ -66,9 +67,23 @@
-
- #define IX_OSAL_OS_MMU_PHYS_TO_VIRT(addr) ((addr) ? phys_to_virt((unsigned int)(addr)) : 0)
-
--#define IX_OSAL_OS_CACHE_INVALIDATE(addr, size) ( invalidate_dcache_range((__u32)addr, (__u32)addr + size ))
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,0))
-+/*
-+ * 2.6 kernels do not export the required cache functions.
-+ */
-+extern void ixOsalCacheInvalidateRange(unsigned long start, unsigned long size);
-+extern void ixOsalCacheFlushRange(unsigned long start, unsigned long size);
-+
-+#define IX_OSAL_OS_CACHE_INVALIDATE(addr, size) \
-+ixOsalCacheInvalidateRange((unsigned long)addr, (unsigned long)addr + size)
-+#define IX_OSAL_OS_CACHE_FLUSH(addr, size) \
-+ixOsalCacheFlushRange((unsigned long)addr, (unsigned long)addr + size )
-
-+#else
-+
-+#define IX_OSAL_OS_CACHE_INVALIDATE(addr, size) ( invalidate_dcache_range((__u32)addr, (__u32)addr + size ))
- #define IX_OSAL_OS_CACHE_FLUSH(addr, size) ( clean_dcache_range((__u32)addr, (__u32)addr + size ))
-+#endif /* (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,0)) */
-
- /* Cache preload not available*/
- #define IX_OSAL_OS_CACHE_PRELOAD(addr,size) {}
---- ixp_osal/os/linux/src/core/IxOsalOsCacheMMU.c 1970-01-01 00:00:00.000000000 +0000
-+++ ixp_osal/os/linux/src/core/IxOsalOsCacheMMU.c 1970-01-01 00:00:00.000000000 +0000
-@@ -210,3 +210,59 @@ ixOsalCacheDmaFree (void *ptr)
- free_pages ((unsigned int) memptr, order);
- }
- }
-+
-+
-+/*
-+ * 2.6 kernels do not export the required cache functions.
-+ */
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,0))
-+
-+#define _IX_STR(x) #x
-+#define IX_STR(x) _IX_STR(x)
-+#define IX_CLM IX_STR(IX_OSAL_CACHE_LINE_SIZE-1)
-+
-+/*
-+ * reimplementation of kernel's invalidate_dcache_range()
-+ */
-+void
-+ixOsalCacheInvalidateRange(unsigned long start, unsigned long size)
-+{
-+ __asm__
-+ (" tst %0, #" IX_CLM "\n"
-+ " mcrne p15, 0, %0, c7, c10, 1 @ clean D cache line\n"
-+ " bic %0, %0, #" IX_CLM "\n"
-+ " tst %1, #" IX_CLM "\n"
-+ " mcrne p15, 0, %1, c7, c10, 1 @ clean D cache line\n"
-+ "1: mcr p15, 0, %0, c7, c6, 1 @ invalidate D cache line\n"
-+ " add %0, %0, #" IX_STR(IX_OSAL_CACHE_LINE_SIZE) "\n"
-+ " cmp %0, %1\n"
-+ " blo 1b\n"
-+ " mcr p15, 0, %0, c7, c10, 4 @ drain write & fill buffer\n"
-+ : /* no output */
-+ : "r"(start), "r"(size)
-+ : "cc");
-+}
-+
-+/*
-+ * reimplementation of kernel's invalidate_dcache_range()
-+ */
-+void
-+ixOsalCacheFlushRange(unsigned long start, unsigned long size)
-+{
-+ __asm__
-+ (" bic %0, %0, #" IX_CLM "\n"
-+ "1: mcr p15, 0, %0, c7, c10, 1 @ clean D cache line\n"
-+ " add %0, %0, #" IX_STR(IX_OSAL_CACHE_LINE_SIZE) "\n"
-+ " cmp %0, %1\n"
-+ " blo 1b\n"
-+ " mcr p15, 0, %0, c7, c10, 4 @ drain write & fill buffer\n"
-+ : /* no output */
-+ : "r"(start), "r"(size)
-+ : "cc");
-+}
-+
-+#undef _IX_STR
-+#undef IX_STR
-+#undef IX_CLM
-+
-+#endif /* (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,0)) */
---- ixp_osal/os/linux/src/core/IxOsalOsSymbols.c 1970-01-01 00:00:00.000000000 +0000
-+++ ixp_osal/os/linux/src/core/IxOsalOsSymbols.c 1970-01-01 00:00:00.000000000 +0000
-@@ -64,6 +64,10 @@ EXPORT_SYMBOL (ixOsalMemSet);
-
- EXPORT_SYMBOL (ixOsalCacheDmaMalloc);
- EXPORT_SYMBOL (ixOsalCacheDmaFree);
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,0))
-+EXPORT_SYMBOL (ixOsalCacheInvalidateRange);
-+EXPORT_SYMBOL (ixOsalCacheFlushRange);
-+#endif
-
- EXPORT_SYMBOL (ixOsalThreadCreate);
- EXPORT_SYMBOL (ixOsalThreadStart);
diff --git a/recipes/ixp4xx/ixp-osal-2.1.1/ixp4xx-header.patch b/recipes/ixp4xx/ixp-osal-2.1.1/ixp4xx-header.patch
deleted file mode 100644
index a9d87d4b56..0000000000
--- a/recipes/ixp4xx/ixp-osal-2.1.1/ixp4xx-header.patch
+++ /dev/null
@@ -1,115 +0,0 @@
- os/linux/include/platforms/ixp400/ixp425/IxOsalOsIxp425Base.h | 72 ++++++++++
- os/linux/include/platforms/ixp400/ixp425/IxOsalOsIxp425Sys.h | 10 -
- 2 files changed, 78 insertions(+), 4 deletions(-)
-
---- ixp_osal/os/linux/include/platforms/ixp400/ixp425/IxOsalOsIxp425Sys.h 1970-01-01 00:00:00.000000000 +0000
-+++ ixp_osal/os/linux/include/platforms/ixp400/ixp425/IxOsalOsIxp425Sys.h 1970-01-01 00:00:00.000000000 +0000
-@@ -53,6 +53,8 @@
- #error "Error: IxOsalOsIxp425Sys.h cannot be included directly before IxOsalOsIxp400.h"
- #endif
-
-+#include "IxOsalOsIxp425Base.h"
-+
- /* Memory Base Address */
- #define IX_OSAL_IXP400_EXP_BUS_PHYS_BASE IXP425_EXP_BUS_BASE2_PHYS
- #define IX_OSAL_IXP400_EXP_BUS_BOOT_PHYS_BASE IXP425_EXP_BUS_BASE1_PHYS
-@@ -98,12 +100,12 @@ IxOsalMemoryMap ixOsalGlobalMemoryMap[]
- * Queue Manager
- */
- {
-- IX_OSAL_STATIC_MAP, /* type */
-+ IX_OSAL_DYNAMIC_MAP, /* type */
- IX_OSAL_IXP400_QMGR_PHYS_BASE, /* physicalAddress */
- IX_OSAL_IXP400_QMGR_MAP_SIZE, /* size */
-- IX_OSAL_IXP400_QMGR_VIRT_BASE, /* virtualAddress */
-- NULL, /* mapFunction */
-- NULL, /* unmapFunction */
-+ 0, /* virtualAddress */
-+ ixOsalLinuxMemMap, /* mapFunction */
-+ ixOsalLinuxMemUnmap, /* unmapFunction */
- 0, /* refCount */
- IX_OSAL_BE | IX_OSAL_LE_DC, /* endianType */
- "qMgr" /* name */
---- ixp_osal/os/linux/include/platforms/ixp400/ixp425/IxOsalOsIxp425Base.h 1970-01-01 00:00:00.000000000 +0000
-+++ ixp_osal/os/linux/include/platforms/ixp400/ixp425/IxOsalOsIxp425Base.h 1970-01-01 00:00:00.000000000 +0000
-@@ -0,0 +1,80 @@
-+/*
-+ * Glue for the current linux definitons of this stuff.
-+ */
-+#ifndef IxOsalOsIxp425Base_H
-+#define IxOsalOsIxp425Base_H 1
-+#include <asm-arm/arch-ixp4xx/ixp4xx-regs.h>
-+#include <linux/version.h>
-+
-+/* Force Address Coherent (the default) mapping on LE - Linux 2.6
-+ * does not have a way of changing it.
-+ */
-+#if defined IX_OSAL_LINUX_LE
-+# if !defined IX_OSAL_ENFORCED_LE_AC_MAPPING
-+# define IX_OSAL_ENFORCED_LE_AC_MAPPING
-+# endif
-+# if defined IX_OSAL_LE_DC_MAPPING
-+# error Little Endian Data Coherent mapping not supported on this platform
-+# endif
-+
-+/* This doesn't matter on a BE build because it will never be used,
-+ * however it will be selected and will fail on an LE build.
-+ */
-+# undef IX_OSAL_LE_DC
-+# define IX_OSAL_LE_DC IX_OSAL_LE_DC_IS_INVALID_ON_THIS_PLATFORM
-+#endif
-+
-+/* Physical addresses. */
-+#define IXP425_PERIPHERAL_BASE_PHYS IXP4XX_PERIPHERAL_BASE_PHYS
-+#define IXP425_EXP_CFG_BASE_PHYS IXP4XX_EXP_CFG_BASE_PHYS
-+#define IXP425_PCI_CFG_BASE_PHYS IXP4XX_PCI_CFG_BASE_PHYS
-+
-+//#define IXP425_EXP_BUS_BASE1_PHYS
-+#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,16)
-+#define IXP425_EXP_BUS_BASE2_PHYS IXP4XX_EXP_BUS_CS2_BASE_PHYS
-+#else
-+/* The following definition should be IXP4XX_EXP_BUS_BASE(2), but that is not
-+ static and causes compilation problems later. So we need to hard-code it.
-+ Note that this hard-coded value is only correct for IXP42X. */
-+#define IXP425_EXP_BUS_BASE2_PHYS (IXP4XX_EXP_BUS_BASE_PHYS + (2 * SZ_16M))
-+#endif
-+//#define IXP425_EXP_BUS_CS0_BASE_PHYS
-+//#define IXP425_EXP_BUS_CS1_BASE_PHYS
-+//#define IXP425_EXP_BUS_CS4_BASE_PHYS
-+#define IXP425_EthA_BASE_PHYS (IXP4XX_PERIPHERAL_BASE_PHYS + 0x9000)
-+#define IXP425_EthB_BASE_PHYS (IXP4XX_PERIPHERAL_BASE_PHYS + 0xA000)
-+//#define IXP425_GPIO_BASE_PHYS
-+#define IXP425_INTC_BASE_PHYS IXP4XX_INTC_BASE_PHYS
-+//#define IXP425_NPEA_BASE_PHYS
-+//#define IXP425_NPEB_BASE_PHYS
-+//#define IXP425_NPEC_BASE_PHYS
-+//#define IXP425_PMU_BASE_PHYS
-+#define IXP425_QMGR_BASE_PHYS IXP4XX_QMGR_BASE_PHYS
-+#define IXP425_TIMER_BASE_PHYS IXP4XX_TIMER_BASE_PHYS
-+//#define IXP425_UART1_BASE_PHYS
-+//#define IXP425_UART2_BASE_PHYS
-+#define IXP425_USB_BASE_PHYS IXP4XX_USB_BASE_PHYS
-+
-+/* Virtual addresses. */
-+#define IXP425_PERIPHERAL_BASE_VIRT IXP4XX_PERIPHERAL_BASE_VIRT
-+#define IXP425_PERIPHERAL_REGION_SIZE IXP4XX_PERIPHERAL_REGION_SIZE
-+#define IXP425_EXP_CFG_BASE_VIRT IXP4XX_EXP_CFG_BASE_VIRT
-+#define IXP425_PCI_CFG_BASE_VIRT IXP4XX_PCI_CFG_BASE_VIRT
-+
-+//#define IXP425_EthA_BASE_VIRT
-+//#define IXP425_EthB_BASE_VIRT
-+//#define IXP425_GPIO_BASE_VIRT
-+//#define IXP425_NPEA_BASE_VIRT
-+//#define IXP425_NPEB_BASE_VIRT
-+//#define IXP425_NPEC_BASE_VIRT
-+//#define IXP425_QMGR_BASE_VIRT /* must be ioremapped on Linux 2.6 */
-+//#define IXP425_TIMER_BASE_VIRT
-+//#define IXP425_UART1_BASE_VIRT
-+//#define IXP425_UART2_BASE_VIRT
-+//#define IXP425_USB_BASE_VIRT
-+
-+/* Miscellaneous stuff. */
-+#define IRQ_IXP425_XSCALE_PMU IRQ_IXP4XX_XSCALE_PMU
-+#define IXP425_ICMR IXP4XX_ICMR
-+#define IRQ_IXP425_USB IRQ_IXP4XX_USB
-+#endif
diff --git a/recipes/ixp4xx/ixp-osal-2.1.1/le.patch b/recipes/ixp4xx/ixp-osal-2.1.1/le.patch
deleted file mode 100644
index a6936ea33b..0000000000
--- a/recipes/ixp4xx/ixp-osal-2.1.1/le.patch
+++ /dev/null
@@ -1,72 +0,0 @@
- include/modules/ioMem/IxOsalIoMem.h | 4 ++--
- include/modules/ioMem/IxOsalMemAccess.h | 2 +-
- os/linux/include/platforms/ixp400/IxOsalOsIxp400CustomizedMapping.h | 2 +-
- os/linux/include/platforms/ixp400/ixp425/IxOsalOsIxp425Sys.h | 2 +-
- os/linux/src/modules/ioMem/IxOsalOsIoMem.c | 3 +++
- 5 files changed, 8 insertions(+), 5 deletions(-)
-
---- ixp_osal/include/modules/ioMem/IxOsalIoMem.h 1970-01-01 00:00:00.000000000 +0000
-+++ ixp_osal/include/modules/ioMem/IxOsalIoMem.h 1970-01-01 00:00:00.000000000 +0000
-@@ -117,8 +117,8 @@ ixOsalCoreWordSwap (UINT32 wordIn)
- #endif /* ndef __wince */
-
- #define IX_OSAL_SWAP_SHORT(sData) ((sData >> 8) | ((sData & 0xFF) << 8))
--#define IX_OSAL_SWAP_SHORT_ADDRESS(sAddr) ((sAddr) ^ 0x2)
--#define IX_OSAL_SWAP_BYTE_ADDRESS(bAddr) ((bAddr) ^ 0x3)
-+#define IX_OSAL_SWAP_SHORT_ADDRESS(sAddr) ((UINT16*)((UINT32)(sAddr) ^ 0x2))
-+#define IX_OSAL_SWAP_BYTE_ADDRESS(bAddr) ((UINT8*)((UINT32)(bAddr) ^ 0x3))
-
- #define IX_OSAL_BE_XSTOBUSL(wData) (wData)
- #define IX_OSAL_BE_XSTOBUSS(sData) (sData)
---- ixp_osal/include/modules/ioMem/IxOsalMemAccess.h 1970-01-01 00:00:00.000000000 +0000
-+++ ixp_osal/include/modules/ioMem/IxOsalMemAccess.h 1970-01-01 00:00:00.000000000 +0000
-@@ -84,7 +84,7 @@
-
- #elif defined (IX_OSAL_LINUX_LE)
-
--#define IX_SDRAM_LE_DATA_COHERENT
-+#define IX_SDRAM_LE_ADDRESS_COHERENT
-
- #elif defined (IX_OSAL_WINCE_LE)
-
---- ixp_osal/os/linux/include/platforms/ixp400/IxOsalOsIxp400CustomizedMapping.h 1970-01-01 00:00:00.000000000 +0000
-+++ ixp_osal/os/linux/include/platforms/ixp400/IxOsalOsIxp400CustomizedMapping.h 1970-01-01 00:00:00.000000000 +0000
-@@ -171,7 +171,7 @@
- ***************************/
- #if (IX_COMPONENT_NAME == ix_qmgr)
-
--#define IX_OSAL_LE_DC_MAPPING
-+#define IX_OSAL_LE_AC_MAPPING
-
- #endif /* qmgr */
-
---- ixp_osal/os/linux/include/platforms/ixp400/ixp425/IxOsalOsIxp425Sys.h 1970-01-01 00:00:00.000000000 +0000
-+++ ixp_osal/os/linux/include/platforms/ixp400/ixp425/IxOsalOsIxp425Sys.h 1970-01-01 00:00:00.000000000 +0000
-@@ -107,7 +107,7 @@ IxOsalMemoryMap ixOsalGlobalMemoryMap[]
- ixOsalLinuxMemMap, /* mapFunction */
- ixOsalLinuxMemUnmap, /* unmapFunction */
- 0, /* refCount */
-- IX_OSAL_BE | IX_OSAL_LE_DC, /* endianType */
-+ IX_OSAL_BE | IX_OSAL_LE_AC, /* endianType */
- "qMgr" /* name */
- },
-
---- ixp_osal/os/linux/src/modules/ioMem/IxOsalOsIoMem.c 1970-01-01 00:00:00.000000000 +0000
-+++ ixp_osal/os/linux/src/modules/ioMem/IxOsalOsIoMem.c 1970-01-01 00:00:00.000000000 +0000
-@@ -45,6 +45,7 @@
- * -- End Intel Copyright Notice --
- */
-
-+#include <asm/page.h>
- #include <asm/io.h>
- #include <linux/ioport.h>
-
-@@ -54,6 +55,8 @@
- PUBLIC void
- ixOsalLinuxMemMap (IxOsalMemoryMap * map)
- {
-+ /* Linux requires LE mappings to use address coherency */
-+ IX_OSAL_ENSURE((map->mapEndianType & IX_OSAL_LE_DC) == 0, "LE Data Coherency not supported");
- map->virtualAddress = (UINT32) ioremap (map->physicalAddress, map->size);
- }
-
diff --git a/recipes/ixp4xx/ixp-osal-2.1/2.6.patch b/recipes/ixp4xx/ixp-osal-2.1/2.6.patch
deleted file mode 100644
index 9725b447c8..0000000000
--- a/recipes/ixp4xx/ixp-osal-2.1/2.6.patch
+++ /dev/null
@@ -1,143 +0,0 @@
- os/linux/src/core/IxOsalOsMsgQ.c | 2 +-
- os/linux/src/core/IxOsalOsSemaphore.c | 6 +++---
- os/linux/src/core/IxOsalOsServices.c | 20 ++++++++++++++++----
- os/linux/src/core/IxOsalOsThread.c | 7 +------
- 4 files changed, 21 insertions(+), 14 deletions(-)
-
---- ixp_osal/os/linux/src/core/IxOsalOsMsgQ.c 1970-01-01 00:00:00.000000000 +0000
-+++ ixp_osal/os/linux/src/core/IxOsalOsMsgQ.c 1970-01-01 00:00:00.000000000 +0000
-@@ -45,9 +45,9 @@
- * -- End Intel Copyright Notice --
- */
- #include <linux/linkage.h>
-+#include <linux/spinlock.h>
- #include <linux/ipc.h>
- #include <linux/msg.h>
--#include <linux/spinlock.h>
- #include <linux/interrupt.h>
-
- #include "IxOsal.h"
---- ixp_osal/os/linux/src/core/IxOsalOsSemaphore.c 1970-01-01 00:00:00.000000000 +0000
-+++ ixp_osal/os/linux/src/core/IxOsalOsSemaphore.c 1970-01-01 00:00:00.000000000 +0000
-@@ -46,7 +46,7 @@
- */
-
- #include <linux/slab.h>
--#include <asm-arm/hardirq.h>
-+#include <linux/hardirq.h>
- #include "IxOsal.h"
-
- /* Define a large number */
-@@ -93,7 +93,7 @@ ixOsalSemaphoreWait (IxOsalOsSemaphore *
- {
-
- IX_STATUS ixStatus = IX_SUCCESS;
-- UINT32 timeoutTime;
-+ unsigned long timeoutTime;
-
- if (sid == NULL)
- {
-@@ -261,7 +261,7 @@ ixOsalMutexInit (IxOsalMutex * mutex)
- PUBLIC IX_STATUS
- ixOsalMutexLock (IxOsalMutex * mutex, INT32 timeout)
- {
-- UINT32 timeoutTime;
-+ unsigned long timeoutTime;
-
- if (in_irq ())
- {
---- ixp_osal/os/linux/src/core/IxOsalOsServices.c 1970-01-01 00:00:00.000000000 +0000
-+++ ixp_osal/os/linux/src/core/IxOsalOsServices.c 1970-01-01 00:00:00.000000000 +0000
-@@ -54,6 +54,7 @@
- #include <linux/time.h>
- #include <linux/sched.h>
- #include <linux/slab.h>
-+#include <linux/interrupt.h>
-
- #include "IxOsal.h"
-
-@@ -89,7 +90,7 @@ static IxOsalInfoType IxOsalInfo[NR_IRQS
- /*
- * General interrupt handler
- */
--static void
-+static irqreturn_t
- ixOsalOsIsrProxy (int irq, void *dev_id, struct pt_regs *regs)
- {
- IxOsalInfoType *isr_proxy_info = (IxOsalInfoType *) dev_id;
-@@ -98,6 +99,7 @@ ixOsalOsIsrProxy (int irq, void *dev_id,
- "ixOsalOsIsrProxy: Interrupt used before ixOsalIrqBind was invoked");
-
- isr_proxy_info->routine (isr_proxy_info->parameter);
-+ return IRQ_HANDLED;
- }
-
- /*
-@@ -105,11 +107,12 @@ ixOsalOsIsrProxy (int irq, void *dev_id,
- * This handler saves the interrupted Program Counter (PC)
- * into a global variable
- */
--static void
-+static irqreturn_t
- ixOsalOsIsrProxyWithPC (int irq, void *dev_id, struct pt_regs *regs)
- {
- ixOsalLinuxInterruptedPc = regs->ARM_pc;
- ixOsalOsIsrProxy(irq, dev_id, regs);
-+ return IRQ_HANDLED;
- }
-
- /**************************************
-@@ -191,10 +194,15 @@ ixOsalIrqUnbind (UINT32 vector)
- PUBLIC UINT32
- ixOsalIrqLock ()
- {
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,0))
-+ unsigned long flags;
-+ local_irq_save(flags);
-+#else
- UINT32 flags;
- save_flags (flags);
- cli ();
-- return flags;
-+#endif
-+ return (UINT32)flags;
- }
-
- /* Enable interrupts and task scheduling,
-@@ -204,7 +212,11 @@ ixOsalIrqLock ()
- PUBLIC void
- ixOsalIrqUnlock (UINT32 lockKey)
- {
-+# if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,0))
-+ local_irq_restore((unsigned long)lockKey);
-+# else
- restore_flags (lockKey);
-+# endif
- }
-
- PUBLIC UINT32
-@@ -329,7 +341,7 @@ ixOsalBusySleep (UINT32 microseconds)
- PUBLIC void
- ixOsalSleep (UINT32 milliseconds)
- {
-- if (milliseconds != 0)
-+ if (milliseconds*HZ >= 1000)
- {
- set_current_state(TASK_INTERRUPTIBLE);
- schedule_timeout ((milliseconds * HZ) / 1000);
---- ixp_osal/os/linux/src/core/IxOsalOsThread.c 1970-01-01 00:00:00.000000000 +0000
-+++ ixp_osal/os/linux/src/core/IxOsalOsThread.c 1970-01-01 00:00:00.000000000 +0000
-@@ -65,12 +65,7 @@ thread_internal (void *unused)
- void *arg = IxOsalOsThreadData.arg;
- static int seq = 0;
-
-- daemonize ();
-- reparent_to_init ();
--
-- exit_files (current);
--
-- snprintf(current->comm, sizeof(current->comm), "IxOsal %d", ++seq);
-+ daemonize ("IxOsal %d", ++seq);
-
- up (&IxOsalThreadMutex);
-
diff --git a/recipes/ixp4xx/ixp-osal-2.1/Makefile.patch b/recipes/ixp4xx/ixp-osal-2.1/Makefile.patch
deleted file mode 100644
index 1558e9cdb3..0000000000
--- a/recipes/ixp4xx/ixp-osal-2.1/Makefile.patch
+++ /dev/null
@@ -1,30 +0,0 @@
- Makefile | 2 +-
- os/linux/make/macros.mk | 4 ++--
- 2 files changed, 3 insertions(+), 3 deletions(-)
-
---- ixp_osal/Makefile 1970-01-01 00:00:00.000000000 +0000
-+++ ixp_osal/Makefile 1970-01-01 00:00:00.000000000 +0000
-@@ -185,7 +185,7 @@ endif
- INCLUDE_DIRS = include $(OSAL_DIRS:%=$(MAIN_INC_PREFIX)/%) $(OSAL_DIRS:%=$(OS_INC_PREFIX)/%)
-
- ifeq ($(IX_OSAL_MK_HOST_OS), linux)
--INCLUDE_DIRS += $(LINUX_SRC)/include/asm-arm/arch-ixp425/
-+INCLUDE_DIRS += $(LINUX_SRC)/include/asm-arm/arch-ixp4xx/
- endif
-
- CFLAGS += $(INCLUDE_DIRS:%=-I%)
---- ixp_osal/os/linux/make/macros.mk 1970-01-01 00:00:00.000000000 +0000
-+++ ixp_osal/os/linux/make/macros.mk 1970-01-01 00:00:00.000000000 +0000
-@@ -88,10 +88,10 @@ AR := $(LINUX_CROSS_COMPILE)ar
- # Compiler & linker options
-
- # Compiler flags
--LINUX_MACH_CFLAGS := -D__LINUX_ARM_ARCH__=5 -mcpu=xscale -mtune=xscale
-+LINUX_MACH_CFLAGS := -D__LINUX_ARM_ARCH__=5 -mtune=xscale
-
- CFLAGS := -D__KERNEL__ -I$(LINUX_SRC)/include -Wall -Wno-trigraphs -fno-common \
-- -pipe -mapcs-32 -mshort-load-bytes -msoft-float -DMODULE \
-+ -pipe -msoft-float -DMODULE \
- -D__linux -DCPU=33 -DXSCALE=33 $(LINUX_MACH_CFLAGS) -DEXPORT_SYMTAB
-
- # Linux linker flags
diff --git a/recipes/ixp4xx/ixp-osal-2.1/assert.patch b/recipes/ixp4xx/ixp-osal-2.1/assert.patch
deleted file mode 100644
index a03113dcc2..0000000000
--- a/recipes/ixp4xx/ixp-osal-2.1/assert.patch
+++ /dev/null
@@ -1,41 +0,0 @@
-# Unnecessary patch - reduces the code size slightly, gives clearer
-# messages if IX_OSAL_ENSURE_ON is set
-# include/IxOsalAssert.h | 4 ++--
-# os/linux/include/core/IxOsalOsAssert.h | 9 ++++++++-
-# 2 files changed, 10 insertions(+), 3 deletions(-)
-#
---- ixp_osal/include/IxOsalAssert.h 1970-01-01 00:00:00.000000000 +0000
-+++ ixp_osal/include/IxOsalAssert.h 1970-01-01 00:00:00.000000000 +0000
-@@ -72,8 +72,8 @@
- */
- #ifdef IX_OSAL_ENSURE_ON
- #define IX_OSAL_ENSURE(c, str) do { \
--if (!(c)) ixOsalLog (IX_OSAL_LOG_LVL_MESSAGE, IX_OSAL_LOG_DEV_STDOUT, str, \
--0, 0, 0, 0, 0, 0); } while (0)
-+if (!(c)) ixOsalLog (IX_OSAL_LOG_LVL_MESSAGE, IX_OSAL_LOG_DEV_STDOUT, __FILE__ ": line %d: " str, \
-+__LINE__, 0, 0, 0, 0, 0); } while (0)
-
- #else
- #define IX_OSAL_ENSURE(c, str)
---- ixp_osal/os/linux/include/core/IxOsalOsAssert.h 1970-01-01 00:00:00.000000000 +0000
-+++ ixp_osal/os/linux/include/core/IxOsalOsAssert.h 1970-01-01 00:00:00.000000000 +0000
-@@ -47,11 +47,18 @@
-
- #ifndef IxOsalOsAssert_H
- #define IxOsalOsAssert_H
-+#ifdef IX_OSAL_ENSURE_ON
- #define IX_OSAL_OS_ASSERT(c) if(!(c)) \
- { \
-- ixOsalLog (IX_OSAL_LOG_LVL_ERROR, IX_OSAL_LOG_DEV_STDOUT, "Assertion failure \n", 0, 0, 0, 0, 0, 0);\
-+ ixOsalLog (IX_OSAL_LOG_LVL_ERROR, IX_OSAL_LOG_DEV_STDOUT, "%s line %d: Assertion failure: %s\n", (int)__FILE__, __LINE__, (int)#c, 0, 0, 0);\
- BUG(); \
- }
-+#else
-+#define IX_OSAL_OS_ASSERT(c) if(!(c)) \
-+ { \
-+ BUG(); \
-+ }
-+#endif
-
- /*
- * Place holder.
diff --git a/recipes/ixp4xx/ixp-osal-2.1/invalidate-cache.patch b/recipes/ixp4xx/ixp-osal-2.1/invalidate-cache.patch
deleted file mode 100644
index 33c1d132db..0000000000
--- a/recipes/ixp4xx/ixp-osal-2.1/invalidate-cache.patch
+++ /dev/null
@@ -1,115 +0,0 @@
- os/linux/include/core/IxOsalOs.h | 17 ++++++++++
- os/linux/src/core/IxOsalOsCacheMMU.c | 56 +++++++++++++++++++++++++++++++++++
- os/linux/src/core/IxOsalOsSymbols.c | 4 ++
- 3 files changed, 76 insertions(+), 1 deletion(-)
-
---- ixp_osal/os/linux/include/core/IxOsalOs.h 1970-01-01 00:00:00.000000000 +0000
-+++ ixp_osal/os/linux/include/core/IxOsalOs.h 1970-01-01 00:00:00.000000000 +0000
-@@ -56,6 +56,7 @@
- #include <linux/cache.h>
- #include <linux/mm.h>
- #include <linux/config.h>
-+#include <linux/version.h>
- #include <asm/pgalloc.h>
-
- /**
-@@ -66,9 +67,23 @@
-
- #define IX_OSAL_OS_MMU_PHYS_TO_VIRT(addr) ((addr) ? phys_to_virt((unsigned int)(addr)) : 0)
-
--#define IX_OSAL_OS_CACHE_INVALIDATE(addr, size) ( invalidate_dcache_range((__u32)addr, (__u32)addr + size ))
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,0))
-+/*
-+ * 2.6 kernels do not export the required cache functions.
-+ */
-+extern void ixOsalCacheInvalidateRange(unsigned long start, unsigned long size);
-+extern void ixOsalCacheFlushRange(unsigned long start, unsigned long size);
-+
-+#define IX_OSAL_OS_CACHE_INVALIDATE(addr, size) \
-+ixOsalCacheInvalidateRange((unsigned long)addr, (unsigned long)addr + size)
-+#define IX_OSAL_OS_CACHE_FLUSH(addr, size) \
-+ixOsalCacheFlushRange((unsigned long)addr, (unsigned long)addr + size )
-
-+#else
-+
-+#define IX_OSAL_OS_CACHE_INVALIDATE(addr, size) ( invalidate_dcache_range((__u32)addr, (__u32)addr + size ))
- #define IX_OSAL_OS_CACHE_FLUSH(addr, size) ( clean_dcache_range((__u32)addr, (__u32)addr + size ))
-+#endif /* (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,0)) */
-
- /* Cache preload not available*/
- #define IX_OSAL_OS_CACHE_PRELOAD(addr,size) {}
---- ixp_osal/os/linux/src/core/IxOsalOsCacheMMU.c 1970-01-01 00:00:00.000000000 +0000
-+++ ixp_osal/os/linux/src/core/IxOsalOsCacheMMU.c 1970-01-01 00:00:00.000000000 +0000
-@@ -210,3 +210,59 @@ ixOsalCacheDmaFree (void *ptr)
- free_pages ((unsigned int) memptr, order);
- }
- }
-+
-+
-+/*
-+ * 2.6 kernels do not export the required cache functions.
-+ */
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,0))
-+
-+#define _IX_STR(x) #x
-+#define IX_STR(x) _IX_STR(x)
-+#define IX_CLM IX_STR(IX_OSAL_CACHE_LINE_SIZE-1)
-+
-+/*
-+ * reimplementation of kernel's invalidate_dcache_range()
-+ */
-+void
-+ixOsalCacheInvalidateRange(unsigned long start, unsigned long size)
-+{
-+ __asm__
-+ (" tst %0, #" IX_CLM "\n"
-+ " mcrne p15, 0, %0, c7, c10, 1 @ clean D cache line\n"
-+ " bic %0, %0, #" IX_CLM "\n"
-+ " tst %1, #" IX_CLM "\n"
-+ " mcrne p15, 0, %1, c7, c10, 1 @ clean D cache line\n"
-+ "1: mcr p15, 0, %0, c7, c6, 1 @ invalidate D cache line\n"
-+ " add %0, %0, #" IX_STR(IX_OSAL_CACHE_LINE_SIZE) "\n"
-+ " cmp %0, %1\n"
-+ " blo 1b\n"
-+ " mcr p15, 0, %0, c7, c10, 4 @ drain write & fill buffer\n"
-+ : /* no output */
-+ : "r"(start), "r"(size)
-+ : "cc");
-+}
-+
-+/*
-+ * reimplementation of kernel's invalidate_dcache_range()
-+ */
-+void
-+ixOsalCacheFlushRange(unsigned long start, unsigned long size)
-+{
-+ __asm__
-+ (" bic %0, %0, #" IX_CLM "\n"
-+ "1: mcr p15, 0, %0, c7, c10, 1 @ clean D cache line\n"
-+ " add %0, %0, #" IX_STR(IX_OSAL_CACHE_LINE_SIZE) "\n"
-+ " cmp %0, %1\n"
-+ " blo 1b\n"
-+ " mcr p15, 0, %0, c7, c10, 4 @ drain write & fill buffer\n"
-+ : /* no output */
-+ : "r"(start), "r"(size)
-+ : "cc");
-+}
-+
-+#undef _IX_STR
-+#undef IX_STR
-+#undef IX_CLM
-+
-+#endif /* (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,0)) */
---- ixp_osal/os/linux/src/core/IxOsalOsSymbols.c 1970-01-01 00:00:00.000000000 +0000
-+++ ixp_osal/os/linux/src/core/IxOsalOsSymbols.c 1970-01-01 00:00:00.000000000 +0000
-@@ -64,6 +64,10 @@ EXPORT_SYMBOL (ixOsalMemSet);
-
- EXPORT_SYMBOL (ixOsalCacheDmaMalloc);
- EXPORT_SYMBOL (ixOsalCacheDmaFree);
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,0))
-+EXPORT_SYMBOL (ixOsalCacheInvalidateRange);
-+EXPORT_SYMBOL (ixOsalCacheFlushRange);
-+#endif
-
- EXPORT_SYMBOL (ixOsalThreadCreate);
- EXPORT_SYMBOL (ixOsalThreadStart);
diff --git a/recipes/ixp4xx/ixp-osal-2.1/ixp4xx-header.patch b/recipes/ixp4xx/ixp-osal-2.1/ixp4xx-header.patch
deleted file mode 100644
index a9d87d4b56..0000000000
--- a/recipes/ixp4xx/ixp-osal-2.1/ixp4xx-header.patch
+++ /dev/null
@@ -1,115 +0,0 @@
- os/linux/include/platforms/ixp400/ixp425/IxOsalOsIxp425Base.h | 72 ++++++++++
- os/linux/include/platforms/ixp400/ixp425/IxOsalOsIxp425Sys.h | 10 -
- 2 files changed, 78 insertions(+), 4 deletions(-)
-
---- ixp_osal/os/linux/include/platforms/ixp400/ixp425/IxOsalOsIxp425Sys.h 1970-01-01 00:00:00.000000000 +0000
-+++ ixp_osal/os/linux/include/platforms/ixp400/ixp425/IxOsalOsIxp425Sys.h 1970-01-01 00:00:00.000000000 +0000
-@@ -53,6 +53,8 @@
- #error "Error: IxOsalOsIxp425Sys.h cannot be included directly before IxOsalOsIxp400.h"
- #endif
-
-+#include "IxOsalOsIxp425Base.h"
-+
- /* Memory Base Address */
- #define IX_OSAL_IXP400_EXP_BUS_PHYS_BASE IXP425_EXP_BUS_BASE2_PHYS
- #define IX_OSAL_IXP400_EXP_BUS_BOOT_PHYS_BASE IXP425_EXP_BUS_BASE1_PHYS
-@@ -98,12 +100,12 @@ IxOsalMemoryMap ixOsalGlobalMemoryMap[]
- * Queue Manager
- */
- {
-- IX_OSAL_STATIC_MAP, /* type */
-+ IX_OSAL_DYNAMIC_MAP, /* type */
- IX_OSAL_IXP400_QMGR_PHYS_BASE, /* physicalAddress */
- IX_OSAL_IXP400_QMGR_MAP_SIZE, /* size */
-- IX_OSAL_IXP400_QMGR_VIRT_BASE, /* virtualAddress */
-- NULL, /* mapFunction */
-- NULL, /* unmapFunction */
-+ 0, /* virtualAddress */
-+ ixOsalLinuxMemMap, /* mapFunction */
-+ ixOsalLinuxMemUnmap, /* unmapFunction */
- 0, /* refCount */
- IX_OSAL_BE | IX_OSAL_LE_DC, /* endianType */
- "qMgr" /* name */
---- ixp_osal/os/linux/include/platforms/ixp400/ixp425/IxOsalOsIxp425Base.h 1970-01-01 00:00:00.000000000 +0000
-+++ ixp_osal/os/linux/include/platforms/ixp400/ixp425/IxOsalOsIxp425Base.h 1970-01-01 00:00:00.000000000 +0000
-@@ -0,0 +1,80 @@
-+/*
-+ * Glue for the current linux definitons of this stuff.
-+ */
-+#ifndef IxOsalOsIxp425Base_H
-+#define IxOsalOsIxp425Base_H 1
-+#include <asm-arm/arch-ixp4xx/ixp4xx-regs.h>
-+#include <linux/version.h>
-+
-+/* Force Address Coherent (the default) mapping on LE - Linux 2.6
-+ * does not have a way of changing it.
-+ */
-+#if defined IX_OSAL_LINUX_LE
-+# if !defined IX_OSAL_ENFORCED_LE_AC_MAPPING
-+# define IX_OSAL_ENFORCED_LE_AC_MAPPING
-+# endif
-+# if defined IX_OSAL_LE_DC_MAPPING
-+# error Little Endian Data Coherent mapping not supported on this platform
-+# endif
-+
-+/* This doesn't matter on a BE build because it will never be used,
-+ * however it will be selected and will fail on an LE build.
-+ */
-+# undef IX_OSAL_LE_DC
-+# define IX_OSAL_LE_DC IX_OSAL_LE_DC_IS_INVALID_ON_THIS_PLATFORM
-+#endif
-+
-+/* Physical addresses. */
-+#define IXP425_PERIPHERAL_BASE_PHYS IXP4XX_PERIPHERAL_BASE_PHYS
-+#define IXP425_EXP_CFG_BASE_PHYS IXP4XX_EXP_CFG_BASE_PHYS
-+#define IXP425_PCI_CFG_BASE_PHYS IXP4XX_PCI_CFG_BASE_PHYS
-+
-+//#define IXP425_EXP_BUS_BASE1_PHYS
-+#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,16)
-+#define IXP425_EXP_BUS_BASE2_PHYS IXP4XX_EXP_BUS_CS2_BASE_PHYS
-+#else
-+/* The following definition should be IXP4XX_EXP_BUS_BASE(2), but that is not
-+ static and causes compilation problems later. So we need to hard-code it.
-+ Note that this hard-coded value is only correct for IXP42X. */
-+#define IXP425_EXP_BUS_BASE2_PHYS (IXP4XX_EXP_BUS_BASE_PHYS + (2 * SZ_16M))
-+#endif
-+//#define IXP425_EXP_BUS_CS0_BASE_PHYS
-+//#define IXP425_EXP_BUS_CS1_BASE_PHYS
-+//#define IXP425_EXP_BUS_CS4_BASE_PHYS
-+#define IXP425_EthA_BASE_PHYS (IXP4XX_PERIPHERAL_BASE_PHYS + 0x9000)
-+#define IXP425_EthB_BASE_PHYS (IXP4XX_PERIPHERAL_BASE_PHYS + 0xA000)
-+//#define IXP425_GPIO_BASE_PHYS
-+#define IXP425_INTC_BASE_PHYS IXP4XX_INTC_BASE_PHYS
-+//#define IXP425_NPEA_BASE_PHYS
-+//#define IXP425_NPEB_BASE_PHYS
-+//#define IXP425_NPEC_BASE_PHYS
-+//#define IXP425_PMU_BASE_PHYS
-+#define IXP425_QMGR_BASE_PHYS IXP4XX_QMGR_BASE_PHYS
-+#define IXP425_TIMER_BASE_PHYS IXP4XX_TIMER_BASE_PHYS
-+//#define IXP425_UART1_BASE_PHYS
-+//#define IXP425_UART2_BASE_PHYS
-+#define IXP425_USB_BASE_PHYS IXP4XX_USB_BASE_PHYS
-+
-+/* Virtual addresses. */
-+#define IXP425_PERIPHERAL_BASE_VIRT IXP4XX_PERIPHERAL_BASE_VIRT
-+#define IXP425_PERIPHERAL_REGION_SIZE IXP4XX_PERIPHERAL_REGION_SIZE
-+#define IXP425_EXP_CFG_BASE_VIRT IXP4XX_EXP_CFG_BASE_VIRT
-+#define IXP425_PCI_CFG_BASE_VIRT IXP4XX_PCI_CFG_BASE_VIRT
-+
-+//#define IXP425_EthA_BASE_VIRT
-+//#define IXP425_EthB_BASE_VIRT
-+//#define IXP425_GPIO_BASE_VIRT
-+//#define IXP425_NPEA_BASE_VIRT
-+//#define IXP425_NPEB_BASE_VIRT
-+//#define IXP425_NPEC_BASE_VIRT
-+//#define IXP425_QMGR_BASE_VIRT /* must be ioremapped on Linux 2.6 */
-+//#define IXP425_TIMER_BASE_VIRT
-+//#define IXP425_UART1_BASE_VIRT
-+//#define IXP425_UART2_BASE_VIRT
-+//#define IXP425_USB_BASE_VIRT
-+
-+/* Miscellaneous stuff. */
-+#define IRQ_IXP425_XSCALE_PMU IRQ_IXP4XX_XSCALE_PMU
-+#define IXP425_ICMR IXP4XX_ICMR
-+#define IRQ_IXP425_USB IRQ_IXP4XX_USB
-+#endif
diff --git a/recipes/ixp4xx/ixp-osal-2.1/le.patch b/recipes/ixp4xx/ixp-osal-2.1/le.patch
deleted file mode 100644
index a6936ea33b..0000000000
--- a/recipes/ixp4xx/ixp-osal-2.1/le.patch
+++ /dev/null
@@ -1,72 +0,0 @@
- include/modules/ioMem/IxOsalIoMem.h | 4 ++--
- include/modules/ioMem/IxOsalMemAccess.h | 2 +-
- os/linux/include/platforms/ixp400/IxOsalOsIxp400CustomizedMapping.h | 2 +-
- os/linux/include/platforms/ixp400/ixp425/IxOsalOsIxp425Sys.h | 2 +-
- os/linux/src/modules/ioMem/IxOsalOsIoMem.c | 3 +++
- 5 files changed, 8 insertions(+), 5 deletions(-)
-
---- ixp_osal/include/modules/ioMem/IxOsalIoMem.h 1970-01-01 00:00:00.000000000 +0000
-+++ ixp_osal/include/modules/ioMem/IxOsalIoMem.h 1970-01-01 00:00:00.000000000 +0000
-@@ -117,8 +117,8 @@ ixOsalCoreWordSwap (UINT32 wordIn)
- #endif /* ndef __wince */
-
- #define IX_OSAL_SWAP_SHORT(sData) ((sData >> 8) | ((sData & 0xFF) << 8))
--#define IX_OSAL_SWAP_SHORT_ADDRESS(sAddr) ((sAddr) ^ 0x2)
--#define IX_OSAL_SWAP_BYTE_ADDRESS(bAddr) ((bAddr) ^ 0x3)
-+#define IX_OSAL_SWAP_SHORT_ADDRESS(sAddr) ((UINT16*)((UINT32)(sAddr) ^ 0x2))
-+#define IX_OSAL_SWAP_BYTE_ADDRESS(bAddr) ((UINT8*)((UINT32)(bAddr) ^ 0x3))
-
- #define IX_OSAL_BE_XSTOBUSL(wData) (wData)
- #define IX_OSAL_BE_XSTOBUSS(sData) (sData)
---- ixp_osal/include/modules/ioMem/IxOsalMemAccess.h 1970-01-01 00:00:00.000000000 +0000
-+++ ixp_osal/include/modules/ioMem/IxOsalMemAccess.h 1970-01-01 00:00:00.000000000 +0000
-@@ -84,7 +84,7 @@
-
- #elif defined (IX_OSAL_LINUX_LE)
-
--#define IX_SDRAM_LE_DATA_COHERENT
-+#define IX_SDRAM_LE_ADDRESS_COHERENT
-
- #elif defined (IX_OSAL_WINCE_LE)
-
---- ixp_osal/os/linux/include/platforms/ixp400/IxOsalOsIxp400CustomizedMapping.h 1970-01-01 00:00:00.000000000 +0000
-+++ ixp_osal/os/linux/include/platforms/ixp400/IxOsalOsIxp400CustomizedMapping.h 1970-01-01 00:00:00.000000000 +0000
-@@ -171,7 +171,7 @@
- ***************************/
- #if (IX_COMPONENT_NAME == ix_qmgr)
-
--#define IX_OSAL_LE_DC_MAPPING
-+#define IX_OSAL_LE_AC_MAPPING
-
- #endif /* qmgr */
-
---- ixp_osal/os/linux/include/platforms/ixp400/ixp425/IxOsalOsIxp425Sys.h 1970-01-01 00:00:00.000000000 +0000
-+++ ixp_osal/os/linux/include/platforms/ixp400/ixp425/IxOsalOsIxp425Sys.h 1970-01-01 00:00:00.000000000 +0000
-@@ -107,7 +107,7 @@ IxOsalMemoryMap ixOsalGlobalMemoryMap[]
- ixOsalLinuxMemMap, /* mapFunction */
- ixOsalLinuxMemUnmap, /* unmapFunction */
- 0, /* refCount */
-- IX_OSAL_BE | IX_OSAL_LE_DC, /* endianType */
-+ IX_OSAL_BE | IX_OSAL_LE_AC, /* endianType */
- "qMgr" /* name */
- },
-
---- ixp_osal/os/linux/src/modules/ioMem/IxOsalOsIoMem.c 1970-01-01 00:00:00.000000000 +0000
-+++ ixp_osal/os/linux/src/modules/ioMem/IxOsalOsIoMem.c 1970-01-01 00:00:00.000000000 +0000
-@@ -45,6 +45,7 @@
- * -- End Intel Copyright Notice --
- */
-
-+#include <asm/page.h>
- #include <asm/io.h>
- #include <linux/ioport.h>
-
-@@ -54,6 +55,8 @@
- PUBLIC void
- ixOsalLinuxMemMap (IxOsalMemoryMap * map)
- {
-+ /* Linux requires LE mappings to use address coherency */
-+ IX_OSAL_ENSURE((map->mapEndianType & IX_OSAL_LE_DC) == 0, "LE Data Coherency not supported");
- map->virtualAddress = (UINT32) ioremap (map->physicalAddress, map->size);
- }
-
diff --git a/recipes/ixp4xx/ixp-osal_1.5.bb b/recipes/ixp4xx/ixp-osal_1.5.bb
deleted file mode 100644
index eac1c1c28d..0000000000
--- a/recipes/ixp4xx/ixp-osal_1.5.bb
+++ /dev/null
@@ -1,72 +0,0 @@
-# Intel ixp4xx access library software. Note that this has an Intel
-# license which restricts its use.
-HOMEPAGE = "http://www.intel.com/design/network/products/npfamily/ixp420.htm"
-LICENSE = "http://www.intel.com/design/network/swsup/np_sla/ixp400.htm"
-LICENSE_HOMEPAGE = "http://www.intel.com/design/network/products/npfamily/ixp425swr1.htm"
-# You must download the following software to your OpenEmbedded downloads
-# directory before using this package:
-#
-# ixp400AccessLibrary-1_5.zip
-#
-# To do this go to the LICENSE_HOMEPAGE above, register/login (using a
-# web browser which is supported by the login page), this will give you
-# access to the web page from which you can download the software - you
-# need the: "Intel® IXP400 Software and RedBoot* Boot Loader" and, from
-# this the "Intel Hardware Access Software" (versions 1.5 encryption is
-# not required.)
-#
-# Store the file with the name given below in your downloads directory
-#
-SRC_URI = "http://www.intel.com/Please-Read-The-BB-File/ixp400AccessLibrary-1_5.zip"
-SRC_URI += "file://2.6.patch;patch=1"
-S = "${WORKDIR}/ixp_osal"
-PR = "r1"
-
-COMPATIBLE_HOST = "^armeb-linux.*"
-COMPATIBLE_MACHINE = "(nslu2|ixp4xx)"
-
-inherit module
-
-EXTRA_OEMAKE = "'CC=${KERNEL_CC}' \
- 'LD=${KERNEL_LD}' \
- 'AR=${AR}' \
- 'IX_XSCALE_SW=${S}' \
- 'IX_TARGET=linuxbe' \
- 'IX_MPHY=1' \
- 'IX_MPHYSINGLEPORT=1' \
- 'LINUX_SRC=${STAGING_KERNEL_DIR}' \
- 'LINUX_CROSS_COMPILE=${HOST_PREFIX}' \
- "
-
-OSAL_PATH = "lib/linux/linuxbe/ixp400"
-# This is a somewhat arbitrary choice:
-OSAL_DIR = "${STAGING_KERNEL_DIR}/ixp_osal"
-
-do_compile () {
- oe_runmake ${OSAL_PATH}/libosal.a ${OSAL_PATH}/ixp_osal.o
-}
-
-do_stage () {
- install -d ${OSAL_DIR}
-
- # First the include files, maintain the tree structure (ixp4xx-csr
- # expects the exact same tree)
- cp -RLf include ${OSAL_DIR}
- install -d ${OSAL_DIR}/os/linux
- cp -RLf os/linux/include ${OSAL_DIR}/os/linux
-
- # Install the library/object
- install -d ${OSAL_DIR}/${OSAL_PATH}
- rm -f ${OSAL_DIR}/libosal
- install -m 0644 ${OSAL_PATH}/libosal.a ${OSAL_DIR}/${OSAL_PATH}
- touch ${OSAL_DIR}/libosal
- rm -f ${OSAL_DIR}/module
- install -m 0644 ${OSAL_PATH}/ixp_osal.o ${OSAL_DIR}/${OSAL_PATH}
- touch ${OSAL_DIR}/module
-}
-
-# This stuff doesn't install anything...
-PACKAGES = ""
-
-do_install () {
-}
diff --git a/recipes/ixp4xx/ixp-osal_2.0.bb b/recipes/ixp4xx/ixp-osal_2.0.bb
deleted file mode 100644
index 009d45d67a..0000000000
--- a/recipes/ixp4xx/ixp-osal_2.0.bb
+++ /dev/null
@@ -1,82 +0,0 @@
-# Intel ixp4xx access library software. Note that this has an Intel
-# license which restricts its use.
-HOMEPAGE = "http://www.intel.com/design/network/products/npfamily/ixp420.htm"
-LICENSE = "http://www.intel.com/design/network/swsup/np_sla/ixp400.htm"
-LICENSE_HOMEPAGE = "http://www.intel.com/design/network/products/npfamily/ixp425swr1.htm"
-# You must download the following software to your OpenEmbedded downloads
-# directory before using this package:
-#
-# IPL_ixp400AccessLibrary-2_0.zip
-#
-# To do this go to the LICENSE_HOMEPAGE above, register/login (using a
-# web browser which is supported by the login page), this will give you
-# access to the web page from which you can download the software - you
-# need the: "Intel® IXP400 Software and RedBoot* Boot Loader" and, from
-# this the "Intel Hardware Access Software" (versions 2.0 encryption is
-# not required.)
-#
-# Store the file with the name given below in your downloads directory
-# and store the 32 character md5sum of the file in a file of the same
-# name with the additional extension .md5:
-#
-# IPL_ixp400AccessLibrary-2_0.zip.md5
-#
-SRC_URI = "http://www.intel.com/Please-Read-The-BB-File/IPL_ixp400AccessLibrary-2_0.zip"
-SRC_URI += "file://Makefile.patch;patch=1"
-SRC_URI += "file://2.6.patch;patch=1"
-SRC_URI += "file://le.patch;patch=1"
-S = "${WORKDIR}/ixp_osal"
-PR = "r4"
-
-COMPATIBLE_HOST = "^arm.*-linux.*"
-COMPATIBLE_MACHINE = "(nslu2|ixp4xx)"
-
-inherit module
-
-IX_TARGET = "linux${SITEINFO_ENDIANESS}"
-
-EXTRA_OEMAKE = "'CC=${KERNEL_CC}' \
- 'LD=${KERNEL_LD}' \
- 'AR=${AR}' \
- 'IX_XSCALE_SW=${S}' \
- 'IX_TARGET=${IX_TARGET}' \
- 'IX_DEVICE=ixp42X' \
- 'LINUX_SRC=${STAGING_KERNEL_DIR}' \
- 'LINUX_CROSS_COMPILE=${HOST_PREFIX}' \
- "
-
-OSAL_PATH = "lib/ixp425/linux/${IX_TARGET}"
-# This is a somewhat arbitrary choice:
-OSAL_DIR = "${STAGING_KERNEL_DIR}/ixp_osal"
-
-do_compile () {
- oe_runmake ${OSAL_PATH}/libosal.a ${OSAL_PATH}/ixp_osal.o
-}
-
-do_stage () {
- # Clean the directory first, this ensures incremental builds have
- # a slightly better chance of working
- rm -rf ${OSAL_DIR}
- install -d ${OSAL_DIR}
-
- # First the include files, maintain the tree structure (ixp4xx-csr
- # expects the exact same tree)
- cp -RLf include ${OSAL_DIR}
- install -d ${OSAL_DIR}/os/linux
- cp -RLf os/linux/include ${OSAL_DIR}/os/linux
-
- # Install the library/object
- install -d ${OSAL_DIR}/${OSAL_PATH}
- rm -f ${OSAL_DIR}/libosal
- install -m 0644 ${OSAL_PATH}/libosal.a ${OSAL_DIR}/${OSAL_PATH}
- touch ${OSAL_DIR}/libosal
- rm -f ${OSAL_DIR}/module
- install -m 0644 ${OSAL_PATH}/ixp_osal.o ${OSAL_DIR}/${OSAL_PATH}
- touch ${OSAL_DIR}/module
-}
-
-# This stuff doesn't install anything...
-PACKAGES = ""
-
-do_install () {
-}
diff --git a/recipes/ixp4xx/ixp-osal_2.1.1.bb b/recipes/ixp4xx/ixp-osal_2.1.1.bb
deleted file mode 100644
index 481033fd0a..0000000000
--- a/recipes/ixp4xx/ixp-osal_2.1.1.bb
+++ /dev/null
@@ -1,101 +0,0 @@
-DEFAULT_PREFERENCE = "-1"
-# Intel ixp4xx access library software. Note that this has an Intel
-# license which restricts its use.
-HOMEPAGE = "http://www.intel.com/design/network/products/npfamily/ixp420.htm"
-LICENSE = "http://www.intel.com/design/network/swsup/np_sla/ixp400.htm"
-LICENSE_HOMEPAGE = "http://www.intel.com/design/network/products/npfamily/ixp425swr1.htm"
-# You must download the following software to your OpenEmbedded downloads
-# directory before using this package:
-#
-# BSD_ixp400AccessLibrary-2_1.zip
-# BSD_ixp400AccessLibrary-2_1_1.zip
-#
-# To do this go to the LICENSE_HOMEPAGE above, register/login (using a
-# web browser which is supported by the login page), this will give you
-# access to the web page from which you can download the software - you
-# need the: "Intel® IXP400 Software and RedBoot* Boot Loader" and, from
-# this the "Intel Hardware Access Software" (versions 2.1 encryption is
-# not required.)
-#
-# Store the file with the name given below in your downloads directory
-# and store the 32 character md5sum of the file in a file of the same
-# name with the additional extension .md5:
-#
-# BSD_ixp400AccessLibrary-2_1.zip.md5
-# BSD_ixp400AccessLibrary-2_1_1.zip.md5
-#
-SRC_URI = "http://www.intel.com/Please-Read-The-BB-File/BSD_ixp400AccessLibrary-2_1.zip"
-SRC_URI += "http://www.intel.com/Please-Read-The-BB-File/BSD_ixp400AccessLibrary-2_1_1.zip"
-SRC_URI += "file://Makefile.patch;patch=1"
-SRC_URI += "file://2.6.patch;patch=1"
-SRC_URI += "file://invalidate-cache.patch;patch=1"
-SRC_URI += "file://ixp4xx-header.patch;patch=1"
-SRC_URI += "file://le.patch;patch=1"
-SRC_URI += "file://assert.patch;patch=1"
-
-S = "${WORKDIR}/ixp_osal"
-PR = "r0"
-
-COMPATIBLE_HOST = "^arm.*-linux.*"
-COMPATIBLE_MACHINE = "(nslu2|ixp4xx)"
-
-inherit module
-
-do_pre_patch () {
- ( cd ${WORKDIR} ; mkdir patches ; mv BSD_ixp400AccessLibrary-2_1_1.patch patches/ ; \
- echo "BSD_ixp400AccessLibrary-2_1_1.patch -p0" >> patches/series ; \
- quilt push )
-}
-
-addtask pre_patch before do_patch
-
-IX_TARGET = "linux${SITEINFO_ENDIANESS}"
-IX_ENSURE = ""
-#IX_ENSURE = "IX_OSAL_ENSURE_ON=1"
-
-EXTRA_OEMAKE = "'CC=${KERNEL_CC}' \
- 'LD=${KERNEL_LD}' \
- 'AR=${AR}' \
- 'IX_XSCALE_SW=${S}' \
- 'IX_TARGET=${IX_TARGET}' \
- 'IX_DEVICE=ixp42X' \
- ${IX_ENSURE} \
- 'LINUX_SRC=${STAGING_KERNEL_DIR}' \
- 'LINUX_CROSS_COMPILE=${HOST_PREFIX}' \
- "
-
-OSAL_PATH = "lib/ixp425/linux/${IX_TARGET}"
-# This is a somewhat arbitrary choice:
-OSAL_DIR = "${STAGING_KERNEL_DIR}/ixp_osal"
-
-do_compile () {
- oe_runmake ${OSAL_PATH}/libosal.a ${OSAL_PATH}/ixp_osal.o
-}
-
-do_stage () {
- # Clean the directory first, this ensures incremental builds have
- # a slightly better chance of working
- rm -rf ${OSAL_DIR}
- install -d ${OSAL_DIR}
-
- # First the include files, maintain the tree structure (ixp4xx-csr
- # expects the exact same tree)
- cp -RLf include ${OSAL_DIR}
- install -d ${OSAL_DIR}/os/linux
- cp -RLf os/linux/include ${OSAL_DIR}/os/linux
-
- # Install the library/object
- install -d ${OSAL_DIR}/${OSAL_PATH}
- rm -f ${OSAL_DIR}/libosal
- install -m 0644 ${OSAL_PATH}/libosal.a ${OSAL_DIR}/${OSAL_PATH}
- touch ${OSAL_DIR}/libosal
- rm -f ${OSAL_DIR}/module
- install -m 0644 ${OSAL_PATH}/ixp_osal.o ${OSAL_DIR}/${OSAL_PATH}
- touch ${OSAL_DIR}/module
-}
-
-# This stuff doesn't install anything...
-PACKAGES = ""
-
-do_install () {
-}
diff --git a/recipes/ixp4xx/ixp-osal_2.1.bb b/recipes/ixp4xx/ixp-osal_2.1.bb
deleted file mode 100644
index dd70289598..0000000000
--- a/recipes/ixp4xx/ixp-osal_2.1.bb
+++ /dev/null
@@ -1,89 +0,0 @@
-# Intel ixp4xx access library software. Note that this has an Intel
-# license which restricts its use.
-HOMEPAGE = "http://www.intel.com/design/network/products/npfamily/ixp420.htm"
-LICENSE = "http://www.intel.com/design/network/swsup/np_sla/ixp400.htm"
-LICENSE_HOMEPAGE = "http://www.intel.com/design/network/products/npfamily/ixp425swr1.htm"
-# You must download the following software to your OpenEmbedded downloads
-# directory before using this package:
-#
-# IPL_ixp400AccessLibrary-2_1.zip
-#
-# To do this go to the LICENSE_HOMEPAGE above, register/login (using a
-# web browser which is supported by the login page), this will give you
-# access to the web page from which you can download the software - you
-# need the: "Intel® IXP400 Software and RedBoot* Boot Loader" and, from
-# this the "Intel Hardware Access Software" (versions 2.1 encryption is
-# not required.)
-#
-# Store the file with the name given below in your downloads directory
-# and store the 32 character md5sum of the file in a file of the same
-# name with the additional extension .md5:
-#
-# IPL_ixp400AccessLibrary-2_1.zip.md5
-#
-SRC_URI = "http://www.intel.com/Please-Read-The-BB-File/IPL_ixp400AccessLibrary-2_1.zip"
-SRC_URI += "file://Makefile.patch;patch=1"
-SRC_URI += "file://2.6.patch;patch=1"
-SRC_URI += "file://invalidate-cache.patch;patch=1"
-SRC_URI += "file://ixp4xx-header.patch;patch=1"
-SRC_URI += "file://le.patch;patch=1"
-SRC_URI += "file://assert.patch;patch=1"
-
-S = "${WORKDIR}/ixp_osal"
-PR = "r6"
-
-COMPATIBLE_HOST = "^arm.*-linux.*"
-COMPATIBLE_MACHINE = "(nslu2|ixp4xx)"
-
-inherit module
-
-IX_TARGET = "linux${SITEINFO_ENDIANESS}"
-IX_ENSURE = ""
-#IX_ENSURE = "IX_OSAL_ENSURE_ON=1"
-
-EXTRA_OEMAKE = "'CC=${KERNEL_CC}' \
- 'LD=${KERNEL_LD}' \
- 'AR=${AR}' \
- 'IX_XSCALE_SW=${S}' \
- 'IX_TARGET=${IX_TARGET}' \
- 'IX_DEVICE=ixp42X' \
- ${IX_ENSURE} \
- 'LINUX_SRC=${STAGING_KERNEL_DIR}' \
- 'LINUX_CROSS_COMPILE=${HOST_PREFIX}' \
- "
-
-OSAL_PATH = "lib/ixp425/linux/${IX_TARGET}"
-# This is a somewhat arbitrary choice:
-OSAL_DIR = "${STAGING_KERNEL_DIR}/ixp_osal"
-
-do_compile () {
- oe_runmake ${OSAL_PATH}/libosal.a ${OSAL_PATH}/ixp_osal.o
-}
-
-do_stage () {
- # Clean the directory first, this ensures incremental builds have
- # a slightly better chance of working
- rm -rf ${OSAL_DIR}
- install -d ${OSAL_DIR}
-
- # First the include files, maintain the tree structure (ixp4xx-csr
- # expects the exact same tree)
- cp -RLf include ${OSAL_DIR}
- install -d ${OSAL_DIR}/os/linux
- cp -RLf os/linux/include ${OSAL_DIR}/os/linux
-
- # Install the library/object
- install -d ${OSAL_DIR}/${OSAL_PATH}
- rm -f ${OSAL_DIR}/libosal
- install -m 0644 ${OSAL_PATH}/libosal.a ${OSAL_DIR}/${OSAL_PATH}
- touch ${OSAL_DIR}/libosal
- rm -f ${OSAL_DIR}/module
- install -m 0644 ${OSAL_PATH}/ixp_osal.o ${OSAL_DIR}/${OSAL_PATH}
- touch ${OSAL_DIR}/module
-}
-
-# This stuff doesn't install anything...
-PACKAGES = ""
-
-do_install () {
-}
diff --git a/recipes/ixp4xx/ixp4xx-csr-1.5/2.6.patch b/recipes/ixp4xx/ixp4xx-csr-1.5/2.6.patch
deleted file mode 100644
index 58c3cbded5..0000000000
--- a/recipes/ixp4xx/ixp4xx-csr-1.5/2.6.patch
+++ /dev/null
@@ -1,238 +0,0 @@
-diff -Naur ixp400_xscale_sw.orig/Makefile ixp400_xscale_sw/Makefile
---- ixp400_xscale_sw.orig/Makefile 2005-08-24 00:16:35.000000000 +0200
-+++ ixp400_xscale_sw/Makefile 2005-08-30 19:01:47.000000000 +0200
-@@ -93,15 +93,16 @@
- # platforms. Components that work only for a subset of platforms
- # should be added to the relevant *_COMPONENTS lists.
- #
--BI_ENDIAN_COMPONENTS := atmdAcc atmm atmsch qmgr npeMh npeDl ethAcc ethDB ethMii hssAcc usb uartAcc featureCtrl ossl osServices
-
-+# Intel default value: atmdAcc atmm atmsch qmgr npeMh npeDl ethAcc ethDB ethMii hssAcc usb uartAcc featureCtrl ossl osServices
-+BI_ENDIAN_COMPONENTS := qmgr npeMh npeDl ethAcc ethDB ethMii ossl osServices featureCtrl
-
- # The lists below contain the set of components available for each target platform
- vxbe_COMPONENTS := $(BI_ENDIAN_COMPONENTS) perfProfAcc dmaAcc
- vxle_COMPONENTS := $(BI_ENDIAN_COMPONENTS) perfProfAcc
- vxsim_COMPONENTS := $(BI_ENDIAN_COMPONENTS) dmaAcc
--linuxbe_COMPONENTS := $(BI_ENDIAN_COMPONENTS) perfProfAcc dmaAcc
--linuxle_COMPONENTS := $(BI_ENDIAN_COMPONENTS) perfProfAcc
-+linuxbe_COMPONENTS := $(BI_ENDIAN_COMPONENTS) # perfProfAcc dmaAcc
-+linuxle_COMPONENTS := $(BI_ENDIAN_COMPONENTS) # perfProfAcc
-
- # To facilitate automated builds, do not modify the value of COMPONENTS directly -
- # just change the per-platform component lists above.
-@@ -222,10 +223,12 @@
- else # IX_TARGET_OS == vxworks
-
- # Linux tool names
--ifeq ($(IX_TARGET), linuxbe)
--LINUX_CROSS_COMPILE := $(HARDHAT_BASE)/devkit/arm/xscale_be/bin/xscale_be-
--else
--LINUX_CROSS_COMPILE := $(HARDHAT_BASE)/devkit/arm/xscale_le/bin/xscale_le-
-+ifeq "$(LINUX_CROSS_COMPILE)" ""
-+ ifeq ($(IX_TARGET), linuxbe)
-+ LINUX_CROSS_COMPILE := $(HARDHAT_BASE)/devkit/arm/xscale_be/bin/xscale_be-
-+ else
-+ LINUX_CROSS_COMPILE := $(HARDHAT_BASE)/devkit/arm/xscale_le/bin/xscale_le-
-+ endif
- endif
-
- LD := $(LINUX_CROSS_COMPILE)ld
-@@ -253,7 +256,9 @@
-
- LINUX_MACH_CFLAGS := -D__LINUX_ARM_ARCH__=5 -mcpu=xscale -mtune=xscale
-
--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)
-+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)
-+
-+# -mshort-load-bytes removed by Marc Singer's patch TODO(hannes) why?
-
- # Linux linker flags
- LDFLAGS := -r
-@@ -1139,9 +1144,14 @@
-
- ixp400.o : $(OBJ_DIR)/ixp400.o
-
-+ixp400.ko : $(OBJ_DIR)/ixp400.o
-
--$(OBJ_DIR)/ixp400.o: $(COMPONENTS:%=$(OBJ_DIR)/ixp400_%.o) $(NPE_PRODUCTION_HEADER_OBJ) $(OSAL_MODULE)
-+$(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
-+ touch $(OBJ_DIR)/ixp400.c
-+ cp Makefile.kmod26 $(OBJ_DIR)/Makefile
-+ make -C $(OBJ_DIR)
- $(LD) $(LDFLAGS) $^ -o $@
-+ make -C $(OBJ_DIR)
-
-
-
-diff -Naur ixp400_xscale_sw.orig/Makefile.kmod26 ixp400_xscale_sw/Makefile.kmod26
---- ixp400_xscale_sw.orig/Makefile.kmod26 1970-01-01 01:00:00.000000000 +0100
-+++ ixp400_xscale_sw/Makefile.kmod26 2005-08-24 22:33:12.000000000 +0200
-@@ -0,0 +1,11 @@
-+obj-m := ixp400.o
-+
-+PWD := $(shell pwd)
-+
-+LINUX_SRC := $($(IX_TARGET)_KERNEL_DIR)
-+
-+default:
-+ $(MAKE) ARCH=arm CROSS_COMPILE=$(LINUX_CROSS_COMPILE) V=1 -C $(LINUX_SRC) SUBDIRS=$(PWD) modules
-+
-+clean:
-+ rm -f ixp400.ko
-diff -Naur ixp400_xscale_sw.orig/Readme-Kernel-2_6-Patch.txt ixp400_xscale_sw/Readme-Kernel-2_6-Patch.txt
---- ixp400_xscale_sw.orig/Readme-Kernel-2_6-Patch.txt 1970-01-01 01:00:00.000000000 +0100
-+++ ixp400_xscale_sw/Readme-Kernel-2_6-Patch.txt 2005-09-28 19:50:30.000000000 +0200
-@@ -0,0 +1,49 @@
-+This file describes a patch to use version 1.5 of the Intel Ixp4XX
-+Access Library with Linux 2.6 kernels.
-+
-+Authors/History
-+---------------
-+
-+This patch consists of the changes made by Marc Singer for use of
-+version 1.5 of the library with the APEX bootloader, and a patch made
-+by Robin Farine and Tom Winkler for use of version 1.4 of the library
-+with Linux-2.6 kernels. These changes were merged together by Hannes
-+Reich.
-+
-+Both patches are incorporated in their entirety, with the exception of
-+some tweaks to sleep times in the ethAcc code and modifications to
-+the code in src/codelets/usb/ from the Robin Farine / Tom Winkler
-+patch.
-+
-+Status
-+------
-+
-+This code has been tested on a Linksys NSLU2. It works in big-endian
-+mode, performance seems around 10% faster than 1.4.
-+
-+The code does not work in little-endian mode. It appears as though the
-+hardware is initialised correctly, but packet receive / transmit done
-+callbacks are never called.
-+
-+Licence Information
-+-------------------
-+
-+The patch is licenced under the same conditions as the original Access
-+Library 1.5 (INTEL SOFTWARE LICENSE AGREEMENT). The full text of the
-+licence can be downloaded from:
-+http://www.intel.com/design/network/swsup/np_sla/ixp400.htm
-+
-+The patch is free, unsupported and the authors make no warranties.
-+Use it at your own risk, do with it as you see fit so long as you do
-+not violate the original licence agreement.
-+
-+The authors permit derivative works based upon the patch.
-+
-+References
-+----------
-+
-+The version 1.4 patch by Robin Farine and Tom Winkler is available from
-+http://www.wnk.at/ixp400_accesslib_kernel26/data/patch_accesslib_kernel26_20040811.diff
-+
-+The version 1.5 patch by Marc Singer is at
-+http://wiki.buici.com/bin/view/Main/IXPAccessLibrary
-diff -Naur ixp400_xscale_sw.orig/src/codelets/dmaAcc/IxDmaAccCodelet_p.h ixp400_xscale_sw/src/codelets/dmaAcc/IxDmaAccCodelet_p.h
---- ixp400_xscale_sw.orig/src/codelets/dmaAcc/IxDmaAccCodelet_p.h 2005-08-24 00:16:36.000000000 +0200
-+++ ixp400_xscale_sw/src/codelets/dmaAcc/IxDmaAccCodelet_p.h 2005-08-24 00:18:02.000000000 +0200
-@@ -113,7 +113,7 @@
- * @return IX_FAIL - Error initialising codelet
- */
- IX_STATUS
--ixDmaAccCodeletInit(IxDmaNpeId npeId);
-+ixDmaAccCodeletInit(IxNpeDlNpeId npeId);
-
- /**
- * @fn ixDmaAccCodeletTestPerform( UINT16 transferLength,
-diff -Naur ixp400_xscale_sw.orig/src/ethDB/include/IxEthDB_p.h ixp400_xscale_sw/src/ethDB/include/IxEthDB_p.h
---- ixp400_xscale_sw.orig/src/ethDB/include/IxEthDB_p.h 2005-08-24 00:16:36.000000000 +0200
-+++ ixp400_xscale_sw/src/ethDB/include/IxEthDB_p.h 2005-08-24 00:18:02.000000000 +0200
-@@ -633,7 +633,7 @@
- IX_ETH_DB_PUBLIC UINT32 ixEthDBKeyXORHash(void *macAddress);
-
- /* Port updates */
--IX_ETH_DB_PUBLIC IxEthDBStatus ixEthDBNPEUpdateHandler(IxEthDBPortId portID, IxEthDBFeature type);
-+IX_ETH_DB_PUBLIC IxEthDBStatus ixEthDBNPEUpdateHandler(IxEthDBPortId portID, IxEthDBRecordType type);
- IX_ETH_DB_PUBLIC void ixEthDBUpdatePortLearningTrees(IxEthDBPortMap triggerPorts);
- IX_ETH_DB_PUBLIC void ixEthDBNPEAccessRequest(IxEthDBPortId portID);
- IX_ETH_DB_PUBLIC void ixEthDBUpdateLock(void);
-diff -Naur ixp400_xscale_sw.orig/src/include/IxTypes.h ixp400_xscale_sw/src/include/IxTypes.h
---- ixp400_xscale_sw.orig/src/include/IxTypes.h 2005-08-24 00:16:36.000000000 +0200
-+++ ixp400_xscale_sw/src/include/IxTypes.h 2005-08-26 01:19:15.000000000 +0200
-@@ -79,6 +79,10 @@
- #endif
- #endif
-
-+#ifndef BIT
-+#define BIT(x) ((1)<<(x))
-+#endif
-+
- #include "IxOsalBackward.h"
-
- #endif /* IxTypes_H */
-diff -Naur ixp400_xscale_sw.orig/src/usb/include/usbprivatetypes.h ixp400_xscale_sw/src/usb/include/usbprivatetypes.h
---- ixp400_xscale_sw.orig/src/usb/include/usbprivatetypes.h 2005-08-24 00:16:36.000000000 +0200
-+++ ixp400_xscale_sw/src/usb/include/usbprivatetypes.h 2005-08-24 00:18:02.000000000 +0200
-@@ -164,6 +164,53 @@
- } USBEventProcessor;
-
- /* UDC Registers */
-+
-+#undef UDCCR
-+#undef UDCCS0
-+#undef UDCCS1
-+#undef UDCCS2
-+#undef UDCCS3
-+#undef UDCCS4
-+#undef UDCCS5
-+#undef UDCCS6
-+#undef UDCCS7
-+#undef UDCCS8
-+#undef UDCCS9
-+#undef UDCCS10
-+#undef UDCCS11
-+#undef UDCCS12
-+#undef UDCCS13
-+#undef UDCCS14
-+#undef UDCCS15
-+#undef UICR0
-+#undef UICR1
-+#undef USIR0
-+#undef USIR1
-+#undef UFNHR
-+#undef UFNLR
-+#undef UBCR2
-+#undef UBCR4
-+#undef UBCR7
-+#undef UBCR9
-+#undef UBCR12
-+#undef UBCR14
-+#undef UDDR0
-+#undef UDDR5
-+#undef UDDR10
-+#undef UDDR15
-+#undef UDDR1
-+#undef UDDR2
-+#undef UDDR3
-+#undef UDDR4
-+#undef UDDR6
-+#undef UDDR7
-+#undef UDDR8
-+#undef UDDR9
-+#undef UDDR11
-+#undef UDDR12
-+#undef UDDR13
-+#undef UDDR14
-+
- typedef struct /* UDCRegisters */
- {
- volatile UINT32 UDCCR;
-@@ -229,6 +276,7 @@
- volatile UINT32 UDDR14;
- } UDCRegisters;
-
-+
- typedef struct /* USBDeviceContext */
- {
- UINT32 checkPattern; /* Check pattern for verifying the context */
diff --git a/recipes/ixp4xx/ixp4xx-csr-2.0/2.6.14.patch b/recipes/ixp4xx/ixp4xx-csr-2.0/2.6.14.patch
deleted file mode 100644
index 9630e6cd4a..0000000000
--- a/recipes/ixp4xx/ixp4xx-csr-2.0/2.6.14.patch
+++ /dev/null
@@ -1,20 +0,0 @@
-# Additional patches for v2.0 on 2.6.14
---- ixp400_xscale_sw/src/oslinux/IxLinuxInit.c.orig 2005-10-01 18:21:34.731233399 -0700
-+++ ixp400_xscale_sw/src/oslinux/IxLinuxInit.c 2005-10-01 18:21:45.811930663 -0700
-@@ -160,7 +160,6 @@
- return -EEXIST;
- }
-
-- MOD_INC_USE_COUNT; /* Increment use count to prevent premature rmmod-ing */
- ixNpeDlSegmentedListHead = NULL; /* Reset linked list which keeps track of Microcode fragments */
- ixNpeDlSegmentedListTail = NULL;
- ixNpeDlTotalBytesReadIn = 0;
-@@ -225,8 +224,6 @@
- kfree (temp);
- }
-
-- MOD_DEC_USE_COUNT;
--
- return 0;
- }
-
diff --git a/recipes/ixp4xx/ixp4xx-csr-2.0/2.6.patch b/recipes/ixp4xx/ixp4xx-csr-2.0/2.6.patch
deleted file mode 100644
index 37d390bf71..0000000000
--- a/recipes/ixp4xx/ixp4xx-csr-2.0/2.6.patch
+++ /dev/null
@@ -1,148 +0,0 @@
-diff -Naur ixp400_xscale_sw.orig/Readme-Kernel-2_6-Patch.txt ixp400_xscale_sw/Readme-Kernel-2_6-Patch.txt
---- ixp400_xscale_sw.orig/Readme-Kernel-2_6-Patch.txt 1970-01-01 01:00:00.000000000 +0100
-+++ ixp400_xscale_sw/Readme-Kernel-2_6-Patch.txt 2005-09-28 19:50:30.000000000 +0200
-@@ -0,0 +1,49 @@
-+This file describes a patch to use version 1.5 of the Intel Ixp4XX
-+Access Library with Linux 2.6 kernels.
-+
-+Authors/History
-+---------------
-+
-+This patch consists of the changes made by Marc Singer for use of
-+version 1.5 of the library with the APEX bootloader, and a patch made
-+by Robin Farine and Tom Winkler for use of version 1.4 of the library
-+with Linux-2.6 kernels. These changes were merged together by Hannes
-+Reich.
-+
-+Both patches are incorporated in their entirety, with the exception of
-+some tweaks to sleep times in the ethAcc code and modifications to
-+the code in src/codelets/usb/ from the Robin Farine / Tom Winkler
-+patch.
-+
-+Status
-+------
-+
-+This code has been tested on a Linksys NSLU2. It works in big-endian
-+mode, performance seems around 10% faster than 1.4.
-+
-+The code does not work in little-endian mode. It appears as though the
-+hardware is initialised correctly, but packet receive / transmit done
-+callbacks are never called.
-+
-+Licence Information
-+-------------------
-+
-+The patch is licenced under the same conditions as the original Access
-+Library 1.5 (INTEL SOFTWARE LICENSE AGREEMENT). The full text of the
-+licence can be downloaded from:
-+http://www.intel.com/design/network/swsup/np_sla/ixp400.htm
-+
-+The patch is free, unsupported and the authors make no warranties.
-+Use it at your own risk, do with it as you see fit so long as you do
-+not violate the original licence agreement.
-+
-+The authors permit derivative works based upon the patch.
-+
-+References
-+----------
-+
-+The version 1.4 patch by Robin Farine and Tom Winkler is available from
-+http://www.wnk.at/ixp400_accesslib_kernel26/data/patch_accesslib_kernel26_20040811.diff
-+
-+The version 1.5 patch by Marc Singer is at
-+http://wiki.buici.com/bin/view/Main/IXPAccessLibrary
-diff -Naur ixp400_xscale_sw.orig/src/codelets/dmaAcc/IxDmaAccCodelet_p.h ixp400_xscale_sw/src/codelets/dmaAcc/IxDmaAccCodelet_p.h
---- ixp400_xscale_sw.orig/src/codelets/dmaAcc/IxDmaAccCodelet_p.h 2005-08-24 00:16:36.000000000 +0200
-+++ ixp400_xscale_sw/src/codelets/dmaAcc/IxDmaAccCodelet_p.h 2005-08-24 00:18:02.000000000 +0200
-@@ -113,7 +113,7 @@
- * @return IX_FAIL - Error initialising codelet
- */
- IX_STATUS
--ixDmaAccCodeletInit(IxDmaNpeId npeId);
-+ixDmaAccCodeletInit(IxNpeDlNpeId npeId);
-
- /**
- * @fn ixDmaAccCodeletTestPerform( UINT16 transferLength,
-diff -Naur ixp400_xscale_sw.orig/src/ethDB/include/IxEthDB_p.h ixp400_xscale_sw/src/ethDB/include/IxEthDB_p.h
---- ixp400_xscale_sw.orig/src/ethDB/include/IxEthDB_p.h 2005-08-24 00:16:36.000000000 +0200
-+++ ixp400_xscale_sw/src/ethDB/include/IxEthDB_p.h 2005-08-24 00:18:02.000000000 +0200
-@@ -633,7 +633,7 @@
- IX_ETH_DB_PUBLIC UINT32 ixEthDBKeyXORHash(void *macAddress);
-
- /* Port updates */
--IX_ETH_DB_PUBLIC IxEthDBStatus ixEthDBNPEUpdateHandler(IxEthDBPortId portID, IxEthDBFeature type);
-+IX_ETH_DB_PUBLIC IxEthDBStatus ixEthDBNPEUpdateHandler(IxEthDBPortId portID, IxEthDBRecordType type);
- IX_ETH_DB_PUBLIC void ixEthDBUpdatePortLearningTrees(IxEthDBPortMap triggerPorts);
- IX_ETH_DB_PUBLIC void ixEthDBNPEAccessRequest(IxEthDBPortId portID);
- IX_ETH_DB_PUBLIC void ixEthDBUpdateLock(void);
-diff -Naur ixp400_xscale_sw.orig/src/include/IxTypes.h ixp400_xscale_sw/src/include/IxTypes.h
---- ixp400_xscale_sw.orig/src/include/IxTypes.h 2005-08-24 00:16:36.000000000 +0200
-+++ ixp400_xscale_sw/src/include/IxTypes.h 2005-08-26 01:19:15.000000000 +0200
-@@ -79,6 +79,10 @@
- #endif
- #endif
-
-+#ifndef BIT
-+#define BIT(x) ((1)<<(x))
-+#endif
-+
- #include "IxOsalBackward.h"
-
- #endif /* IxTypes_H */
-diff -Naur ixp400_xscale_sw.orig/src/usb/include/usbprivatetypes.h ixp400_xscale_sw/src/usb/include/usbprivatetypes.h
---- ixp400_xscale_sw.orig/src/usb/include/usbprivatetypes.h 2005-08-24 00:16:36.000000000 +0200
-+++ ixp400_xscale_sw/src/usb/include/usbprivatetypes.h 2005-08-24 00:18:02.000000000 +0200
-@@ -164,6 +164,53 @@
- } USBEventProcessor;
-
- /* UDC Registers */
-+
-+#undef UDCCR
-+#undef UDCCS0
-+#undef UDCCS1
-+#undef UDCCS2
-+#undef UDCCS3
-+#undef UDCCS4
-+#undef UDCCS5
-+#undef UDCCS6
-+#undef UDCCS7
-+#undef UDCCS8
-+#undef UDCCS9
-+#undef UDCCS10
-+#undef UDCCS11
-+#undef UDCCS12
-+#undef UDCCS13
-+#undef UDCCS14
-+#undef UDCCS15
-+#undef UICR0
-+#undef UICR1
-+#undef USIR0
-+#undef USIR1
-+#undef UFNHR
-+#undef UFNLR
-+#undef UBCR2
-+#undef UBCR4
-+#undef UBCR7
-+#undef UBCR9
-+#undef UBCR12
-+#undef UBCR14
-+#undef UDDR0
-+#undef UDDR5
-+#undef UDDR10
-+#undef UDDR15
-+#undef UDDR1
-+#undef UDDR2
-+#undef UDDR3
-+#undef UDDR4
-+#undef UDDR6
-+#undef UDDR7
-+#undef UDDR8
-+#undef UDDR9
-+#undef UDDR11
-+#undef UDDR12
-+#undef UDDR13
-+#undef UDDR14
-+
- typedef struct /* UDCRegisters */
- {
- volatile UINT32 UDCCR;
diff --git a/recipes/ixp4xx/ixp4xx-csr-2.0/Makefile.patch b/recipes/ixp4xx/ixp4xx-csr-2.0/Makefile.patch
deleted file mode 100644
index c5a907e1f1..0000000000
--- a/recipes/ixp4xx/ixp4xx-csr-2.0/Makefile.patch
+++ /dev/null
@@ -1,61 +0,0 @@
-diff -Naur ixp400_xscale_sw.orig/Makefile ixp400_xscale_sw/Makefile
---- ixp400_xscale_sw/.pc/Makefile.patch/Makefile 2005-04-17 20:54:58.000000000 -0700
-+++ ixp400_xscale_sw/Makefile 2005-10-01 18:15:08.422924549 -0700
-@@ -312,9 +312,9 @@
- else
- # linux compiler flags
-
--LINUX_MACH_CFLAGS := -D__LINUX_ARM_ARCH__=5 -mcpu=xscale -mtune=xscale
-+LINUX_MACH_CFLAGS := -D__LINUX_ARM_ARCH__=5 -mtune=xscale
-
--CFLAGS := -D__KERNEL__ -I$(LINUX_SRC)/include -Wall -Wno-trigraphs -fno-common -pipe -mapcs-32 -mshort-load-bytes -msoft-float -DMODULE -Isrc/include -D__linux -DCPU=33 -DXSCALE=33 $(LINUX_MACH_CFLAGS)
-+CFLAGS := -D__KERNEL__ -I$(LINUX_SRC)/include -Wall -Wno-trigraphs -fno-common -pipe -mapcs-32 -msoft-float -DMODULE -Isrc/include -D__linux -DCPU=33 -DXSCALE=33 $(LINUX_MACH_CFLAGS)
- ifndef IX_INCLUDE_MICROCODE
- CFLAGS += -DIX_NPEDL_READ_MICROCODE_FROM_FILE
- endif
-@@ -806,9 +806,11 @@
-
- ifeq ($(IX_HOST_OS),linux)
- ifndef IX_INCLUDE_MICROCODE
-+ifdef IX_BUILD_MICROCODE
- Makefile: $(NPE_CONVERTER) $(NPE_DAT)
- endif
- endif
-+endif
-
- ################################################################
- # Rules to check that macros are defined.
-@@ -1253,10 +1255,18 @@
-
- ifndef IX_INCLUDE_MICROCODE
- $(OBJ_DIR)/ixp400.o: $(COMPONENTS:%=$(OBJ_DIR)/ixp400_%.o) $(OSAL_MODULE)
-+ touch $(OBJ_DIR)/ixp400.c
-+ cp Makefile.kmod26 $(OBJ_DIR)/Makefile
-+ make -C $(OBJ_DIR)
- $(LD) $(LDFLAGS) $^ -o $@
-+ make -C $(OBJ_DIR)
- else
- $(OBJ_DIR)/ixp400.o: $(COMPONENTS:%=$(OBJ_DIR)/ixp400_%.o) $(NPE_PRODUCTION_HEADER_OBJ) $(OSAL_MODULE)
-+ touch $(OBJ_DIR)/ixp400.c
-+ cp Makefile.kmod26 $(OBJ_DIR)/Makefile
-+ make -C $(OBJ_DIR)
- $(LD) $(LDFLAGS) $^ -o $@
-+ make -C $(OBJ_DIR)
- endif
-
-
-diff -Naur ixp400_xscale_sw.orig/Makefile.kmod26 ixp400_xscale_sw/Makefile.kmod26
---- ixp400_xscale_sw.orig/Makefile.kmod26 1970-01-01 01:00:00.000000000 +0100
-+++ ixp400_xscale_sw/Makefile.kmod26 2005-08-24 22:33:12.000000000 +0200
-@@ -0,0 +1,11 @@
-+obj-m := ixp400.o
-+
-+PWD := $(shell pwd)
-+
-+LINUX_SRC := $($(IX_TARGET)_KERNEL_DIR)
-+
-+default:
-+ $(MAKE) ARCH=arm CROSS_COMPILE=$(LINUX_CROSS_COMPILE) V=1 -C $(LINUX_SRC) SUBDIRS=$(PWD) modules
-+
-+clean:
-+ rm -f ixp400.ko
diff --git a/recipes/ixp4xx/ixp4xx-csr-2.0/le.patch b/recipes/ixp4xx/ixp4xx-csr-2.0/le.patch
deleted file mode 100644
index e32b795755..0000000000
--- a/recipes/ixp4xx/ixp4xx-csr-2.0/le.patch
+++ /dev/null
@@ -1,24 +0,0 @@
---- ixp400_xscale_sw/.pc/le.patch/src/include/IxQMgr.h 2005-04-17 20:55:31.000000000 -0700
-+++ ixp400_xscale_sw/src/include/IxQMgr.h 2005-11-19 16:01:52.817556623 -0800
-@@ -87,7 +87,9 @@
- /*
- * Define QMgr's IoMem macros, in DC mode if in LE
- * regular if in BE. (Note: For Linux LSP gold release
-- * may need to adjust mode.
-+ * may need to adjust mode. For standard Linux kernels
-+ * data coherent access is not used, therefore address
-+ * coherency must be set.
- */
- #if defined (__BIG_ENDIAN)
-
-@@ -96,8 +98,8 @@
-
- #else
-
--#define IX_QMGR_INLINE_READ_LONG IX_OSAL_READ_LONG_LE_DC
--#define IX_QMGR_INLINE_WRITE_LONG IX_OSAL_WRITE_LONG_LE_DC
-+#define IX_QMGR_INLINE_READ_LONG IX_OSAL_READ_LONG_LE_AC
-+#define IX_QMGR_INLINE_WRITE_LONG IX_OSAL_WRITE_LONG_LE_AC
-
- #endif
-
diff --git a/recipes/ixp4xx/ixp4xx-csr-2.1.1/Makefile.patch b/recipes/ixp4xx/ixp4xx-csr-2.1.1/Makefile.patch
deleted file mode 100644
index f082b713f0..0000000000
--- a/recipes/ixp4xx/ixp4xx-csr-2.1.1/Makefile.patch
+++ /dev/null
@@ -1,26 +0,0 @@
---- ixp400_xscale_sw/Makefile 1970-01-01 00:00:00.000000000 +0000
-+++ ixp400_xscale_sw/Makefile 1970-01-01 00:00:00.000000000 +0000
-@@ -297,9 +297,9 @@ endif
- else # IX_TARGET_OS == vxworks
- # linux compiler flags
- MAKE_DEP_FLAG := -M
--LINUX_MACH_CFLAGS := -D__LINUX_ARM_ARCH__=5 -mcpu=xscale -mtune=xscale
-+LINUX_MACH_CFLAGS := -D__LINUX_ARM_ARCH__=5 -mtune=xscale
-
--CFLAGS := -D__KERNEL__ -I$(LINUX_SRC)/include -Wall -Wno-trigraphs -fno-common -pipe -mapcs-32 -mshort-load-bytes -msoft-float -DMODULE -Isrc/include -D__linux -DCPU=33 -DXSCALE=33 $(LINUX_MACH_CFLAGS)
-+CFLAGS := -D__KERNEL__ -I$(LINUX_SRC)/include -Wall -Wno-trigraphs -fno-common -pipe -msoft-float -DMODULE -Isrc/include -D__linux -DCPU=33 -DXSCALE=33 $(LINUX_MACH_CFLAGS)
- ifndef IX_INCLUDE_MICROCODE
- CFLAGS += -DIX_NPEDL_READ_MICROCODE_FROM_FILE
- endif
-@@ -867,9 +867,11 @@ $(NPE_DAT) : $(NPE_CONVERTER)
-
- ifeq ($(IX_HOST_OS),linux)
- ifndef IX_INCLUDE_MICROCODE
-+ifdef IX_BUILD_MICROCODE
- Makefile: $(NPE_CONVERTER) $(NPE_DAT)
- endif
- endif
-+endif
-
- ################################################################
- # Rules to check that macros are defined.
diff --git a/recipes/ixp4xx/ixp4xx-csr-2.1.1/bit-macro.patch b/recipes/ixp4xx/ixp4xx-csr-2.1.1/bit-macro.patch
deleted file mode 100644
index 6efdba5c1e..0000000000
--- a/recipes/ixp4xx/ixp4xx-csr-2.1.1/bit-macro.patch
+++ /dev/null
@@ -1,14 +0,0 @@
---- ixp400_xscale_sw/src/include/IxTypes.h 1970-01-01 00:00:00.000000000 +0000
-+++ ixp400_xscale_sw/src/include/IxTypes.h 1970-01-01 00:00:00.000000000 +0000
-@@ -79,6 +79,10 @@
- #endif
- #endif
-
-+#ifndef BIT
-+#define BIT(x) ((1)<<(x))
-+#endif
-+
- #include "IxOsalBackward.h"
-
- #endif /* IxTypes_H */
-
diff --git a/recipes/ixp4xx/ixp4xx-csr-2.1.1/gcc4.patch b/recipes/ixp4xx/ixp4xx-csr-2.1.1/gcc4.patch
deleted file mode 100644
index a701328dd1..0000000000
--- a/recipes/ixp4xx/ixp4xx-csr-2.1.1/gcc4.patch
+++ /dev/null
@@ -1,23 +0,0 @@
---- ixp400/src/npeMh/IxNpeMhSymbols.c~ 2006-01-08 03:13:28.000000000 +1030
-+++ ixp400/src/npeMh/IxNpeMhSymbols.c 2006-01-09 00:56:57.000000000 +1030
-@@ -52,6 +52,7 @@
-
- #include <linux/module.h>
- #include <IxNpeMh.h>
-+#include <IxNpeMhConfig_p.h>
-
- EXPORT_SYMBOL(ixNpeMhInitialize);
- EXPORT_SYMBOL(ixNpeMhUnload);
-@@ -67,9 +68,9 @@ extern BOOL ixNpeMhConfigInFifoIsFull(Ix
- extern BOOL ixNpeMhConfigOutFifoIsEmpty (IxNpeMhNpeId npeId);
- extern void ixNpeMhConfigLockRelease (IxNpeMhNpeId npeId);
- extern void ixNpeMhConfigLockGet (IxNpeMhNpeId npeId);
--extern void ixNpeMhConfigOutFifoRead (IxNpeMhNpeId npeId,IxNpeMhMessage *message);
--extern void ixNpeMhConfigInFifoWrite (IxNpeMhNpeId npeId,IxNpeMhMessage message);
--extern struct ixNpeMhConfigNpeInfo ixNpeMhConfigNpeInfo[IX_NPEMH_NUM_NPES];
-+extern IX_STATUS ixNpeMhConfigOutFifoRead (IxNpeMhNpeId npeId,IxNpeMhMessage *message);
-+extern IX_STATUS ixNpeMhConfigInFifoWrite (IxNpeMhNpeId npeId,IxNpeMhMessage message);
-+extern IxNpeMhConfigNpeInfo ixNpeMhConfigNpeInfo[IX_NPEMH_NUM_NPES];
-
- EXPORT_SYMBOL(ixNpeMhConfigInFifoIsFull);
- EXPORT_SYMBOL(ixNpeMhConfigOutFifoIsEmpty);
diff --git a/recipes/ixp4xx/ixp4xx-csr-2.1.1/ixethdb-header.patch b/recipes/ixp4xx/ixp4xx-csr-2.1.1/ixethdb-header.patch
deleted file mode 100644
index 8ab22bee89..0000000000
--- a/recipes/ixp4xx/ixp4xx-csr-2.1.1/ixethdb-header.patch
+++ /dev/null
@@ -1,11 +0,0 @@
---- ixp400_xscale_sw/src/ethDB/include/IxEthDB_p.h 1970-01-01 00:00:00.000000000 +0000
-+++ ixp400_xscale_sw/src/ethDB/include/IxEthDB_p.h 1970-01-01 00:00:00.000000000 +0000
-@@ -693,7 +693,7 @@ IX_ETH_DB_PUBLIC UINT32 ixEthDBEntryXORH
- IX_ETH_DB_PUBLIC UINT32 ixEthDBKeyXORHash(void *macAddress);
-
- /* Port updates */
--IX_ETH_DB_PUBLIC IxEthDBStatus ixEthDBNPEUpdateHandler(IxEthDBPortId portID, IxEthDBFeature type);
-+IX_ETH_DB_PUBLIC IxEthDBStatus ixEthDBNPEUpdateHandler(IxEthDBPortId portID, IxEthDBRecordType type);
- IX_ETH_DB_PUBLIC void ixEthDBUpdatePortLearningTrees(IxEthDBPortMap triggerPorts);
- IX_ETH_DB_PUBLIC void ixEthDBNPEAccessRequest(IxEthDBPortId portID);
- IX_ETH_DB_PUBLIC void ixEthDBUpdateLock(void);
diff --git a/recipes/ixp4xx/ixp4xx-csr-2.1.1/ixnpemhconfigisr-is-private.patch b/recipes/ixp4xx/ixp4xx-csr-2.1.1/ixnpemhconfigisr-is-private.patch
deleted file mode 100644
index 54faadf34a..0000000000
--- a/recipes/ixp4xx/ixp4xx-csr-2.1.1/ixnpemhconfigisr-is-private.patch
+++ /dev/null
@@ -1,18 +0,0 @@
---- ixp400_xscale_sw/src/npeMh/IxNpeMhSymbols.c 1970-01-01 00:00:00.000000000 +0000
-+++ ixp400_xscale_sw/src/npeMh/IxNpeMhSymbols.c 1970-01-01 00:00:00.000000000 +0000
-@@ -63,7 +63,6 @@ EXPORT_SYMBOL(ixNpeMhMessagesReceive);
- EXPORT_SYMBOL(ixNpeMhShow);
- EXPORT_SYMBOL(ixNpeMhShowReset);
-
--extern void ixNpeMhConfigIsr (void *parameter);
- extern BOOL ixNpeMhConfigInFifoIsFull(IxNpeMhNpeId npeId);
- extern BOOL ixNpeMhConfigOutFifoIsEmpty (IxNpeMhNpeId npeId);
- extern void ixNpeMhConfigLockRelease (IxNpeMhNpeId npeId);
-@@ -72,7 +71,6 @@ extern void ixNpeMhConfigOutFifoRead (Ix
- extern void ixNpeMhConfigInFifoWrite (IxNpeMhNpeId npeId,IxNpeMhMessage message);
- extern struct ixNpeMhConfigNpeInfo ixNpeMhConfigNpeInfo[IX_NPEMH_NUM_NPES];
-
--EXPORT_SYMBOL(ixNpeMhConfigIsr);
- EXPORT_SYMBOL(ixNpeMhConfigInFifoIsFull);
- EXPORT_SYMBOL(ixNpeMhConfigOutFifoIsEmpty);
- EXPORT_SYMBOL(ixNpeMhConfigLockRelease);
diff --git a/recipes/ixp4xx/ixp4xx-csr-2.1.1/le.patch b/recipes/ixp4xx/ixp4xx-csr-2.1.1/le.patch
deleted file mode 100644
index c308493a08..0000000000
--- a/recipes/ixp4xx/ixp4xx-csr-2.1.1/le.patch
+++ /dev/null
@@ -1,13 +0,0 @@
---- ixp400_xscale_sw/src/include/IxQMgr.h 1970-01-01 00:00:00.000000000 +0000
-+++ ixp400_xscale_sw/src/include/IxQMgr.h 1970-01-01 00:00:00.000000000 +0000
-@@ -96,8 +98,8 @@
-
- #else
-
--#define IX_QMGR_INLINE_READ_LONG IX_OSAL_READ_LONG_LE_DC
--#define IX_QMGR_INLINE_WRITE_LONG IX_OSAL_WRITE_LONG_LE_DC
-+#define IX_QMGR_INLINE_READ_LONG IX_OSAL_READ_LONG_LE_AC
-+#define IX_QMGR_INLINE_WRITE_LONG IX_OSAL_WRITE_LONG_LE_AC
-
- #endif
-
diff --git a/recipes/ixp4xx/ixp4xx-csr-2.1.1/livelock.patch b/recipes/ixp4xx/ixp4xx-csr-2.1.1/livelock.patch
deleted file mode 100644
index 0b4e4ba026..0000000000
--- a/recipes/ixp4xx/ixp4xx-csr-2.1.1/livelock.patch
+++ /dev/null
@@ -1,19 +0,0 @@
-*** ixp400_xscale_sw/src/oslinux/IxLinuxInit.c.orig Sun Sep 25 05:59:03 2005
---- ixp400_xscale_sw/src/oslinux/IxLinuxInit.c Fri Jun 9 14:07:06 2006
-***************
-*** 91,97 ****
-
-
- /* Module parameters */
-! static int livelock_dispatcher = 0;/* default: don't use livelock dispatcher*/
-
- MODULE_PARM(livelock_dispatcher, "i");
- MODULE_PARM_DESC(livelock_dispatcher, "If non-zero, use the livelock prevention qmgr dispatcher");
---- 91,97 ----
-
-
- /* Module parameters */
-! int livelock_dispatcher = 0;/* default: don't use livelock dispatcher*/
-
- MODULE_PARM(livelock_dispatcher, "i");
- MODULE_PARM_DESC(livelock_dispatcher, "If non-zero, use the livelock prevention qmgr dispatcher");
diff --git a/recipes/ixp4xx/ixp4xx-csr-2.1.1/mii-debug.patch b/recipes/ixp4xx/ixp4xx-csr-2.1.1/mii-debug.patch
deleted file mode 100644
index 762743cef5..0000000000
--- a/recipes/ixp4xx/ixp4xx-csr-2.1.1/mii-debug.patch
+++ /dev/null
@@ -1,26 +0,0 @@
-debug only patch to add information about MII id problems
-
---- ixp400_xscale_sw/src/ethMii/IxEthMii.c 1970-01-01 00:00:00.000000000 +0000
-+++ ixp400_xscale_sw/src/ethMii/IxEthMii.c 1970-01-01 00:00:00.000000000 +0000
-@@ -122,6 +122,10 @@ ixEthMiiPhyScan(BOOL phyPresent[], UINT3
- )
- {
- /* supported phy */
-+ ixOsalLog (IX_OSAL_LOG_LVL_MESSAGE,
-+ IX_OSAL_LOG_DEV_STDOUT,
-+ "ixEthMiiPhyScan, Mii %d: Mii PHY ID %8.8x\n",
-+ i, ixEthMiiPhyId[i], 3, 4, 5, 6);
- phyPresent[i] = TRUE;
- } /* end of if(ixEthMiiPhyId) */
- else
-@@ -131,8 +135,8 @@ ixEthMiiPhyScan(BOOL phyPresent[], UINT3
- /* unsupported phy */
- ixOsalLog (IX_OSAL_LOG_LVL_ERROR,
- IX_OSAL_LOG_DEV_STDOUT,
-- "ixEthMiiPhyScan : unexpected Mii PHY ID %8.8x\n",
-- ixEthMiiPhyId[i], 2, 3, 4, 5, 6);
-+ "ixEthMiiPhyScan, Mii %d: unexpected Mii PHY ID %8.8x\n",
-+ i, ixEthMiiPhyId[i], 3, 4, 5, 6);
- ixEthMiiPhyId[i] = IX_ETH_MII_UNKNOWN_PHY_ID;
- phyPresent[i] = TRUE;
- }
diff --git a/recipes/ixp4xx/ixp4xx-csr-2.1.1/module-param.patch b/recipes/ixp4xx/ixp4xx-csr-2.1.1/module-param.patch
deleted file mode 100644
index 6472ef8b05..0000000000
--- a/recipes/ixp4xx/ixp4xx-csr-2.1.1/module-param.patch
+++ /dev/null
@@ -1,19 +0,0 @@
- src/oslinux/IxLinuxInit.c | 4 ++++
- 1 files changed, 4 insertions(+)
-
-Index: ixp400_xscale_sw/src/oslinux/IxLinuxInit.c
-===================================================================
---- ixp400_xscale_sw.orig/src/oslinux/IxLinuxInit.c
-+++ ixp400_xscale_sw/src/oslinux/IxLinuxInit.c
-@@ -103,7 +103,11 @@
- #if KERNEL_VERSION(2,6,0) <= LINUX_VERSION_CODE
- MODULE_VERSION("2.1.1");
- #endif
-+#if LINUX_VERSION_CODE <= KERNEL_VERSION(2,6,16)
- MODULE_PARM(livelock_dispatcher, "i");
-+#else
-+module_param(livelock_dispatcher, int, 0644);
-+#endif
- MODULE_PARM_DESC(livelock_dispatcher, "If non-zero, use the livelock prevention qmgr dispatcher");
-
- /* Init and cleanup functions for module */
diff --git a/recipes/ixp4xx/ixp4xx-csr-2.1.1/module-use-count.patch b/recipes/ixp4xx/ixp4xx-csr-2.1.1/module-use-count.patch
deleted file mode 100644
index 0fc2c5270e..0000000000
--- a/recipes/ixp4xx/ixp4xx-csr-2.1.1/module-use-count.patch
+++ /dev/null
@@ -1,24 +0,0 @@
- src/oslinux/IxLinuxInit.c | 3 ---
- 1 files changed, 3 deletions(-)
-
-Index: ixp400_xscale_sw/src/oslinux/IxLinuxInit.c
-===================================================================
---- ixp400_xscale_sw.orig/src/oslinux/IxLinuxInit.c
-+++ ixp400_xscale_sw/src/oslinux/IxLinuxInit.c
-@@ -164,7 +164,6 @@
- return -EEXIST;
- }
-
-- MOD_INC_USE_COUNT; /* Increment use count to prevent premature rmmod-ing */
- ixNpeDlSegmentedListHead = NULL; /* Reset linked list which keeps track of Microcode fragments */
- ixNpeDlSegmentedListTail = NULL;
- ixNpeDlTotalBytesReadIn = 0;
-@@ -229,8 +228,6 @@
- kfree (temp);
- }
-
-- MOD_DEC_USE_COUNT;
--
- return 0;
- }
-
diff --git a/recipes/ixp4xx/ixp4xx-csr-2.1.1/oe-makefile.patch b/recipes/ixp4xx/ixp4xx-csr-2.1.1/oe-makefile.patch
deleted file mode 100644
index 9f1d253a93..0000000000
--- a/recipes/ixp4xx/ixp4xx-csr-2.1.1/oe-makefile.patch
+++ /dev/null
@@ -1,61 +0,0 @@
-changes to Makefile required only on OE
-
- Makefile | 11 ++++++++++-
- Makefile.kmod26 | 11 +++++++++++
- ixp400.c | 1 +
- 3 files changed, 22 insertions(+), 1 deletion(-)
-
-Index: ixp400_xscale_sw/Makefile
-===================================================================
---- ixp400_xscale_sw.orig/Makefile
-+++ ixp400_xscale_sw/Makefile
-@@ -1385,9 +1385,10 @@
-
- ifeq ($(IX_LINUXVER),2.6)
- ixp400 : $(OBJ_DIR)/ixp400.o
-+ cp $(OSAL_MODULE) $(OBJ_DIR)
- @echo 'EXTRA_LDFLAGS := --whole-archive' > $(OBJ_DIR)/Makefile
- @echo ' ' >> $(OBJ_DIR)/Makefile
-- @echo 'lib-m := $(COMPONENTS:%=ixp400_%.o) $(OBJ_DIR_EXIT)/$(OSAL_MODULE)'>> $(OBJ_DIR)/Makefile
-+ @echo 'lib-m := $(COMPONENTS:%=ixp400_%.o) ixp_osal.o'>> $(OBJ_DIR)/Makefile
- @echo ' ' >> $(OBJ_DIR)/Makefile
- @echo 'obj-m := ixp400.o' >> $(OBJ_DIR)/Makefile
- @echo ' ' >> $(OBJ_DIR)/Makefile
-@@ -1403,7 +1404,15 @@
-
- $(OBJ_DIR)/ixp400.o: $(COMPONENTS:%=$(OBJ_DIR)/ixp400_%.o) $(OSAL_MODULE)
- ifneq ($(IX_LINUXVER),2.6)
-+ rm -f $(OBJ_DIR)/ixp400.c
-+ touch $(OBJ_DIR)/ixp400.c
-+ cp Makefile.kmod26 $(OBJ_DIR)/Makefile
-+ make -C $(OBJ_DIR)
-+ rm -f $(OBJ_DIR)/ixp400.c
-+ cp ixp400.c $(OBJ_DIR)/ixp400.c
- $(LD) $(LDFLAGS) $^ -o $@
-+ rm -f $(OBJ_DIR)/ixp400.ko $(OBJ_DIR)/ixp400.mod.o
-+ make -C $(OBJ_DIR)
- endif
-
-
-Index: ixp400_xscale_sw/ixp400.c
-===================================================================
---- /dev/null
-+++ ixp400_xscale_sw/ixp400.c
-@@ -0,0 +1 @@
-+#error this file must never be compiled
-Index: ixp400_xscale_sw/Makefile.kmod26
-===================================================================
---- /dev/null
-+++ ixp400_xscale_sw/Makefile.kmod26
-@@ -0,0 +1,11 @@
-+obj-m := ixp400.o
-+
-+PWD := $(shell pwd)
-+
-+LINUX_SRC := $($(IX_TARGET)_KERNEL_DIR)
-+
-+default:
-+ $(MAKE) ARCH=arm CROSS_COMPILE=$(LINUX_CROSS_COMPILE) $(KERNEL_VERBOSE) -C $(LINUX_SRC) SUBDIRS=$(PWD) modules
-+
-+clean:
-+ rm -f ixp400.ko
diff --git a/recipes/ixp4xx/ixp4xx-csr-2.1.1/rtl8201-support.patch b/recipes/ixp4xx/ixp4xx-csr-2.1.1/rtl8201-support.patch
deleted file mode 100644
index 150dc27016..0000000000
--- a/recipes/ixp4xx/ixp4xx-csr-2.1.1/rtl8201-support.patch
+++ /dev/null
@@ -1,30 +0,0 @@
-this patch adds support for the RTL8201CP PHY
-
---- ixp400_xscale_sw/src/ethMii/IxEthMii.c 1970-01-01 00:00:00.000000000 +0000
-+++ ixp400_xscale_sw/src/ethMii/IxEthMii.c 1970-01-01 00:00:00.000000000 +0000
-@@ -119,6 +119,7 @@ ixEthMiiPhyScan(BOOL phyPresent[], UINT3
- || (ixEthMiiPhyId[i] == IX_ETH_MII_LXT973_PHY_ID)
- || (ixEthMiiPhyId[i] == IX_ETH_MII_LXT973A3_PHY_ID)
- || (ixEthMiiPhyId[i] == IX_ETH_MII_LXT9785_PHY_ID)
-+ || (ixEthMiiPhyId[i] == IX_ETH_MII_RTL8201_PHY_ID)
- )
- {
- /* supported phy */
-@@ -287,6 +288,7 @@ ixEthMiiPhyReset(UINT32 phyAddr)
- (ixEthMiiPhyId[phyAddr] == IX_ETH_MII_LXT972_PHY_ID) ||
- (ixEthMiiPhyId[phyAddr] == IX_ETH_MII_LXT973_PHY_ID) ||
- (ixEthMiiPhyId[phyAddr] == IX_ETH_MII_LXT973A3_PHY_ID) ||
-+ (ixEthMiiPhyId[phyAddr] == IX_ETH_MII_RTL8201_PHY_ID) ||
- (ixEthMiiPhyId[phyAddr] == IX_ETH_MII_LXT9785_PHY_ID)
- )
- {
---- ixp400_xscale_sw/src/ethMii/IxEthMii_p.h 1970-01-01 00:00:00.000000000 +0000
-+++ ixp400_xscale_sw/src/ethMii/IxEthMii_p.h 1970-01-01 00:00:00.000000000 +0000
-@@ -179,6 +179,7 @@
- #define IX_ETH_MII_LXT973A3_PHY_ID 0x00137A11
- #define IX_ETH_MII_KS8995_PHY_ID 0x00221450
- #define IX_ETH_MII_LXT9785_PHY_ID 0x001378FF
-+#define IX_ETH_MII_RTL8201_PHY_ID 0x00008201
- #define IX_ETH_MII_RTL8305_FAKE_PHY_ID 0x83058305
-
- #define IX_ETH_MII_INVALID_PHY_ID 0x00000000
diff --git a/recipes/ixp4xx/ixp4xx-csr-2.1.1/undefined-attribute.patch b/recipes/ixp4xx/ixp4xx-csr-2.1.1/undefined-attribute.patch
deleted file mode 100644
index 8a08f862f6..0000000000
--- a/recipes/ixp4xx/ixp4xx-csr-2.1.1/undefined-attribute.patch
+++ /dev/null
@@ -1,16 +0,0 @@
- src/include/IxEthDB.h | 2 +-
- 1 files changed, 1 insertion(+), 1 deletion(-)
-
-Index: ixp400_xscale_sw/src/include/IxEthDB.h
-===================================================================
---- ixp400_xscale_sw.orig/src/include/IxEthDB.h
-+++ ixp400_xscale_sw/src/include/IxEthDB.h
-@@ -273,7 +273,7 @@
- typedef struct
- {
- UINT8 macAddress[IX_IEEE803_MAC_ADDRESS_SIZE];
--} IX_OSAL_ATTRIBUTE_PACKED IxEthDBMacAddr;
-+} IxEthDBMacAddr;
-
- /**
- *
diff --git a/recipes/ixp4xx/ixp4xx-csr-2.1/Makefile.patch b/recipes/ixp4xx/ixp4xx-csr-2.1/Makefile.patch
deleted file mode 100644
index f082b713f0..0000000000
--- a/recipes/ixp4xx/ixp4xx-csr-2.1/Makefile.patch
+++ /dev/null
@@ -1,26 +0,0 @@
---- ixp400_xscale_sw/Makefile 1970-01-01 00:00:00.000000000 +0000
-+++ ixp400_xscale_sw/Makefile 1970-01-01 00:00:00.000000000 +0000
-@@ -297,9 +297,9 @@ endif
- else # IX_TARGET_OS == vxworks
- # linux compiler flags
- MAKE_DEP_FLAG := -M
--LINUX_MACH_CFLAGS := -D__LINUX_ARM_ARCH__=5 -mcpu=xscale -mtune=xscale
-+LINUX_MACH_CFLAGS := -D__LINUX_ARM_ARCH__=5 -mtune=xscale
-
--CFLAGS := -D__KERNEL__ -I$(LINUX_SRC)/include -Wall -Wno-trigraphs -fno-common -pipe -mapcs-32 -mshort-load-bytes -msoft-float -DMODULE -Isrc/include -D__linux -DCPU=33 -DXSCALE=33 $(LINUX_MACH_CFLAGS)
-+CFLAGS := -D__KERNEL__ -I$(LINUX_SRC)/include -Wall -Wno-trigraphs -fno-common -pipe -msoft-float -DMODULE -Isrc/include -D__linux -DCPU=33 -DXSCALE=33 $(LINUX_MACH_CFLAGS)
- ifndef IX_INCLUDE_MICROCODE
- CFLAGS += -DIX_NPEDL_READ_MICROCODE_FROM_FILE
- endif
-@@ -867,9 +867,11 @@ $(NPE_DAT) : $(NPE_CONVERTER)
-
- ifeq ($(IX_HOST_OS),linux)
- ifndef IX_INCLUDE_MICROCODE
-+ifdef IX_BUILD_MICROCODE
- Makefile: $(NPE_CONVERTER) $(NPE_DAT)
- endif
- endif
-+endif
-
- ################################################################
- # Rules to check that macros are defined.
diff --git a/recipes/ixp4xx/ixp4xx-csr-2.1/bit-macro.patch b/recipes/ixp4xx/ixp4xx-csr-2.1/bit-macro.patch
deleted file mode 100644
index 6efdba5c1e..0000000000
--- a/recipes/ixp4xx/ixp4xx-csr-2.1/bit-macro.patch
+++ /dev/null
@@ -1,14 +0,0 @@
---- ixp400_xscale_sw/src/include/IxTypes.h 1970-01-01 00:00:00.000000000 +0000
-+++ ixp400_xscale_sw/src/include/IxTypes.h 1970-01-01 00:00:00.000000000 +0000
-@@ -79,6 +79,10 @@
- #endif
- #endif
-
-+#ifndef BIT
-+#define BIT(x) ((1)<<(x))
-+#endif
-+
- #include "IxOsalBackward.h"
-
- #endif /* IxTypes_H */
-
diff --git a/recipes/ixp4xx/ixp4xx-csr-2.1/gcc4.patch b/recipes/ixp4xx/ixp4xx-csr-2.1/gcc4.patch
deleted file mode 100644
index a701328dd1..0000000000
--- a/recipes/ixp4xx/ixp4xx-csr-2.1/gcc4.patch
+++ /dev/null
@@ -1,23 +0,0 @@
---- ixp400/src/npeMh/IxNpeMhSymbols.c~ 2006-01-08 03:13:28.000000000 +1030
-+++ ixp400/src/npeMh/IxNpeMhSymbols.c 2006-01-09 00:56:57.000000000 +1030
-@@ -52,6 +52,7 @@
-
- #include <linux/module.h>
- #include <IxNpeMh.h>
-+#include <IxNpeMhConfig_p.h>
-
- EXPORT_SYMBOL(ixNpeMhInitialize);
- EXPORT_SYMBOL(ixNpeMhUnload);
-@@ -67,9 +68,9 @@ extern BOOL ixNpeMhConfigInFifoIsFull(Ix
- extern BOOL ixNpeMhConfigOutFifoIsEmpty (IxNpeMhNpeId npeId);
- extern void ixNpeMhConfigLockRelease (IxNpeMhNpeId npeId);
- extern void ixNpeMhConfigLockGet (IxNpeMhNpeId npeId);
--extern void ixNpeMhConfigOutFifoRead (IxNpeMhNpeId npeId,IxNpeMhMessage *message);
--extern void ixNpeMhConfigInFifoWrite (IxNpeMhNpeId npeId,IxNpeMhMessage message);
--extern struct ixNpeMhConfigNpeInfo ixNpeMhConfigNpeInfo[IX_NPEMH_NUM_NPES];
-+extern IX_STATUS ixNpeMhConfigOutFifoRead (IxNpeMhNpeId npeId,IxNpeMhMessage *message);
-+extern IX_STATUS ixNpeMhConfigInFifoWrite (IxNpeMhNpeId npeId,IxNpeMhMessage message);
-+extern IxNpeMhConfigNpeInfo ixNpeMhConfigNpeInfo[IX_NPEMH_NUM_NPES];
-
- EXPORT_SYMBOL(ixNpeMhConfigInFifoIsFull);
- EXPORT_SYMBOL(ixNpeMhConfigOutFifoIsEmpty);
diff --git a/recipes/ixp4xx/ixp4xx-csr-2.1/ixethdb-header.patch b/recipes/ixp4xx/ixp4xx-csr-2.1/ixethdb-header.patch
deleted file mode 100644
index 8ab22bee89..0000000000
--- a/recipes/ixp4xx/ixp4xx-csr-2.1/ixethdb-header.patch
+++ /dev/null
@@ -1,11 +0,0 @@
---- ixp400_xscale_sw/src/ethDB/include/IxEthDB_p.h 1970-01-01 00:00:00.000000000 +0000
-+++ ixp400_xscale_sw/src/ethDB/include/IxEthDB_p.h 1970-01-01 00:00:00.000000000 +0000
-@@ -693,7 +693,7 @@ IX_ETH_DB_PUBLIC UINT32 ixEthDBEntryXORH
- IX_ETH_DB_PUBLIC UINT32 ixEthDBKeyXORHash(void *macAddress);
-
- /* Port updates */
--IX_ETH_DB_PUBLIC IxEthDBStatus ixEthDBNPEUpdateHandler(IxEthDBPortId portID, IxEthDBFeature type);
-+IX_ETH_DB_PUBLIC IxEthDBStatus ixEthDBNPEUpdateHandler(IxEthDBPortId portID, IxEthDBRecordType type);
- IX_ETH_DB_PUBLIC void ixEthDBUpdatePortLearningTrees(IxEthDBPortMap triggerPorts);
- IX_ETH_DB_PUBLIC void ixEthDBNPEAccessRequest(IxEthDBPortId portID);
- IX_ETH_DB_PUBLIC void ixEthDBUpdateLock(void);
diff --git a/recipes/ixp4xx/ixp4xx-csr-2.1/ixnpemhconfigisr-is-private.patch b/recipes/ixp4xx/ixp4xx-csr-2.1/ixnpemhconfigisr-is-private.patch
deleted file mode 100644
index 54faadf34a..0000000000
--- a/recipes/ixp4xx/ixp4xx-csr-2.1/ixnpemhconfigisr-is-private.patch
+++ /dev/null
@@ -1,18 +0,0 @@
---- ixp400_xscale_sw/src/npeMh/IxNpeMhSymbols.c 1970-01-01 00:00:00.000000000 +0000
-+++ ixp400_xscale_sw/src/npeMh/IxNpeMhSymbols.c 1970-01-01 00:00:00.000000000 +0000
-@@ -63,7 +63,6 @@ EXPORT_SYMBOL(ixNpeMhMessagesReceive);
- EXPORT_SYMBOL(ixNpeMhShow);
- EXPORT_SYMBOL(ixNpeMhShowReset);
-
--extern void ixNpeMhConfigIsr (void *parameter);
- extern BOOL ixNpeMhConfigInFifoIsFull(IxNpeMhNpeId npeId);
- extern BOOL ixNpeMhConfigOutFifoIsEmpty (IxNpeMhNpeId npeId);
- extern void ixNpeMhConfigLockRelease (IxNpeMhNpeId npeId);
-@@ -72,7 +71,6 @@ extern void ixNpeMhConfigOutFifoRead (Ix
- extern void ixNpeMhConfigInFifoWrite (IxNpeMhNpeId npeId,IxNpeMhMessage message);
- extern struct ixNpeMhConfigNpeInfo ixNpeMhConfigNpeInfo[IX_NPEMH_NUM_NPES];
-
--EXPORT_SYMBOL(ixNpeMhConfigIsr);
- EXPORT_SYMBOL(ixNpeMhConfigInFifoIsFull);
- EXPORT_SYMBOL(ixNpeMhConfigOutFifoIsEmpty);
- EXPORT_SYMBOL(ixNpeMhConfigLockRelease);
diff --git a/recipes/ixp4xx/ixp4xx-csr-2.1/le.patch b/recipes/ixp4xx/ixp4xx-csr-2.1/le.patch
deleted file mode 100644
index c308493a08..0000000000
--- a/recipes/ixp4xx/ixp4xx-csr-2.1/le.patch
+++ /dev/null
@@ -1,13 +0,0 @@
---- ixp400_xscale_sw/src/include/IxQMgr.h 1970-01-01 00:00:00.000000000 +0000
-+++ ixp400_xscale_sw/src/include/IxQMgr.h 1970-01-01 00:00:00.000000000 +0000
-@@ -96,8 +98,8 @@
-
- #else
-
--#define IX_QMGR_INLINE_READ_LONG IX_OSAL_READ_LONG_LE_DC
--#define IX_QMGR_INLINE_WRITE_LONG IX_OSAL_WRITE_LONG_LE_DC
-+#define IX_QMGR_INLINE_READ_LONG IX_OSAL_READ_LONG_LE_AC
-+#define IX_QMGR_INLINE_WRITE_LONG IX_OSAL_WRITE_LONG_LE_AC
-
- #endif
-
diff --git a/recipes/ixp4xx/ixp4xx-csr-2.1/livelock.patch b/recipes/ixp4xx/ixp4xx-csr-2.1/livelock.patch
deleted file mode 100644
index 0b4e4ba026..0000000000
--- a/recipes/ixp4xx/ixp4xx-csr-2.1/livelock.patch
+++ /dev/null
@@ -1,19 +0,0 @@
-*** ixp400_xscale_sw/src/oslinux/IxLinuxInit.c.orig Sun Sep 25 05:59:03 2005
---- ixp400_xscale_sw/src/oslinux/IxLinuxInit.c Fri Jun 9 14:07:06 2006
-***************
-*** 91,97 ****
-
-
- /* Module parameters */
-! static int livelock_dispatcher = 0;/* default: don't use livelock dispatcher*/
-
- MODULE_PARM(livelock_dispatcher, "i");
- MODULE_PARM_DESC(livelock_dispatcher, "If non-zero, use the livelock prevention qmgr dispatcher");
---- 91,97 ----
-
-
- /* Module parameters */
-! int livelock_dispatcher = 0;/* default: don't use livelock dispatcher*/
-
- MODULE_PARM(livelock_dispatcher, "i");
- MODULE_PARM_DESC(livelock_dispatcher, "If non-zero, use the livelock prevention qmgr dispatcher");
diff --git a/recipes/ixp4xx/ixp4xx-csr-2.1/mii-debug.patch b/recipes/ixp4xx/ixp4xx-csr-2.1/mii-debug.patch
deleted file mode 100644
index 762743cef5..0000000000
--- a/recipes/ixp4xx/ixp4xx-csr-2.1/mii-debug.patch
+++ /dev/null
@@ -1,26 +0,0 @@
-debug only patch to add information about MII id problems
-
---- ixp400_xscale_sw/src/ethMii/IxEthMii.c 1970-01-01 00:00:00.000000000 +0000
-+++ ixp400_xscale_sw/src/ethMii/IxEthMii.c 1970-01-01 00:00:00.000000000 +0000
-@@ -122,6 +122,10 @@ ixEthMiiPhyScan(BOOL phyPresent[], UINT3
- )
- {
- /* supported phy */
-+ ixOsalLog (IX_OSAL_LOG_LVL_MESSAGE,
-+ IX_OSAL_LOG_DEV_STDOUT,
-+ "ixEthMiiPhyScan, Mii %d: Mii PHY ID %8.8x\n",
-+ i, ixEthMiiPhyId[i], 3, 4, 5, 6);
- phyPresent[i] = TRUE;
- } /* end of if(ixEthMiiPhyId) */
- else
-@@ -131,8 +135,8 @@ ixEthMiiPhyScan(BOOL phyPresent[], UINT3
- /* unsupported phy */
- ixOsalLog (IX_OSAL_LOG_LVL_ERROR,
- IX_OSAL_LOG_DEV_STDOUT,
-- "ixEthMiiPhyScan : unexpected Mii PHY ID %8.8x\n",
-- ixEthMiiPhyId[i], 2, 3, 4, 5, 6);
-+ "ixEthMiiPhyScan, Mii %d: unexpected Mii PHY ID %8.8x\n",
-+ i, ixEthMiiPhyId[i], 3, 4, 5, 6);
- ixEthMiiPhyId[i] = IX_ETH_MII_UNKNOWN_PHY_ID;
- phyPresent[i] = TRUE;
- }
diff --git a/recipes/ixp4xx/ixp4xx-csr-2.1/module-param.patch b/recipes/ixp4xx/ixp4xx-csr-2.1/module-param.patch
deleted file mode 100644
index c61fcc00d3..0000000000
--- a/recipes/ixp4xx/ixp4xx-csr-2.1/module-param.patch
+++ /dev/null
@@ -1,19 +0,0 @@
- src/oslinux/IxLinuxInit.c | 4 ++++
- 1 files changed, 4 insertions(+)
-
-Index: ixp400_xscale_sw/src/oslinux/IxLinuxInit.c
-===================================================================
---- ixp400_xscale_sw.orig/src/oslinux/IxLinuxInit.c
-+++ ixp400_xscale_sw/src/oslinux/IxLinuxInit.c
-@@ -93,7 +93,11 @@
- /* Module parameters */
- static int livelock_dispatcher = 0;/* default: don't use livelock dispatcher*/
-
-+#if LINUX_VERSION_CODE <= KERNEL_VERSION(2,6,16)
- MODULE_PARM(livelock_dispatcher, "i");
-+#else
-+module_param(livelock_dispatcher, int, 0644);
-+#endif
- MODULE_PARM_DESC(livelock_dispatcher, "If non-zero, use the livelock prevention qmgr dispatcher");
-
- /* Init and cleanup functions for module */
diff --git a/recipes/ixp4xx/ixp4xx-csr-2.1/oe-makefile.patch b/recipes/ixp4xx/ixp4xx-csr-2.1/oe-makefile.patch
deleted file mode 100644
index 492b1eab03..0000000000
--- a/recipes/ixp4xx/ixp4xx-csr-2.1/oe-makefile.patch
+++ /dev/null
@@ -1,49 +0,0 @@
-changes to Makefile required only on OE
-
---- ixp400_xscale_sw/Makefile 1970-01-01 00:00:00.000000000 +0000
-+++ ixp400_xscale_sw/Makefile 1970-01-01 00:00:00.000000000 +0000
-@@ -1321,10 +1323,26 @@ ixp400.o : $(OBJ_DIR)/ixp400.o
-
- ifndef IX_INCLUDE_MICROCODE
- $(OBJ_DIR)/ixp400.o: $(COMPONENTS:%=$(OBJ_DIR)/ixp400_%.o) $(OSAL_MODULE)
-+ rm -f $(OBJ_DIR)/ixp400.c
-+ touch $(OBJ_DIR)/ixp400.c
-+ cp Makefile.kmod26 $(OBJ_DIR)/Makefile
-+ make -C $(OBJ_DIR)
-+ rm -f $(OBJ_DIR)/ixp400.c
-+ cp ixp400.c $(OBJ_DIR)/ixp400.c
- $(LD) $(LDFLAGS) $^ -o $@
-+ rm -f $(OBJ_DIR)/ixp400.ko $(OBJ_DIR)/ixp400.mod.o
-+ make -C $(OBJ_DIR)
- else
- $(OBJ_DIR)/ixp400.o: $(COMPONENTS:%=$(OBJ_DIR)/ixp400_%.o) $(NPE_PRODUCTION_HEADER_OBJ) $(OSAL_MODULE)
-+ rm -f $(OBJ_DIR)/ixp400.c
-+ touch $(OBJ_DIR)/ixp400.c
-+ cp Makefile.kmod26 $(OBJ_DIR)/Makefile
-+ make -C $(OBJ_DIR)
-+ rm -f $(OBJ_DIR)/ixp400.c
-+ cp ixp400.c $(OBJ_DIR)/ixp400.c
- $(LD) $(LDFLAGS) $^ -o $@
-+ rm -f $(OBJ_DIR)/ixp400.ko $(OBJ_DIR)/ixp400.mod.o
-+ make -C $(OBJ_DIR)
- endif
-
-
---- ixp400_xscale_sw/ixp400.c 1970-01-01 00:00:00.000000000 +0000
-+++ ixp400_xscale_sw/ixp400.c 1970-01-01 00:00:00.000000000 +0000
-@@ -0,0 +1,1 @@
-+#error this file must never be compiled
---- ixp400_xscale_sw/Makefile.kmod26 1970-01-01 00:00:00.000000000 +0000
-+++ ixp400_xscale_sw/Makefile.kmod26 1970-01-01 00:00:00.000000000 +0000
-@@ -0,0 +1,11 @@
-+obj-m := ixp400.o
-+
-+PWD := $(shell pwd)
-+
-+LINUX_SRC := $($(IX_TARGET)_KERNEL_DIR)
-+
-+default:
-+ $(MAKE) ARCH=arm CROSS_COMPILE=$(LINUX_CROSS_COMPILE) $(KERNEL_VERBOSE) -C $(LINUX_SRC) SUBDIRS=$(PWD) modules
-+
-+clean:
-+ rm -f ixp400.ko
diff --git a/recipes/ixp4xx/ixp4xx-csr-2.1/rtl8201-support.patch b/recipes/ixp4xx/ixp4xx-csr-2.1/rtl8201-support.patch
deleted file mode 100644
index 150dc27016..0000000000
--- a/recipes/ixp4xx/ixp4xx-csr-2.1/rtl8201-support.patch
+++ /dev/null
@@ -1,30 +0,0 @@
-this patch adds support for the RTL8201CP PHY
-
---- ixp400_xscale_sw/src/ethMii/IxEthMii.c 1970-01-01 00:00:00.000000000 +0000
-+++ ixp400_xscale_sw/src/ethMii/IxEthMii.c 1970-01-01 00:00:00.000000000 +0000
-@@ -119,6 +119,7 @@ ixEthMiiPhyScan(BOOL phyPresent[], UINT3
- || (ixEthMiiPhyId[i] == IX_ETH_MII_LXT973_PHY_ID)
- || (ixEthMiiPhyId[i] == IX_ETH_MII_LXT973A3_PHY_ID)
- || (ixEthMiiPhyId[i] == IX_ETH_MII_LXT9785_PHY_ID)
-+ || (ixEthMiiPhyId[i] == IX_ETH_MII_RTL8201_PHY_ID)
- )
- {
- /* supported phy */
-@@ -287,6 +288,7 @@ ixEthMiiPhyReset(UINT32 phyAddr)
- (ixEthMiiPhyId[phyAddr] == IX_ETH_MII_LXT972_PHY_ID) ||
- (ixEthMiiPhyId[phyAddr] == IX_ETH_MII_LXT973_PHY_ID) ||
- (ixEthMiiPhyId[phyAddr] == IX_ETH_MII_LXT973A3_PHY_ID) ||
-+ (ixEthMiiPhyId[phyAddr] == IX_ETH_MII_RTL8201_PHY_ID) ||
- (ixEthMiiPhyId[phyAddr] == IX_ETH_MII_LXT9785_PHY_ID)
- )
- {
---- ixp400_xscale_sw/src/ethMii/IxEthMii_p.h 1970-01-01 00:00:00.000000000 +0000
-+++ ixp400_xscale_sw/src/ethMii/IxEthMii_p.h 1970-01-01 00:00:00.000000000 +0000
-@@ -179,6 +179,7 @@
- #define IX_ETH_MII_LXT973A3_PHY_ID 0x00137A11
- #define IX_ETH_MII_KS8995_PHY_ID 0x00221450
- #define IX_ETH_MII_LXT9785_PHY_ID 0x001378FF
-+#define IX_ETH_MII_RTL8201_PHY_ID 0x00008201
- #define IX_ETH_MII_RTL8305_FAKE_PHY_ID 0x83058305
-
- #define IX_ETH_MII_INVALID_PHY_ID 0x00000000
diff --git a/recipes/ixp4xx/ixp4xx-csr/badpaths.patch b/recipes/ixp4xx/ixp4xx-csr/badpaths.patch
deleted file mode 100644
index c5981aa3b7..0000000000
--- a/recipes/ixp4xx/ixp4xx-csr/badpaths.patch
+++ /dev/null
@@ -1,18 +0,0 @@
-
-#
-# Patch managed by http://www.mn-logistik.de/unsupported/pxa250/patcher
-#
-
---- ixp400_xscale_sw/src/linux/vx.c~ugh 2003-12-12 14:58:34.000000000 -0500
-+++ ixp400_xscale_sw/src/linux/vx.c 2004-11-14 17:50:07.610969440 -0500
-@@ -31,8 +31,8 @@
- *
- * -- End Intel Copyright Notice --
- */
--#include <asm-arm/system.h>
--#include <asm-arm/semaphore.h>
-+#include <asm/system.h>
-+#include <asm/semaphore.h>
- #include <linux/kernel.h>
- #include <linux/time.h>
- #include <linux/sched.h>
diff --git a/recipes/ixp4xx/ixp4xx-csr/build-timing-annoyance.patch b/recipes/ixp4xx/ixp4xx-csr/build-timing-annoyance.patch
deleted file mode 100644
index 0c040ec2df..0000000000
--- a/recipes/ixp4xx/ixp4xx-csr/build-timing-annoyance.patch
+++ /dev/null
@@ -1,10 +0,0 @@
---- ixp400_xscale_sw/Makefile~ 2004-11-18 21:26:43.000000000 +1030
-+++ ixp400_xscale_sw/Makefile 2004-11-18 21:31:20.000000000 +1030
-@@ -1015,6 +1015,7 @@
- cp Makefile.kmod26 $(OBJ_DIR)/Makefile
- make -C $(OBJ_DIR)
- $(LD) $(LDFLAGS) $^ -o $@
-+ sleep 2
- make -C $(OBJ_DIR)
-
-
diff --git a/recipes/ixp4xx/ixp4xx-csr_1.4.bb b/recipes/ixp4xx/ixp4xx-csr_1.4.bb
deleted file mode 100644
index 3e5b444002..0000000000
--- a/recipes/ixp4xx/ixp4xx-csr_1.4.bb
+++ /dev/null
@@ -1,63 +0,0 @@
-# Intel ixp4xx access library software. Note that this has an Intel
-# license which restricts its use.
-HOMEPAGE = "http://www.intel.com/design/network/products/npfamily/ixp420.htm"
-LICENSE = "http://www.intel.com/design/network/swsup/np_sla/ixp400.htm"
-LICENSE_HOMEPAGE = "http://www.intel.com/design/network/products/npfamily/ixp425swr1.htm"
-# You must download the following software to your OpenEmbedded downloads
-# directory before using this package:
-#
-# ixp400AccessLibrary-1_4.zip
-#
-# To do this go to the LICENSE_HOMEPAGE above, register/login (using a
-# web browser which is supported by the login page), this will give you
-# access to the web page from which you can download the software - you
-# need the: "Intel® IXP400 Software and RedBoot* Boot Loader", follow
-# the "Archived" link and the v1.4 software then select the the "Intel
-# Hardware Access Software" "1.4 download", this will take you to the
-# license agreement which you must accept to use this package.
-#
-# Store the file with the name given below in your downloads directory
-#
-SRC_URI = "http://www.intel.com/Please-Read-The-BB-File/ixp400AccessLibrary-1_4.zip"
-SRC_URI += "http://www.wnk.at/ixp400_accesslib_kernel26/data/patch_accesslib_kernel26_20040811.diff;patch=1"
-SRC_URI += "file://badpaths.patch;patch=1"
-SRC_URI += "file://build-timing-annoyance.patch;patch=1"
-
-S = "${WORKDIR}/ixp400_xscale_sw"
-PR = "r6"
-
-COMPATIBLE_HOST = "^armeb-linux.*"
-COMPATIBLE_MACHINE = "(nslu2|ixp4xx)"
-
-inherit module
-
-#LINUX_MACH_CFLAGS := -D__LINUX_ARM_ARCH__=5 -mcpu=xscale -mtune=xscale
-CFLAGS = "-fno-common -D__KERNEL__ -DMODULE -D__linux -DCPU=33 -DXSCALE=33 \
- -D__LINUX_ARM_ARCH__=5 \
- -I${S}/src/linux -I${S}/src/include \
- ${BUILD_OPTIMIZATION} \
- -I${STAGING_KERNEL_DIR}/include"
-
-EXTRA_OEMAKE = "'CFLAGS=${CFLAGS}' \
- 'CC=${KERNEL_CC}' \
- 'LD=${KERNEL_LD}' \
- 'IX_TARGET=linuxbe' \
- 'LINUX_SRC=${STAGING_KERNEL_DIR}' \
- 'ARCH=${ARCH}'"
-#EXTRA_OEMAKE = "'LINUX_SRC=${STAGING_KERNEL_DIR}' 'IX_TARGET=${IX_TARGET}' \
-# 'ARCH=${TARGET_ARCH}' 'CROSS_COMPILE=${TARGET_PREFIX}'"
-
-do_compile () {
- oe_runmake ixp400.ko
-}
-
-do_stage () {
- install -d ${STAGING_INCDIR}/linux/ixp4xx-csr
- install -m 0644 src/include/*.h ${STAGING_INCDIR}/linux/ixp4xx-csr/
- cp -RLf src/linux/* ${STAGING_INCDIR}/linux/ixp4xx-csr/
-}
-
-do_install () {
- install -d ${D}${base_libdir}/modules/${KERNEL_VERSION}/drivers/ixp400
- install -m 0644 lib/linuxbe/ixp400.ko ${D}${base_libdir}/modules/${KERNEL_VERSION}/drivers/ixp400/
-}
diff --git a/recipes/ixp4xx/ixp4xx-csr_1.5.bb b/recipes/ixp4xx/ixp4xx-csr_1.5.bb
deleted file mode 100644
index d9c69564f7..0000000000
--- a/recipes/ixp4xx/ixp4xx-csr_1.5.bb
+++ /dev/null
@@ -1,63 +0,0 @@
-# Intel ixp4xx access library software. Note that this has an Intel
-# license which restricts its use.
-HOMEPAGE = "http://www.intel.com/design/network/products/npfamily/ixp420.htm"
-LICENSE = "http://www.intel.com/design/network/swsup/np_sla/ixp400.htm"
-LICENSE_HOMEPAGE = "http://www.intel.com/design/network/products/npfamily/ixp425swr1.htm"
-# You must download the following software to your OpenEmbedded downloads
-# directory before using this package:
-#
-# ixp400AccessLibrary-1_5.zip
-# ixp400NpeLibrary-1_5.zip
-#
-# To do this go to the LICENSE_HOMEPAGE above, register/login (using a
-# web browser which is supported by the login page), this will give you
-# access to the web page from which you can download the software - you
-# need the: "Intel® IXP400 Software and RedBoot* Boot Loader" and, from
-# this the "Intel Hardware Access Software" and "NPE Microcode" (both
-# versions 1.5, encryption is not required.)
-#
-# Store the files with the names given below in your downloads directory
-#
-SRC_URI = "http://www.intel.com/Please-Read-The-BB-File/ixp400AccessLibrary-1_5.zip"
-SRC_URI += "http://www.intel.com/Please-Read-The-BB-File/ixp400NpeLibrary-1_5.zip"
-SRC_URI += "file://2.6.patch;patch=1"
-DEPENDS = "ixp-osal"
-S = "${WORKDIR}/ixp400_xscale_sw"
-PR = "r1"
-
-COMPATIBLE_HOST = "^armeb-linux.*"
-COMPATIBLE_MACHINE = "(nslu2|ixp4xx)"
-
-inherit module
-
-OSAL_PATH = "lib/linux/linuxbe/ixp400"
-# This is a somewhat arbitrary choice:
-OSAL_DIR = "${STAGING_KERNEL_DIR}/ixp_osal"
-
-EXTRA_OEMAKE = "'CC=${KERNEL_CC}' \
- 'LD=${KERNEL_LD}' \
- 'AR=${AR}' \
- 'IX_XSCALE_SW=${S}' \
- 'IX_TARGET=linuxbe' \
- 'IX_MPHY=1' \
- 'IX_MPHYSINGLEPORT=1' \
- 'LINUX_SRC=${STAGING_KERNEL_DIR}' \
- 'LINUX_CROSS_COMPILE=${HOST_PREFIX}' \
- 'OSAL_DIR=${OSAL_DIR}' \
- 'OSAL_IMAGE=${OSAL_DIR}/${OSAL_PATH}/libosal.a' \
- 'OSAL_MODULE=${OSAL_DIR}/${OSAL_PATH}/ixp_osal.o' \
- "
-
-do_compile () {
- oe_runmake ixp400.ko
-}
-
-do_stage () {
- install -d ${STAGING_INCDIR}/linux/ixp4xx-csr
- install -m 0644 src/include/*.h ${STAGING_INCDIR}/linux/ixp4xx-csr/
-}
-
-do_install () {
- install -d ${D}${base_libdir}/modules/${KERNEL_VERSION}/drivers/ixp400
- install -m 0644 lib/linuxbe/ixp400.ko ${D}${base_libdir}/modules/${KERNEL_VERSION}/drivers/ixp400/
-}
diff --git a/recipes/ixp4xx/ixp4xx-csr_2.0.bb b/recipes/ixp4xx/ixp4xx-csr_2.0.bb
deleted file mode 100644
index e462c505fb..0000000000
--- a/recipes/ixp4xx/ixp4xx-csr_2.0.bb
+++ /dev/null
@@ -1,89 +0,0 @@
-# Intel ixp4xx access library software. Note that this has an Intel
-# license which restricts its use.
-HOMEPAGE = "http://www.intel.com/design/network/products/npfamily/ixp420.htm"
-LICENSE = "http://www.intel.com/design/network/swsup/np_sla/ixp400.htm"
-LICENSE_HOMEPAGE = "http://www.intel.com/design/network/products/npfamily/ixp425swr1.htm"
-# You must download the following software to your OpenEmbedded downloads
-# directory before using this package:
-#
-# IPL_ixp400AccessLibrary-2_0.zip
-# IPL_ixp400NpeLibrary-2_0_5.zip
-#
-# To do this go to the LICENSE_HOMEPAGE above, register/login (using a
-# web browser which is supported by the login page), this will give you
-# access to the web page from which you can download the software - you
-# need the: "Intel® IXP400 Software and RedBoot* Boot Loader" and, from
-# this the "Intel Hardware Access Software" and "NPE Microcode" (both
-# versions 2.0, encryption is not required.)
-#
-# Store the files with the names given below in your downloads directory
-# and store the 32 character md5sum of the file in a file of the same
-# name with the additional extension .md5:
-#
-# IPL_ixp400AccessLibrary-2_0.zip.md5
-# IPL_ixp400NpeLibrary-2_0_5.zip.md5
-#
-SRC_URI = "http://www.intel.com/Please-Read-The-BB-File/IPL_ixp400AccessLibrary-2_0.zip"
-SRC_URI += "http://www.intel.com/Please-Read-The-BB-File/IPL_ixp400NpeLibrary-2_0_5.zip"
-SRC_URI += "file://Makefile.patch;patch=1"
-SRC_URI += "file://2.6.patch;patch=1"
-SRC_URI += "file://2.6.14.patch;patch=1"
-SRC_URI += "file://le.patch;patch=1"
-DEPENDS = "ixp-osal"
-S = "${WORKDIR}/ixp400_xscale_sw"
-PR = "r6"
-
-COMPATIBLE_HOST = "^arm.*-linux.*"
-COMPATIBLE_MACHINE = "(nslu2|ixp4xx)"
-
-inherit module
-
-IX_TARGET = "linux${SITEINFO_ENDIANESS}"
-
-OSAL_PATH = "lib/ixp425/linux/${IX_TARGET}"
-# This is a somewhat arbitrary choice:
-OSAL_DIR = "${STAGING_KERNEL_DIR}/ixp_osal"
-
-# COMPONENTS: do not build all the components, this just creates a
-# ridiculously large module which duplicates functionality in the
-# available Linux drivers.
-COMPONENTS = "qmgr npeMh npeDl ethAcc ethDB ethMii featureCtrl osServices oslinux"
-CODELETS_COMPONENTS = ""
-
-# NOTE: IX_INCLUDE_MICROCODE causes the microcode to be included in
-# the ixp4xx-csr module, this *requires* the IPL_ixp400NpeLibrary-2_0.zip
-# to be added to the SRC_URI - see above.
-EXTRA_OEMAKE = "'CC=${KERNEL_CC}' \
- 'LD=${KERNEL_LD}' \
- 'AR=${AR}' \
- 'IX_XSCALE_SW=${S}' \
- 'IX_TARGET=${IX_TARGET}' \
- '${IX_TARGET}_COMPONENTS=${COMPONENTS}' \
- '${IX_TARGET}_CODELETS_COMPONENTS=${CODELETS_COMPONENTS}' \
- 'IX_DEVICE=ixp42X' \
- 'IX_MPHY=1' \
- 'IX_MPHYSINGLEPORT=1' \
- 'IX_INCLUDE_MICROCODE=1' \
- 'LINUX_SRC=${STAGING_KERNEL_DIR}' \
- 'LINUX_CROSS_COMPILE=${HOST_PREFIX}' \
- 'OSAL_DIR=${OSAL_DIR}' \
- 'OSAL_IMAGE=${OSAL_DIR}/${OSAL_PATH}/libosal.a' \
- 'OSAL_MODULE=${OSAL_DIR}/${OSAL_PATH}/ixp_osal.o' \
- "
-
-do_compile () {
- # The target makes the .ko as a side effect, as a result of the
- # Makefile.patch
- oe_runmake lib/${IX_TARGET}/ixp400.o
-}
-
-do_stage () {
- install -d ${STAGING_INCDIR}/linux/ixp4xx-csr
- install -m 0644 src/include/*.h ${STAGING_INCDIR}/linux/ixp4xx-csr/
-}
-
-
-do_install () {
- install -d ${D}${base_libdir}/modules/${KERNEL_VERSION}/kernel/drivers/ixp400
- install -m 0644 lib/${IX_TARGET}/ixp400.ko ${D}${base_libdir}/modules/${KERNEL_VERSION}/kernel/drivers/ixp400/
-}
diff --git a/recipes/ixp4xx/ixp4xx-csr_2.1.1.bb b/recipes/ixp4xx/ixp4xx-csr_2.1.1.bb
deleted file mode 100644
index 32685d30f6..0000000000
--- a/recipes/ixp4xx/ixp4xx-csr_2.1.1.bb
+++ /dev/null
@@ -1,121 +0,0 @@
-DEFAULT_PREFERENCE = "-1"
-# Intel ixp4xx access library software. Note that this has an Intel
-# license which restricts its use.
-HOMEPAGE = "http://www.intel.com/design/network/products/npfamily/ixp420.htm"
-LICENSE = "http://www.intel.com/design/network/swsup/np_sla/ixp400.htm"
-LICENSE_HOMEPAGE = "http://www.intel.com/design/network/products/npfamily/ixp425swr1.htm"
-# You must download the following software to your OpenEmbedded downloads
-# directory before using this package:
-#
-# BSD_ixp400AccessLibrary-2_1.zip
-# BSD_ixp400AccessLibrary-2_1_1.zip
-# IPL_ixp400NpeLibrary-2_1.zip
-#
-# To do this go to the LICENSE_HOMEPAGE above, register/login (using a
-# web browser which is supported by the login page), this will give you
-# access to the web page from which you can download the software - you
-# need the: "Intel® IXP400 Software and RedBoot* Boot Loader" and, from
-# this the "Intel Hardware Access Software" and "NPE Microcode" (both
-# versions 2.1, encryption is not required.)
-#
-# Store the files with the names given below in your downloads directory
-# and store the 32 character md5sum of the file in a file of the same
-# name with the additional extension .md5:
-#
-# BSD_ixp400AccessLibrary-2_1.zip.md5
-# BSD_ixp400AccessLibrary-2_1_1.zip.md5
-# IPL_ixp400NpeLibrary-2_1.zip.md5
-#
-SRC_URI = "http://www.intel.com/Please-Read-The-BB-File/BSD_ixp400AccessLibrary-2_1.zip"
-SRC_URI += "http://www.intel.com/Please-Read-The-BB-File/BSD_ixp400AccessLibrary-2_1_1.zip"
-SRC_URI += "http://www.intel.com/Please-Read-The-BB-File/IPL_ixp400NpeLibrary-2_1.zip"
-SRC_URI += "file://bit-macro.patch;patch=1"
-SRC_URI += "file://le.patch;patch=1"
-SRC_URI += "file://mii-debug.patch;patch=1"
-SRC_URI += "file://rtl8201-support.patch;patch=1"
-SRC_URI += "file://oe-makefile.patch;patch=1"
-SRC_URI += "file://livelock.patch;patch=1"
-SRC_URI += "file://module-param.patch;patch=1"
-SRC_URI += "file://undefined-attribute.patch;patch=1"
-
-DEPENDS = "ixp-osal"
-S = "${WORKDIR}/ixp400_xscale_sw"
-PR = "r2"
-
-COMPATIBLE_HOST = "^arm.*-linux.*"
-COMPATIBLE_MACHINE = "(nslu2|ixp4xx)"
-
-inherit module
-
-do_pre_patch () {
- cd ${WORKDIR} ; patch -p0 < BSD_ixp400AccessLibrary-2_1_1.patch
-}
-
-addtask pre_patch before do_patch
-
-IX_TARGET = "linux${SITEINFO_ENDIANESS}"
-IX_ENSURE = ""
-#IX_ENSURE = "IX_OSAL_ENSURE_ON=1"
-
-OSAL_PATH = "lib/ixp425/linux/${IX_TARGET}"
-# This is a somewhat arbitrary choice:
-OSAL_DIR = "${STAGING_KERNEL_DIR}/ixp_osal"
-
-# COMPONENTS: do not build all the components, this just creates a
-# ridiculously large module which duplicates functionality in the
-# available Linux drivers.
-COMPONENTS = "qmgr npeMh npeDl ethAcc ethDB ethMii featureCtrl osServices oslinux"
-CODELETS_COMPONENTS = ""
-
-# NOTE: IX_INCLUDE_MICROCODE causes the microcode to be included in
-# the ixp4xx-csr module, this *requires* the IPL_ixp400NpeLibrary-2_1.zip
-# to be added to the SRC_URI - see above.
-EXTRA_OEMAKE = "'AR=${AR}' \
- 'IX_LINUXVER=2.6' \
- 'IX_XSCALE_SW=${S}' \
- 'IX_TARGET=${IX_TARGET}' \
- '${IX_TARGET}_COMPONENTS=${COMPONENTS}' \
- '${IX_TARGET}_CODELETS_COMPONENTS=${CODELETS_COMPONENTS}' \
- 'IX_DEVICE=ixp42X' \
- 'IX_BUILD_MICROCODE=1' \
- 'IX_UTOPIAMODE=0' \
- 'IX_MPHYSINGLEPORT=1' \
- ${IX_ENSURE} \
- 'LINUX_SRC=${STAGING_KERNEL_DIR}' \
- 'LINUX_CROSS_COMPILE=${HOST_PREFIX}' \
- 'OSAL_DIR=${OSAL_DIR}' \
- 'OSAL_IMAGE=${OSAL_DIR}/${OSAL_PATH}/libosal.a' \
- 'OSAL_MODULE=${OSAL_DIR}/${OSAL_PATH}/ixp_osal.o' \
- "
-
-MAKE_TARGETS = "ixp400"
-
-KCONFIG_FILE = "${STAGING_KERNEL_DIR}/kernel-config"
-do_stage () {
- install -d ${STAGING_INCDIR}/linux/ixp4xx-csr
- install -m 0644 src/include/*.h ${STAGING_INCDIR}/linux/ixp4xx-csr/
- # Since Module.symvers in the kernel staging directory doesn't include
- # the symbols from ixp400.o we need to add them to another file for
- # the ixp400-eth build
- rm -f '${STAGING_KERNEL_DIR}/ixp400-csr.symvers'
- . '${KCONFIG_FILE}'
- if '${STAGING_KERNEL_DIR}/scripts/mod/modpost' \
- ${CONFIG_MODVERSIONS:+-m} \
- ${CONFIG_MODULE_SRCVERSION_ALL:+-a} \
- -i '${STAGING_KERNEL_DIR}/Module.symvers' \
- -o '${STAGING_KERNEL_DIR}/ixp400-csr.symvers' \
- lib/${IX_TARGET}/ixp400.o 2>&1 | egrep .
- then
- echo "MODPOST errors - see above"
- return 1
- else
- return 0
- fi
-}
-
-
-do_install () {
- install -d ${D}${base_libdir}/modules/${KERNEL_VERSION}/kernel/drivers/ixp400
- install -m 0644 lib/${IX_TARGET}/ixp400.ko ${D}${base_libdir}/modules/${KERNEL_VERSION}/kernel/drivers/ixp400/
- install -m 0644 lib/${IX_TARGET}/IxNpeMicrocode.dat ${D}${base_libdir}/modules/${KERNEL_VERSION}/kernel/drivers/ixp400/
-}
diff --git a/recipes/ixp4xx/ixp4xx-csr_2.1.bb b/recipes/ixp4xx/ixp4xx-csr_2.1.bb
deleted file mode 100644
index e95f807107..0000000000
--- a/recipes/ixp4xx/ixp4xx-csr_2.1.bb
+++ /dev/null
@@ -1,112 +0,0 @@
-# Intel ixp4xx access library software. Note that this has an Intel
-# license which restricts its use.
-HOMEPAGE = "http://www.intel.com/design/network/products/npfamily/ixp420.htm"
-LICENSE = "http://www.intel.com/design/network/swsup/np_sla/ixp400.htm"
-LICENSE_HOMEPAGE = "http://www.intel.com/design/network/products/npfamily/ixp425swr1.htm"
-# You must download the following software to your OpenEmbedded downloads
-# directory before using this package:
-#
-# IPL_ixp400AccessLibrary-2_1.zip
-# IPL_ixp400NpeLibrary-2_1.zip
-#
-# To do this go to the LICENSE_HOMEPAGE above, register/login (using a
-# web browser which is supported by the login page), this will give you
-# access to the web page from which you can download the software - you
-# need the: "Intel® IXP400 Software and RedBoot* Boot Loader" and, from
-# this the "Intel Hardware Access Software" and "NPE Microcode" (both
-# versions 2.1, encryption is not required.)
-#
-# Store the files with the names given below in your downloads directory
-# and store the 32 character md5sum of the file in a file of the same
-# name with the additional extension .md5:
-#
-# IPL_ixp400AccessLibrary-2_1.zip.md5
-# IPL_ixp400NpeLibrary-2_1.zip.md5
-#
-SRC_URI = "http://www.intel.com/Please-Read-The-BB-File/IPL_ixp400AccessLibrary-2_1.zip"
-SRC_URI += "http://www.intel.com/Please-Read-The-BB-File/IPL_ixp400NpeLibrary-2_1.zip"
-SRC_URI += "file://Makefile.patch;patch=1"
-SRC_URI += "file://ixethdb-header.patch;patch=1"
-SRC_URI += "file://bit-macro.patch;patch=1"
-SRC_URI += "file://ixnpemhconfigisr-is-private.patch;patch=1"
-SRC_URI += "file://le.patch;patch=1"
-SRC_URI += "file://mii-debug.patch;patch=1"
-SRC_URI += "file://rtl8201-support.patch;patch=1"
-SRC_URI += "file://gcc4.patch;patch=1"
-SRC_URI += "file://oe-makefile.patch;patch=1"
-SRC_URI += "file://livelock.patch;patch=1"
-SRC_URI += "file://module-param.patch;patch=1"
-
-DEPENDS = "ixp-osal"
-S = "${WORKDIR}/ixp400_xscale_sw"
-PR = "r12"
-
-COMPATIBLE_HOST = "^arm.*-linux.*"
-COMPATIBLE_MACHINE = "(nslu2|ixp4xx)"
-
-inherit module
-
-IX_TARGET = "linux${SITEINFO_ENDIANESS}"
-IX_ENSURE = ""
-#IX_ENSURE = "IX_OSAL_ENSURE_ON=1"
-
-OSAL_PATH = "lib/ixp425/linux/${IX_TARGET}"
-# This is a somewhat arbitrary choice:
-OSAL_DIR = "${STAGING_KERNEL_DIR}/ixp_osal"
-
-# COMPONENTS: do not build all the components, this just creates a
-# ridiculously large module which duplicates functionality in the
-# available Linux drivers.
-COMPONENTS = "qmgr npeMh npeDl ethAcc ethDB ethMii featureCtrl osServices oslinux"
-CODELETS_COMPONENTS = ""
-
-# NOTE: IX_INCLUDE_MICROCODE causes the microcode to be included in
-# the ixp4xx-csr module, this *requires* the IPL_ixp400NpeLibrary-2_1.zip
-# to be added to the SRC_URI - see above.
-EXTRA_OEMAKE = "'AR=${AR}' \
- 'IX_XSCALE_SW=${S}' \
- 'IX_TARGET=${IX_TARGET}' \
- '${IX_TARGET}_COMPONENTS=${COMPONENTS}' \
- '${IX_TARGET}_CODELETS_COMPONENTS=${CODELETS_COMPONENTS}' \
- 'IX_DEVICE=ixp42X' \
- 'IX_INCLUDE_MICROCODE=1' \
- 'IX_UTOPIAMODE=0' \
- 'IX_MPHYSINGLEPORT=1' \
- ${IX_ENSURE} \
- 'LINUX_SRC=${STAGING_KERNEL_DIR}' \
- 'LINUX_CROSS_COMPILE=${HOST_PREFIX}' \
- 'OSAL_DIR=${OSAL_DIR}' \
- 'OSAL_IMAGE=${OSAL_DIR}/${OSAL_PATH}/libosal.a' \
- 'OSAL_MODULE=${OSAL_DIR}/${OSAL_PATH}/ixp_osal.o' \
- "
-
-MAKE_TARGETS = "lib/${IX_TARGET}/ixp400.o"
-
-KCONFIG_FILE = "${STAGING_KERNEL_DIR}/kernel-config"
-do_stage () {
- install -d ${STAGING_INCDIR}/linux/ixp4xx-csr
- install -m 0644 src/include/*.h ${STAGING_INCDIR}/linux/ixp4xx-csr/
- # Since Module.symvers in the kernel staging directory doesn't include
- # the symbols from ixp400.o we need to add them to another file for
- # the ixp400-eth build
- rm -f '${STAGING_KERNEL_DIR}/ixp400-csr.symvers'
- . '${KCONFIG_FILE}'
- if '${STAGING_KERNEL_DIR}/scripts/mod/modpost' \
- ${CONFIG_MODVERSIONS:+-m} \
- ${CONFIG_MODULE_SRCVERSION_ALL:+-a} \
- -i '${STAGING_KERNEL_DIR}/Module.symvers' \
- -o '${STAGING_KERNEL_DIR}/ixp400-csr.symvers' \
- ${MAKE_TARGETS} 2>&1 | egrep .
- then
- echo "MODPOST errors - see above"
- return 1
- else
- return 0
- fi
-}
-
-
-do_install () {
- install -d ${D}${base_libdir}/modules/${KERNEL_VERSION}/kernel/drivers/ixp400
- install -m 0644 lib/${IX_TARGET}/ixp400.ko ${D}${base_libdir}/modules/${KERNEL_VERSION}/kernel/drivers/ixp400/
-}