fix the Aruba ethernet drivers for 2.6.17
[openwrt/openwrt.git] / openwrt / target / linux / aruba-2.6 / patches / 000-aruba.patch
index ce9cf2289f79f8e025248137d257261fe1f571e7..83f023cfe06a0397fb3e8a5a5535d783a8f58ec0 100644 (file)
@@ -1,526 +1,6 @@
-diff -Nur linux-2.6.15/arch/mips/aruba/flash_lock.c linux-2.6.15-openwrt/arch/mips/aruba/flash_lock.c
---- linux-2.6.15/arch/mips/aruba/flash_lock.c  1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.15-openwrt/arch/mips/aruba/flash_lock.c  2006-01-10 00:32:32.000000000 +0100
-@@ -0,0 +1,27 @@
-+#include <linux/module.h>
-+#include <linux/types.h>
-+#include <asm/bootinfo.h>
-+
-+#define AP70_PROT_ADDR 0xb8010008
-+#define AP70_PROT_DATA 0x8
-+#define AP60_PROT_ADDR 0xB8400000
-+#define AP60_PROT_DATA 0x04000000
-+
-+void unlock_ap60_70_flash(void)
-+{
-+      volatile __u32 val;
-+      switch (mips_machtype) {
-+              case MACH_ARUBA_AP70:
-+                      val = *(volatile __u32 *)AP70_PROT_ADDR;
-+                      val &= ~(AP70_PROT_DATA);
-+                      *(volatile __u32 *)AP70_PROT_ADDR = val;
-+                      break;
-+              case MACH_ARUBA_AP65:
-+              case MACH_ARUBA_AP60:
-+              default:
-+                      val = *(volatile __u32 *)AP60_PROT_ADDR;
-+                      val &= ~(AP60_PROT_DATA);
-+                      *(volatile __u32 *)AP60_PROT_ADDR = val;
-+                      break;
-+      }
-+}
-diff -Nur linux-2.6.15/arch/mips/aruba/idtIRQ.S linux-2.6.15-openwrt/arch/mips/aruba/idtIRQ.S
---- linux-2.6.15/arch/mips/aruba/idtIRQ.S      1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.15-openwrt/arch/mips/aruba/idtIRQ.S      2006-01-10 00:32:32.000000000 +0100
-@@ -0,0 +1,87 @@
-+/**************************************************************************
-+ *
-+ *  BRIEF MODULE DESCRIPTION
-+ *     Intterrupt dispatcher code for IDT boards
-+ *
-+ *  Copyright 2004 IDT Inc. (rischelp@idt.com)
-+ *         
-+ *  This program is free software; you can redistribute  it and/or modify it
-+ *  under  the terms of  the GNU General  Public License as published by the
-+ *  Free Software Foundation;  either version 2 of the  License, or (at your
-+ *  option) any later version.
-+ *
-+ *  THIS  SOFTWARE  IS PROVIDED   ``AS  IS'' AND   ANY  EXPRESS OR IMPLIED
-+ *  WARRANTIES,   INCLUDING, BUT NOT  LIMITED  TO, THE IMPLIED WARRANTIES OF
-+ *  MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN
-+ *  NO  EVENT  SHALL   THE AUTHOR  BE    LIABLE FOR ANY   DIRECT, INDIRECT,
-+ *  INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
-+ *  NOT LIMITED   TO, PROCUREMENT OF  SUBSTITUTE GOODS  OR SERVICES; LOSS OF
-+ *  USE, DATA,  OR PROFITS; OR  BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
-+ *  ANY THEORY OF LIABILITY, WHETHER IN  CONTRACT, STRICT LIABILITY, OR TORT
-+ *  (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
-+ *  THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-+ *
-+ *  You should have received a copy of the  GNU General Public License along
-+ *  with this program; if not, write  to the Free Software Foundation, Inc.,
-+ *  675 Mass Ave, Cambridge, MA 02139, USA.
-+ *
-+ *
-+ **************************************************************************
-+ * May 2004 rkt, neb
-+ *
-+ * Initial Release
-+ *
-+ * 
-+ *
-+ **************************************************************************
-+ */
-+              
-+      
-+#include <asm/asm.h>
-+#include <asm/mipsregs.h>
-+#include <asm/regdef.h>
-+#include <asm/stackframe.h>
-+
-+      .text
-+      .set    noreorder
-+      .set    noat
-+      .align  5
-+      NESTED(idtIRQ, PT_SIZE, sp)
-+      .set noat
-+      SAVE_ALL
-+      CLI
-+
-+      .set    at
-+      .set    noreorder
-+
-+      /* Get the pending interrupts */
-+      mfc0    t0, CP0_CAUSE
-+      nop
-+                       
-+      /* Isolate the allowed ones by anding the irq mask */
-+      mfc0    t2, CP0_STATUS
-+      move    a1, sp          /* need a nop here, hence we anticipate */
-+      andi    t0, CAUSEF_IP
-+      and     t0, t2
-+                                                                
-+      /* check for r4k counter/timer IRQ. */
-+      
-+      andi    t1, t0, CAUSEF_IP7
-+      beqz    t1, 1f
-+      nop
-+
-+      jal     aruba_timer_interrupt   
-+
-+      li      a0, 7
-+
-+      j       ret_from_irq
-+      nop
-+1:
-+      jal     aruba_irqdispatch
-+      move    a0, t0
-+      j       ret_from_irq
-+      nop
-+
-+      END(idtIRQ)
-+
-+
-diff -Nur linux-2.6.15/arch/mips/aruba/irq.c linux-2.6.15-openwrt/arch/mips/aruba/irq.c
---- linux-2.6.15/arch/mips/aruba/irq.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.15-openwrt/arch/mips/aruba/irq.c 2006-01-10 00:32:32.000000000 +0100
-@@ -0,0 +1,394 @@
-+/**************************************************************************
-+ *
-+ *  BRIEF MODULE DESCRIPTION
-+ *     Interrupt routines for IDT EB434 boards
-+ *
-+ *  Copyright 2004 IDT Inc. (rischelp@idt.com)
-+ *         
-+ *  This program is free software; you can redistribute  it and/or modify it
-+ *  under  the terms of  the GNU General  Public License as published by the
-+ *  Free Software Foundation;  either version 2 of the  License, or (at your
-+ *  option) any later version.
-+ *
-+ *  THIS  SOFTWARE  IS PROVIDED   ``AS  IS'' AND   ANY  EXPRESS OR IMPLIED
-+ *  WARRANTIES,   INCLUDING, BUT NOT  LIMITED  TO, THE IMPLIED WARRANTIES OF
-+ *  MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN
-+ *  NO  EVENT  SHALL   THE AUTHOR  BE    LIABLE FOR ANY   DIRECT, INDIRECT,
-+ *  INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
-+ *  NOT LIMITED   TO, PROCUREMENT OF  SUBSTITUTE GOODS  OR SERVICES; LOSS OF
-+ *  USE, DATA,  OR PROFITS; OR  BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
-+ *  ANY THEORY OF LIABILITY, WHETHER IN  CONTRACT, STRICT LIABILITY, OR TORT
-+ *  (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
-+ *  THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-+ *
-+ *  You should have received a copy of the  GNU General Public License along
-+ *  with this program; if not, write  to the Free Software Foundation, Inc.,
-+ *  675 Mass Ave, Cambridge, MA 02139, USA.
-+ *
-+ *
-+ **************************************************************************
-+ * May 2004 rkt, neb
-+ *
-+ * Initial Release
-+ *
-+ * 
-+ *
-+ **************************************************************************
-+ */
-+
-+#include <linux/errno.h>
-+#include <linux/init.h>
-+#include <linux/kernel_stat.h>
-+#include <linux/module.h>
-+#include <linux/signal.h>
-+#include <linux/sched.h>
-+#include <linux/types.h>
-+#include <linux/interrupt.h>
-+#include <linux/ioport.h>
-+#include <linux/timex.h>
-+#include <linux/slab.h>
-+#include <linux/random.h>
-+#include <linux/delay.h>
-+
-+#include <asm/bitops.h>
-+#include <asm/bootinfo.h>
-+#include <asm/io.h>
-+#include <asm/mipsregs.h>
-+#include <asm/system.h>
-+#include <asm/idt-boards/rc32434/rc32434.h>
-+#include <asm/idt-boards/rc32434/rc32434_gpio.h>
-+
-+#include <asm/irq.h>
-+
-+#undef DEBUG_IRQ
-+#ifdef DEBUG_IRQ
-+/* note: prints function name for you */
-+#define DPRINTK(fmt, args...) printk("%s: " fmt, __FUNCTION__ , ## args)
-+#else
-+#define DPRINTK(fmt, args...)
-+#endif
-+
-+extern asmlinkage void idtIRQ(void);
-+static unsigned int startup_irq(unsigned int irq);
-+static void end_irq(unsigned int irq_nr);
-+static void mask_and_ack_irq(unsigned int irq_nr);
-+static void aruba_enable_irq(unsigned int irq_nr);
-+static void aruba_disable_irq(unsigned int irq_nr);
-+
-+extern void __init init_generic_irq(void);
-+
-+typedef struct {
-+      u32 mask;
-+      volatile u32 *base_addr;
-+} intr_group_t;
-+
-+static const intr_group_t intr_group_merlot[NUM_INTR_GROUPS] = {
-+      {0xffffffff, (u32 *) KSEG1ADDR(IC_GROUP0_PEND + 0)},
-+};
-+
-+#define READ_PEND_MERLOT(base) (*((volatile unsigned long *)(0xbc003010)))
-+#define READ_MASK_MERLOT(base) (*((volatile unsigned long *)(0xbc003010 + 4)))
-+#define WRITE_MASK_MERLOT(base, val) ((*((volatile unsigned long *)((0xbc003010) + 4))) = (val))
-+
-+static const intr_group_t intr_group_muscat[NUM_INTR_GROUPS] = {
-+      {0x0000efff, (u32 *) KSEG1ADDR(IC_GROUP0_PEND + 0 * IC_GROUP_OFFSET)},
-+      {0x00001fff, (u32 *) KSEG1ADDR(IC_GROUP0_PEND + 1 * IC_GROUP_OFFSET)},
-+      {0x00000007, (u32 *) KSEG1ADDR(IC_GROUP0_PEND + 2 * IC_GROUP_OFFSET)},
-+      {0x0003ffff, (u32 *) KSEG1ADDR(IC_GROUP0_PEND + 3 * IC_GROUP_OFFSET)},
-+      {0xffffffff, (u32 *) KSEG1ADDR(IC_GROUP0_PEND + 4 * IC_GROUP_OFFSET)}
-+};
-+
-+#define READ_PEND_MUSCAT(base) (*(base))
-+#define READ_MASK_MUSCAT(base) (*(base + 2))
-+#define WRITE_MASK_MUSCAT(base, val) (*(base + 2) = (val))
-+
-+static inline int irq_to_group(unsigned int irq_nr)
-+{
-+      switch (mips_machtype) {
-+              case MACH_ARUBA_AP70:
-+                      return ((irq_nr - GROUP0_IRQ_BASE) >> 5);
-+              case MACH_ARUBA_AP65:
-+              case MACH_ARUBA_AP60:
-+              default:
-+                      return 0;
-+      }
-+}
-+
-+static inline int group_to_ip(unsigned int group)
-+{
-+      switch (mips_machtype) {
-+              case MACH_ARUBA_AP70:
-+                      return group + 2;
-+              case MACH_ARUBA_AP65:
-+              case MACH_ARUBA_AP60:
-+              default:
-+                      return 6;
-+      }
-+}
-+
-+static inline void enable_local_irq(unsigned int ip)
-+{
-+      int ipnum = 0x100 << ip;
-+      clear_c0_cause(ipnum);
-+      set_c0_status(ipnum);
-+}
-+
-+static inline void disable_local_irq(unsigned int ip)
-+{
-+      int ipnum = 0x100 << ip;
-+      clear_c0_status(ipnum);
-+}
-+
-+static inline void ack_local_irq(unsigned int ip)
-+{
-+      int ipnum = 0x100 << ip;
-+      clear_c0_cause(ipnum);
-+}
-+
-+static void aruba_enable_irq(unsigned int irq_nr)
-+{
-+      int ip = irq_nr - GROUP0_IRQ_BASE;
-+      unsigned int group, intr_bit;
-+      volatile unsigned int *addr;
-+      if (ip < 0) {
-+              enable_local_irq(irq_nr);
-+      } else {
-+              // calculate group
-+              switch (mips_machtype) {
-+                      case MACH_ARUBA_AP70:
-+                              group = ip >> 5;
-+                              break;
-+                      case MACH_ARUBA_AP65:
-+                      case MACH_ARUBA_AP60:
-+                      default:
-+                              group = 0;
-+                              break;
-+              }
-+
-+              // calc interrupt bit within group
-+              ip -= (group << 5);
-+              intr_bit = 1 << ip;
-+
-+              // first enable the IP mapped to this IRQ
-+              enable_local_irq(group_to_ip(group));
-+
-+              switch (mips_machtype) {
-+                      case MACH_ARUBA_AP70:
-+                              addr = intr_group_muscat[group].base_addr;
-+                              // unmask intr within group
-+                              WRITE_MASK_MUSCAT(addr, READ_MASK_MUSCAT(addr) & ~intr_bit);
-+                              break;
-+                      case MACH_ARUBA_AP65:
-+                      case MACH_ARUBA_AP60:
-+                      default:
-+                              addr = intr_group_merlot[group].base_addr;
-+                              WRITE_MASK_MERLOT(addr, (READ_MASK_MERLOT(addr) | intr_bit));
-+                              break;
-+              }
-+      }
-+}
-+
-+static void aruba_disable_irq(unsigned int irq_nr)
-+{
-+      int ip = irq_nr - GROUP0_IRQ_BASE;
-+      unsigned int group, intr_bit, mask;
-+      volatile unsigned int *addr;
-+
-+      // calculate group
-+      switch (mips_machtype) {
-+              case MACH_ARUBA_AP70:
-+                      group = ip >> 5;
-+                      break;
-+              case MACH_ARUBA_AP65:
-+              case MACH_ARUBA_AP60:
-+              default:
-+                      group = 0;
-+                      break;
-+      }
-+
-+      // calc interrupt bit within group
-+      ip -= group << 5;
-+      intr_bit = 1 << ip;
-+
-+      switch (mips_machtype) {
-+              case MACH_ARUBA_AP70:
-+                      addr = intr_group_muscat[group].base_addr;
-+                      // mask intr within group
-+                      mask = READ_MASK_MUSCAT(addr);
-+                      mask |= intr_bit;
-+                      WRITE_MASK_MUSCAT(addr, mask);
-+      
-+                      /*
-+                         if there are no more interrupts enabled in this
-+                         group, disable corresponding IP
-+                       */
-+                      if (mask == intr_group_muscat[group].mask)
-+                              disable_local_irq(group_to_ip(group));
-+                      break;
-+              case MACH_ARUBA_AP65:
-+              case MACH_ARUBA_AP60:
-+              default:
-+                      addr = intr_group_merlot[group].base_addr;
-+                      addr = intr_group_merlot[group].base_addr;
-+                      // mask intr within group
-+                      WRITE_MASK_MERLOT(addr, (READ_MASK_MERLOT(addr) & ~intr_bit));
-+                      if (READ_MASK_MERLOT(addr))
-+                              disable_local_irq(group_to_ip(group));
-+                      break;
-+      }
-+}
-+
-+static unsigned int startup_irq(unsigned int irq_nr)
-+{
-+      aruba_enable_irq(irq_nr);
-+      return 0;
-+}
-+
-+static void shutdown_irq(unsigned int irq_nr)
-+{
-+      aruba_disable_irq(irq_nr);
-+      return;
-+}
-+
-+static void mask_and_ack_irq(unsigned int irq_nr)
-+{
-+      aruba_disable_irq(irq_nr);
-+      ack_local_irq(group_to_ip(irq_to_group(irq_nr)));
-+}
-+
-+static void end_irq(unsigned int irq_nr)
-+{
-+
-+      int ip = irq_nr - GROUP0_IRQ_BASE;
-+      unsigned int intr_bit, group;
-+      volatile unsigned int *addr;
-+
-+      if (irq_desc[irq_nr].status & (IRQ_DISABLED | IRQ_INPROGRESS)) {
-+              printk("warning: end_irq %d did not enable (%x)\n",
-+                     irq_nr, irq_desc[irq_nr].status);
-+      }
-+
-+      switch (mips_machtype) {
-+              case MACH_ARUBA_AP70:
-+                      if (irq_nr == GROUP4_IRQ_BASE + 9)       idt_gpio->gpioistat &= 0xfffffdff;
-+                      else if (irq_nr == GROUP4_IRQ_BASE + 10) idt_gpio->gpioistat &= 0xfffffbff;
-+                      else if (irq_nr == GROUP4_IRQ_BASE + 11) idt_gpio->gpioistat &= 0xfffff7ff;
-+                      else if (irq_nr == GROUP4_IRQ_BASE + 12) idt_gpio->gpioistat &= 0xffffefff;
-+      
-+                      group = ip >> 5;
-+      
-+                      // calc interrupt bit within group
-+                      ip -= (group << 5);
-+                      intr_bit = 1 << ip;
-+      
-+                      // first enable the IP mapped to this IRQ
-+                      enable_local_irq(group_to_ip(group));
-+      
-+                      addr = intr_group_muscat[group].base_addr;
-+                      // unmask intr within group
-+                      WRITE_MASK_MUSCAT(addr, READ_MASK_MUSCAT(addr) & ~intr_bit);
-+                      break;
-+              case MACH_ARUBA_AP65:
-+              case MACH_ARUBA_AP60:
-+                      group = 0;
-+                      // calc interrupt bit within group
-+                      intr_bit = 1 << ip;
-+                      // first enable the IP mapped to this IRQ
-+                      enable_local_irq(group_to_ip(group));
-+                      addr = intr_group_merlot[group].base_addr;
-+                      // unmask intr within group
-+                      WRITE_MASK_MERLOT(addr, (READ_MASK_MERLOT(addr) | intr_bit));
-+                      break;
-+      }
-+}
-+
-+static struct hw_interrupt_type aruba_irq_type = {
-+      .typename = "IDT434",
-+      .startup = startup_irq,
-+      .shutdown = shutdown_irq,
-+      .enable = aruba_enable_irq,
-+      .disable = aruba_disable_irq,
-+      .ack = mask_and_ack_irq,
-+      .end = end_irq,
-+};
-+
-+void __init arch_init_irq(void)
-+{
-+      int i;
-+      printk("Initializing IRQ's: %d out of %d\n", RC32434_NR_IRQS, NR_IRQS);
-+      memset(irq_desc, 0, sizeof(irq_desc));
-+      set_except_vector(0, idtIRQ);
-+
-+      for (i = 0; i < RC32434_NR_IRQS; i++) {
-+              irq_desc[i].status = IRQ_DISABLED;
-+              irq_desc[i].action = NULL;
-+              irq_desc[i].depth = 1;
-+              irq_desc[i].handler = &aruba_irq_type;
-+              spin_lock_init(&irq_desc[i].lock);
-+      }
-+
-+      switch (mips_machtype) {
-+              case MACH_ARUBA_AP70:
-+                      break;
-+              case MACH_ARUBA_AP65:
-+              case MACH_ARUBA_AP60:
-+              default:
-+                      WRITE_MASK_MERLOT(intr_group_merlot[0].base_addr, 0);
-+                      *((volatile unsigned long *)0xbc003014) = 0x10;
-+                      break;
-+      }
-+}
-+
-+/* Main Interrupt dispatcher */
-+void aruba_irqdispatch(unsigned long cp0_cause, struct pt_regs *regs)
-+{
-+      unsigned int pend, group, ip;
-+      volatile unsigned int *addr;
-+      switch (mips_machtype) {
-+              case MACH_ARUBA_AP70:
-+                      if ((ip = (cp0_cause & 0x7c00))) {
-+                              group = 21 - rc32434_clz(ip);
-+              
-+                              addr = intr_group_muscat[group].base_addr;
-+              
-+                              pend = READ_PEND_MUSCAT(addr);
-+                              pend &= ~READ_MASK_MUSCAT(addr);        // only unmasked interrupts
-+                              pend = 39 - rc32434_clz(pend);
-+                              do_IRQ((group << 5) + pend, regs);
-+                      }
-+                      break;
-+              case MACH_ARUBA_AP65:
-+              case MACH_ARUBA_AP60:
-+              default:
-+                      #define MERLOT_WLAN1_IRQ   2    // bit 10 in CP0_status register
-+                      #define MERLOT_ENET_IRQ    4    // bit 11 in CP0_status register
-+                      #define MERLOT_WLAN_IRQ    5    // bit 13 in CP0_status register
-+                      #define MERLOT_MISC_IRQ    6    // bit 14 in CP0_status register = GROUP 0
-+      
-+                      if (cp0_cause & (1 << (8 + MERLOT_MISC_IRQ))) {
-+                              // Misc Interrupt
-+                              group = 0;
-+                              addr = intr_group_merlot[group].base_addr;
-+                              pend = READ_PEND_MERLOT(addr);
-+                              pend &= READ_MASK_MERLOT(addr); // only unmasked interrupts
-+                              /* handle one misc interrupt at a time */
-+                              while (pend) {
-+                                      unsigned int intr_bit, irq_nr;
-+                                      intr_bit = pend ^ (pend - 1);
-+                                      irq_nr = ((31 - rc32434_clz(pend)) + GROUP0_IRQ_BASE);
-+                                      do_IRQ(irq_nr, regs);
-+                                      do_IRQ(irq_nr, regs);
-+                                      pend &= ~intr_bit;
-+                              }
-+                      }
-+      
-+                      if (cp0_cause & (1 << (8 + MERLOT_WLAN_IRQ))) {
-+                              do_IRQ(MERLOT_WLAN_IRQ, regs);
-+                      }
-+      
-+                      if (cp0_cause & (1 << (8 + MERLOT_ENET_IRQ))) {
-+                              do_IRQ(MERLOT_ENET_IRQ, regs);
-+                      }
-+                      break;
-+      }
-+}
-diff -Nur linux-2.6.15/arch/mips/aruba/Makefile linux-2.6.15-openwrt/arch/mips/aruba/Makefile
---- linux-2.6.15/arch/mips/aruba/Makefile      1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.15-openwrt/arch/mips/aruba/Makefile      2006-01-10 00:32:32.000000000 +0100
+diff -Nur linux-2.6.17/arch/mips/aruba/Makefile linux-2.6.17-owrt/arch/mips/aruba/Makefile
+--- linux-2.6.17/arch/mips/aruba/Makefile      1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.17-owrt/arch/mips/aruba/Makefile 2006-06-18 12:44:28.000000000 +0200
 @@ -0,0 +1,49 @@
 +###############################################################################
 +#
@@ -565,15 +45,15 @@ diff -Nur linux-2.6.15/arch/mips/aruba/Makefile linux-2.6.15-openwrt/arch/mips/a
 +# .S.o:
 +#     $(CC) $(CFLAGS) -c $< -o $*.o
 +
-+obj-y  := prom.o setup.o idtIRQ.o irq.o time.o flash_lock.o wdt_merlot.o
++obj-y  := prom.o setup.o idtIRQ.o irq.o time.o flash_lock.o
 +obj-$(CONFIG_SERIAL_8250)             += serial.o
 +
 +subdir-y         += nvram
 +obj-y            += nvram/built-in.o
 +
-diff -Nur linux-2.6.15/arch/mips/aruba/nvram/Makefile linux-2.6.15-openwrt/arch/mips/aruba/nvram/Makefile
---- linux-2.6.15/arch/mips/aruba/nvram/Makefile        1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.15-openwrt/arch/mips/aruba/nvram/Makefile        2006-01-10 00:32:32.000000000 +0100
+diff -Nur linux-2.6.17/arch/mips/aruba/nvram/Makefile linux-2.6.17-owrt/arch/mips/aruba/nvram/Makefile
+--- linux-2.6.17/arch/mips/aruba/nvram/Makefile        1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.17-owrt/arch/mips/aruba/nvram/Makefile   2006-06-18 12:44:28.000000000 +0200
 @@ -0,0 +1,46 @@
 +###############################################################################
 +#
@@ -621,9 +101,9 @@ diff -Nur linux-2.6.15/arch/mips/aruba/nvram/Makefile linux-2.6.15-openwrt/arch/
 +
 +
 +
-diff -Nur linux-2.6.15/arch/mips/aruba/nvram/nvram434.c linux-2.6.15-openwrt/arch/mips/aruba/nvram/nvram434.c
---- linux-2.6.15/arch/mips/aruba/nvram/nvram434.c      1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.15-openwrt/arch/mips/aruba/nvram/nvram434.c      2006-01-10 00:32:32.000000000 +0100
+diff -Nur linux-2.6.17/arch/mips/aruba/nvram/nvram434.c linux-2.6.17-owrt/arch/mips/aruba/nvram/nvram434.c
+--- linux-2.6.17/arch/mips/aruba/nvram/nvram434.c      1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.17-owrt/arch/mips/aruba/nvram/nvram434.c 2006-06-18 12:44:28.000000000 +0200
 @@ -0,0 +1,392 @@
 +/**************************************************************************
 + *
@@ -1017,9 +497,9 @@ diff -Nur linux-2.6.15/arch/mips/aruba/nvram/nvram434.c linux-2.6.15-openwrt/arc
 +{
 +  nvram_mapenv(func);
 +}
-diff -Nur linux-2.6.15/arch/mips/aruba/nvram/nvram434.h linux-2.6.15-openwrt/arch/mips/aruba/nvram/nvram434.h
---- linux-2.6.15/arch/mips/aruba/nvram/nvram434.h      1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.15-openwrt/arch/mips/aruba/nvram/nvram434.h      2006-01-10 00:32:32.000000000 +0100
+diff -Nur linux-2.6.17/arch/mips/aruba/nvram/nvram434.h linux-2.6.17-owrt/arch/mips/aruba/nvram/nvram434.h
+--- linux-2.6.17/arch/mips/aruba/nvram/nvram434.h      1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.17-owrt/arch/mips/aruba/nvram/nvram434.h 2006-06-18 12:44:28.000000000 +0200
 @@ -0,0 +1,66 @@
 +/**************************************************************************
 + *
@@ -1087,9 +567,9 @@ diff -Nur linux-2.6.15/arch/mips/aruba/nvram/nvram434.h linux-2.6.15-openwrt/arc
 +#endif /* _NVRAM_ */
 +
 +
-diff -Nur linux-2.6.15/arch/mips/aruba/prom.c linux-2.6.15-openwrt/arch/mips/aruba/prom.c
---- linux-2.6.15/arch/mips/aruba/prom.c        1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.15-openwrt/arch/mips/aruba/prom.c        2006-01-10 00:32:32.000000000 +0100
+diff -Nur linux-2.6.17/arch/mips/aruba/prom.c linux-2.6.17-owrt/arch/mips/aruba/prom.c
+--- linux-2.6.17/arch/mips/aruba/prom.c        1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.17-owrt/arch/mips/aruba/prom.c   2006-06-18 12:44:28.000000000 +0200
 @@ -0,0 +1,111 @@
 +/**************************************************************************
 + *
@@ -1202,9 +682,9 @@ diff -Nur linux-2.6.15/arch/mips/aruba/prom.c linux-2.6.15-openwrt/arch/mips/aru
 +{
 +      printk("stubbed prom_free_prom_memory()\n");
 +}
-diff -Nur linux-2.6.15/arch/mips/aruba/serial.c linux-2.6.15-openwrt/arch/mips/aruba/serial.c
---- linux-2.6.15/arch/mips/aruba/serial.c      1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.15-openwrt/arch/mips/aruba/serial.c      2006-01-10 00:32:32.000000000 +0100
+diff -Nur linux-2.6.17/arch/mips/aruba/serial.c linux-2.6.17-owrt/arch/mips/aruba/serial.c
+--- linux-2.6.17/arch/mips/aruba/serial.c      1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.17-owrt/arch/mips/aruba/serial.c 2006-06-18 12:44:28.000000000 +0200
 @@ -0,0 +1,94 @@
 +/**************************************************************************
 + *
@@ -1300,10 +780,10 @@ diff -Nur linux-2.6.15/arch/mips/aruba/serial.c linux-2.6.15-openwrt/arch/mips/a
 +      
 +      return(0);
 +}
-diff -Nur linux-2.6.15/arch/mips/aruba/setup.c linux-2.6.15-openwrt/arch/mips/aruba/setup.c
---- linux-2.6.15/arch/mips/aruba/setup.c       1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.15-openwrt/arch/mips/aruba/setup.c       2006-01-10 00:32:32.000000000 +0100
-@@ -0,0 +1,124 @@
+diff -Nur linux-2.6.17/arch/mips/aruba/setup.c linux-2.6.17-owrt/arch/mips/aruba/setup.c
+--- linux-2.6.17/arch/mips/aruba/setup.c       1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.17-owrt/arch/mips/aruba/setup.c  2006-06-18 12:44:28.000000000 +0200
+@@ -0,0 +1,134 @@
 +/**************************************************************************
 + *
 + *  BRIEF MODULE DESCRIPTION
@@ -1343,6 +823,7 @@ diff -Nur linux-2.6.15/arch/mips/aruba/setup.c linux-2.6.15-openwrt/arch/mips/ar
 + */
 +
 +#include <linux/init.h>
++#include <linux/module.h>
 +#include <linux/mm.h>
 +#include <linux/sched.h>
 +#include <linux/irq.h>
@@ -1354,6 +835,7 @@ diff -Nur linux-2.6.15/arch/mips/aruba/setup.c linux-2.6.15-openwrt/arch/mips/ar
 +#include <asm/reboot.h>
 +#include <asm/addrspace.h>    /* for KSEG1ADDR() */
 +#include <asm/idt-boards/rc32434/rc32434.h>
++#include <linux/pm.h>
 +
 +extern char *__init prom_getcmdline(void);
 +
@@ -1391,7 +873,6 @@ diff -Nur linux-2.6.15/arch/mips/aruba/setup.c linux-2.6.15-openwrt/arch/mips/ar
 +
 +extern char * getenv(char *e);
 +extern void unlock_ap60_70_flash(void);
-+extern void wdt_merlot_disable(void);
 +
 +void __init plat_setup(void)
 +{
@@ -1401,7 +882,7 @@ diff -Nur linux-2.6.15/arch/mips/aruba/setup.c linux-2.6.15-openwrt/arch/mips/ar
 +
 +      _machine_restart = aruba_machine_restart;
 +      _machine_halt = aruba_machine_halt;
-+      _machine_power_off = aruba_machine_halt;
++      pm_power_off = aruba_machine_halt;
 +
 +      set_io_port_base(KSEG1);
 +
@@ -1414,8 +895,6 @@ diff -Nur linux-2.6.15/arch/mips/aruba/setup.c linux-2.6.15-openwrt/arch/mips/ar
 +
 +      printk("BOARD - %s\n",getenv("boardname"));
 +
-+      wdt_merlot_disable();
-+
 +      return 0;
 +}
 +
@@ -1426,14 +905,25 @@ diff -Nur linux-2.6.15/arch/mips/aruba/setup.c linux-2.6.15-openwrt/arch/mips/ar
 +
 +const char *get_system_type(void)
 +{
-+      return "MIPS IDT32434 - ARUBA";
-+}
-diff -Nur linux-2.6.15/arch/mips/aruba/time.c linux-2.6.15-openwrt/arch/mips/aruba/time.c
---- linux-2.6.15/arch/mips/aruba/time.c        1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.15-openwrt/arch/mips/aruba/time.c        2006-01-10 00:32:32.000000000 +0100
-@@ -0,0 +1,108 @@
-+/**************************************************************************
-+ *
++      switch (mips_machtype) {
++              case MACH_ARUBA_AP70:
++                      return "Aruba AP70";
++              case MACH_ARUBA_AP65:
++                      return "Aruba AP65";
++              case MACH_ARUBA_AP60:
++                      return "Aruba AP60/AP61";
++              default:
++                      return "Aruba UNKNOWN";
++      }
++}
++
++EXPORT_SYMBOL(get_system_type);
+diff -Nur linux-2.6.17/arch/mips/aruba/time.c linux-2.6.17-owrt/arch/mips/aruba/time.c
+--- linux-2.6.17/arch/mips/aruba/time.c        1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.17-owrt/arch/mips/aruba/time.c   2006-06-18 12:44:28.000000000 +0200
+@@ -0,0 +1,108 @@
++/**************************************************************************
++ *
 + *  BRIEF MODULE DESCRIPTION
 + *     timer routines for IDT EB434 boards
 + *
@@ -1510,835 +1000,98 @@ diff -Nur linux-2.6.15/arch/mips/aruba/time.c linux-2.6.15-openwrt/arch/mips/aru
 +
 +      printk("calculating r4koff... ");
 +      r4k_offset = cal_r4koff();
-+      printk("%08lx(%d)\n", r4k_offset, (int)r4k_offset);
-+
-+      est_freq = 2 * r4k_offset * HZ;
-+      est_freq += 5000;       /* round */
-+      est_freq -= est_freq % 10000;
-+      printk("CPU frequency %d.%02d MHz\n", est_freq / 1000000,
-+             (est_freq % 1000000) * 100 / 1000000);
-+      local_irq_restore(flags);
-+
-+}
-+
-+void __init aruba_timer_setup(struct irqaction *irq)
-+{
-+      /* we are using the cpu counter for timer interrupts */
-+      setup_irq(MIPS_CPU_TIMER_IRQ, irq);
-+
-+      /* to generate the first timer interrupt */
-+      r4k_cur = (read_c0_count() + r4k_offset);
-+      write_c0_compare(r4k_cur);
-+
-+}
-+
-+asmlinkage void aruba_timer_interrupt(int irq, struct pt_regs *regs)
-+{
-+      irq_enter();
-+      kstat_this_cpu.irqs[irq]++;
-+
-+      timer_interrupt(irq, NULL, regs);
-+      irq_exit();
-+}
-diff -Nur linux-2.6.15/arch/mips/aruba/wdt_merlot.c linux-2.6.15-openwrt/arch/mips/aruba/wdt_merlot.c
---- linux-2.6.15/arch/mips/aruba/wdt_merlot.c  1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.15-openwrt/arch/mips/aruba/wdt_merlot.c  2006-01-10 00:32:32.000000000 +0100
-@@ -0,0 +1,30 @@
-+#include <linux/config.h>
-+#include <linux/kernel.h>
-+#include <asm/bootinfo.h>
-+
-+void wdt_merlot_disable()
-+{
-+      volatile __u32 *wdt_errcs;
-+      volatile __u32 *wdt_wtc;
-+      volatile __u32 *wdt_ctl;
-+      volatile __u32 val;
-+
-+      switch (mips_machtype) {
-+              case MACH_ARUBA_AP70:
-+                      wdt_errcs = (__u32 *) 0xb8030030;
-+                      wdt_wtc = (__u32 *) 0xb803003c;
-+                      val = *wdt_errcs;
-+                      val &= ~0x201;
-+                      *wdt_errcs = val;
-+                      val = *wdt_wtc;
-+                      val &= ~0x1;
-+                      *wdt_wtc = val;
-+                      break;
-+              case MACH_ARUBA_AP65:
-+              case MACH_ARUBA_AP60:
-+              default:
-+                      wdt_ctl = (__u32 *) 0xbc003008;
-+                      *wdt_ctl = 0;
-+                      break;
-+      }
-+}
-diff -Nur linux-2.6.15/arch/mips/Kconfig linux-2.6.15-openwrt/arch/mips/Kconfig
---- linux-2.6.15/arch/mips/Kconfig     2006-01-03 04:21:10.000000000 +0100
-+++ linux-2.6.15-openwrt/arch/mips/Kconfig     2006-01-10 00:32:32.000000000 +0100
-@@ -227,6 +227,18 @@
-         either a NEC Vr5432 or QED RM5231. Say Y here if you wish to build
-         a kernel for this platform.
-+config MACH_ARUBA
-+      bool "Support for the ARUBA product line"
-+      select DMA_NONCOHERENT
-+      select IRQ_CPU
-+      select CPU_HAS_PREFETCH
-+      select HW_HAS_PCI
-+      select SWAP_IO_SPACE
-+      select SYS_SUPPORTS_32BIT_KERNEL
-+      select SYS_HAS_CPU_MIPS32_R1
-+      select SYS_SUPPORTS_BIG_ENDIAN
-+
-+
- config MACH_JAZZ
-       bool "Support for the Jazz family of machines"
-       select ARC
-diff -Nur linux-2.6.15/arch/mips/Makefile linux-2.6.15-openwrt/arch/mips/Makefile
---- linux-2.6.15/arch/mips/Makefile    2006-01-03 04:21:10.000000000 +0100
-+++ linux-2.6.15-openwrt/arch/mips/Makefile    2006-01-10 00:32:32.000000000 +0100
-@@ -258,6 +258,14 @@
- #
- #
-+# Aruba
-+#
-+
-+core-$(CONFIG_MACH_ARUBA)     += arch/mips/aruba/
-+cflags-$(CONFIG_MACH_ARUBA)   += -Iinclude/asm-mips/aruba
-+load-$(CONFIG_MACH_ARUBA)     += 0x80100000
-+
-+#
- # Acer PICA 61, Mips Magnum 4000 and Olivetti M700.
- #
- core-$(CONFIG_MACH_JAZZ)      += arch/mips/jazz/
-diff -Nur linux-2.6.15/arch/mips/mm/tlbex.c linux-2.6.15-openwrt/arch/mips/mm/tlbex.c
---- linux-2.6.15/arch/mips/mm/tlbex.c  2006-01-03 04:21:10.000000000 +0100
-+++ linux-2.6.15-openwrt/arch/mips/mm/tlbex.c  2006-01-10 00:32:32.000000000 +0100
-@@ -852,7 +852,6 @@
-       case CPU_R10000:
-       case CPU_R12000:
--      case CPU_4KC:
-       case CPU_SB1:
-       case CPU_SB1A:
-       case CPU_4KSC:
-@@ -880,6 +879,7 @@
-               tlbw(p);
-               break;
-+      case CPU_4KC:
-       case CPU_4KEC:
-       case CPU_24K:
-       case CPU_34K:
-diff -Nur linux-2.6.15/arch/mips/pci/fixup-aruba.c linux-2.6.15-openwrt/arch/mips/pci/fixup-aruba.c
---- linux-2.6.15/arch/mips/pci/fixup-aruba.c   1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.15-openwrt/arch/mips/pci/fixup-aruba.c   2006-01-10 00:34:41.000000000 +0100
-@@ -0,0 +1,115 @@
-+/**************************************************************************
-+ *
-+ *  BRIEF MODULE DESCRIPTION
-+ *     PCI fixups for IDT EB434 board
-+ *
-+ *  Copyright 2004 IDT Inc. (rischelp@idt.com)
-+ *         
-+ *  This program is free software; you can redistribute  it and/or modify it
-+ *  under  the terms of  the GNU General  Public License as published by the
-+ *  Free Software Foundation;  either version 2 of the  License, or (at your
-+ *  option) any later version.
-+ *
-+ *  THIS  SOFTWARE  IS PROVIDED   ``AS  IS'' AND   ANY  EXPRESS OR IMPLIED
-+ *  WARRANTIES,   INCLUDING, BUT NOT  LIMITED  TO, THE IMPLIED WARRANTIES OF
-+ *  MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN
-+ *  NO  EVENT  SHALL   THE AUTHOR  BE    LIABLE FOR ANY   DIRECT, INDIRECT,
-+ *  INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
-+ *  NOT LIMITED   TO, PROCUREMENT OF  SUBSTITUTE GOODS  OR SERVICES; LOSS OF
-+ *  USE, DATA,  OR PROFITS; OR  BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
-+ *  ANY THEORY OF LIABILITY, WHETHER IN  CONTRACT, STRICT LIABILITY, OR TORT
-+ *  (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
-+ *  THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-+ *
-+ *  You should have received a copy of the  GNU General Public License along
-+ *  with this program; if not, write  to the Free Software Foundation, Inc.,
-+ *  675 Mass Ave, Cambridge, MA 02139, USA.
-+ *
-+ *
-+ **************************************************************************
-+ * May 2004 rkt, neb
-+ *
-+ * Initial Release
-+ *
-+ * 
-+ *
-+ **************************************************************************
-+ */
-+
-+#include <linux/config.h>
-+#include <linux/types.h>
-+#include <linux/pci.h>
-+#include <linux/kernel.h>
-+#include <linux/init.h>
-+#include <asm/idt-boards/rc32434/rc32434.h>
-+#include <asm/idt-boards/rc32434/rc32434_pci.h> 
-+
-+int __init pcibios_map_irq(struct pci_dev *dev, u8 slot, u8 pin)
-+{
-+      
-+      if (dev->bus->number != 0) {
-+              return 0;
-+      }
-+      
-+      slot = PCI_SLOT(dev->devfn);
-+      dev->irq = 0;
-+      
-+      if (slot > 0 && slot <= 15) {
-+#if 1
-+              if(slot == 10) {
-+                      if(pin == 1) dev->irq = GROUP4_IRQ_BASE + 9; // intA
-+              } else if(slot == 11) {
-+                      if(pin == 1) dev->irq = GROUP4_IRQ_BASE + 10; // intA
-+                      if(pin == 2) dev->irq = GROUP4_IRQ_BASE + 10; // intA
-+                      if(pin == 3) dev->irq = GROUP4_IRQ_BASE + 10; // intA
-+              } else if(slot == 12) {
-+                      if(pin == 1) dev->irq = GROUP4_IRQ_BASE + 11; // intA
-+                      if(pin == 2) dev->irq = GROUP4_IRQ_BASE + 12; // intB
-+              } else if (slot == 13) {
-+                      if(pin == 1) dev->irq = GROUP4_IRQ_BASE + 12; // intA
-+                      if(pin == 2) dev->irq = GROUP4_IRQ_BASE + 11; // intB
-+              } else {
-+                      dev->irq = GROUP4_IRQ_BASE + 11;
-+              }
-+#else
-+                                switch (pin) {
-+                                case 1: /* INTA*/
-+                                        dev->irq = GROUP4_IRQ_BASE + 11;
-+                                        break;
-+                                case 2: /* INTB */
-+                                        dev->irq = GROUP4_IRQ_BASE + 11;
-+                                        break;
-+                                case 3: /* INTC */
-+                                        dev->irq = GROUP4_IRQ_BASE + 11;
-+                                        break;
-+                                case 4: /* INTD */
-+                                        dev->irq = GROUP4_IRQ_BASE + 11;
-+                                        break;
-+                                default:
-+                                        dev->irq = 0xff;
-+                                        break;
-+                                }
-+#endif
-+#ifdef DEBUG
-+              printk("irq fixup: slot %d, pin %d, irq %d\n",
-+                     slot, pin, dev->irq);
-+#endif
-+              pci_write_config_byte(dev, PCI_INTERRUPT_LINE,dev->irq);
-+      }
-+      return (dev->irq);
-+}
-+
-+struct pci_fixup pcibios_fixups[] = {
-+      {0}
-+};
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-diff -Nur linux-2.6.15/arch/mips/pci/Makefile linux-2.6.15-openwrt/arch/mips/pci/Makefile
---- linux-2.6.15/arch/mips/pci/Makefile        2006-01-03 04:21:10.000000000 +0100
-+++ linux-2.6.15-openwrt/arch/mips/pci/Makefile        2006-01-10 00:32:32.000000000 +0100
-@@ -56,3 +56,4 @@
- obj-$(CONFIG_TOSHIBA_RBTX4938)        += fixup-tx4938.o ops-tx4938.o
- obj-$(CONFIG_VICTOR_MPC30X)   += fixup-mpc30x.o
- obj-$(CONFIG_ZAO_CAPCELLA)    += fixup-capcella.o
-+obj-$(CONFIG_MACH_ARUBA)        += fixup-aruba.o ops-aruba.o pci-aruba.o
-diff -Nur linux-2.6.15/arch/mips/pci/ops-aruba.c linux-2.6.15-openwrt/arch/mips/pci/ops-aruba.c
---- linux-2.6.15/arch/mips/pci/ops-aruba.c     1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.15-openwrt/arch/mips/pci/ops-aruba.c     2006-01-10 00:32:32.000000000 +0100
-@@ -0,0 +1,204 @@
-+/**************************************************************************
-+ *
-+ *  BRIEF MODULE DESCRIPTION
-+ *     pci_ops for IDT EB434 board
-+ *
-+ *  Copyright 2004 IDT Inc. (rischelp@idt.com)
-+ *         
-+ *  This program is free software; you can redistribute  it and/or modify it
-+ *  under  the terms of  the GNU General  Public License as published by the
-+ *  Free Software Foundation;  either version 2 of the  License, or (at your
-+ *  option) any later version.
-+ *
-+ *  THIS  SOFTWARE  IS PROVIDED   ``AS  IS'' AND   ANY  EXPRESS OR IMPLIED
-+ *  WARRANTIES,   INCLUDING, BUT NOT  LIMITED  TO, THE IMPLIED WARRANTIES OF
-+ *  MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN
-+ *  NO  EVENT  SHALL   THE AUTHOR  BE    LIABLE FOR ANY   DIRECT, INDIRECT,
-+ *  INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
-+ *  NOT LIMITED   TO, PROCUREMENT OF  SUBSTITUTE GOODS  OR SERVICES; LOSS OF
-+ *  USE, DATA,  OR PROFITS; OR  BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
-+ *  ANY THEORY OF LIABILITY, WHETHER IN  CONTRACT, STRICT LIABILITY, OR TORT
-+ *  (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
-+ *  THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-+ *
-+ *  You should have received a copy of the  GNU General Public License along
-+ *  with this program; if not, write  to the Free Software Foundation, Inc.,
-+ *  675 Mass Ave, Cambridge, MA 02139, USA.
-+ *
-+ *
-+ **************************************************************************
-+ * May 2004 rkt, neb
-+ *
-+ * Initial Release
-+ *
-+ * 
-+ *
-+ **************************************************************************
-+ */
-+
-+#include <linux/config.h>
-+#include <linux/init.h>
-+#include <linux/pci.h>
-+#include <linux/types.h>
-+#include <linux/delay.h>
-+
-+#include <asm/cpu.h>
-+#include <asm/io.h>
-+
-+#include <asm/idt-boards/rc32434/rc32434.h>
-+#include <asm/idt-boards/rc32434/rc32434_pci.h>
-+
-+#define PCI_ACCESS_READ  0
-+#define PCI_ACCESS_WRITE 1
-+
-+
-+#define PCI_CFG_SET(slot,func,off) \
-+      (rc32434_pci->pcicfga = (0x80000000 | ((slot)<<11) | \
-+                          ((func)<<8) | (off)))
-+
-+static int config_access(unsigned char access_type, struct pci_bus *bus,
-+                         unsigned int devfn, unsigned char where,
-+                         u32 * data)
-+{ 
-+      /*
-+       * config cycles are on 4 byte boundary only
-+       */
-+      unsigned int slot = PCI_SLOT(devfn);
-+      u8 func = PCI_FUNC(devfn);
-+      
-+      if (slot < 2 || slot > 15) {
-+              *data = 0xFFFFFFFF;
-+              return -1;
-+      }
-+      /* Setup address */
-+      PCI_CFG_SET(slot, func, where);
-+      rc32434_sync();
-+      
-+      if (access_type == PCI_ACCESS_WRITE) {
-+              rc32434_sync(); 
-+              rc32434_pci->pcicfgd = *data;
-+      } else {
-+              rc32434_sync(); 
-+              *data = rc32434_pci->pcicfgd;
-+      }
-+      
-+      rc32434_sync();
-+      
-+      return 0;
-+}
-+
-+
-+/*
-+ * We can't address 8 and 16 bit words directly.  Instead we have to
-+ * read/write a 32bit word and mask/modify the data we actually want.
-+ */
-+static int read_config_byte(struct pci_bus *bus, unsigned int devfn,
-+                            int where, u8 * val)
-+{
-+      u32 data;
-+      int ret;
-+      
-+      ret = config_access(PCI_ACCESS_READ, bus, devfn, where, &data);
-+      *val = (data >> ((where & 3) << 3)) & 0xff;
-+      return ret;
-+}
-+
-+static int read_config_word(struct pci_bus *bus, unsigned int devfn,
-+                            int where, u16 * val)
-+{
-+      u32 data;
-+      int ret;
-+      
-+      ret = config_access(PCI_ACCESS_READ, bus, devfn, where, &data);
-+      *val = (data >> ((where & 3) << 3)) & 0xffff;
-+      return ret;
-+}
-+
-+static int read_config_dword(struct pci_bus *bus, unsigned int devfn,
-+                             int where, u32 * val)
-+{
-+      int ret;
-+      
-+      ret = config_access(PCI_ACCESS_READ, bus, devfn, where, val);
-+      return ret;
-+}
-+
-+static int
-+write_config_byte(struct pci_bus *bus, unsigned int devfn, int where,
-+                  u8 val)
-+{
-+      u32 data = 0;
-+      
-+      if (config_access(PCI_ACCESS_READ, bus, devfn, where, &data))
-+              return -1;
-+      
-+      data = (data & ~(0xff << ((where & 3) << 3))) |
-+              (val << ((where & 3) << 3));
-+      
-+      if (config_access(PCI_ACCESS_WRITE, bus, devfn, where, &data))
-+              return -1;
-+      
-+      return PCIBIOS_SUCCESSFUL;
-+}
-+
-+
-+static int
-+write_config_word(struct pci_bus *bus, unsigned int devfn, int where,
-+                  u16 val)
-+{
-+      u32 data = 0;
-+      
-+      if (config_access(PCI_ACCESS_READ, bus, devfn, where, &data))
-+              return -1;
-+      
-+      data = (data & ~(0xffff << ((where & 3) << 3))) |
-+              (val << ((where & 3) << 3));
-+      
-+      if (config_access(PCI_ACCESS_WRITE, bus, devfn, where, &data))
-+              return -1;
-+      
-+      
-+      return PCIBIOS_SUCCESSFUL;
-+}
-+
-+
-+static int 
-+write_config_dword(struct pci_bus *bus, unsigned int devfn, int where,
-+                   u32 val)
-+{
-+      if (config_access(PCI_ACCESS_WRITE, bus, devfn, where, &val))
-+              return -1;
-+      
-+      return PCIBIOS_SUCCESSFUL;
-+}
-+
-+static int pci_config_read(struct pci_bus *bus, unsigned int devfn,
-+                         int where, int size, u32 * val)
-+{
-+      switch (size) {
-+      case 1: 
-+              return read_config_byte(bus, devfn, where, (u8 *) val);
-+      case 2: 
-+              return read_config_word(bus, devfn, where, (u16 *) val);
-+      default:
-+              return read_config_dword(bus, devfn, where, val);
-+      }
-+}
-+
-+static int pci_config_write(struct pci_bus *bus, unsigned int devfn,
-+                          int where, int size, u32 val)
-+{
-+      switch (size) {
-+      case 1: 
-+              return write_config_byte(bus, devfn, where, (u8) val);
-+      case 2: 
-+              return write_config_word(bus, devfn, where, (u16) val);
-+      default:
-+              return write_config_dword(bus, devfn, where, val);
-+      }
-+}
-+
-+struct pci_ops rc32434_pci_ops = {
-+      .read =  pci_config_read,
-+      .write = pci_config_write,
-+};
-diff -Nur linux-2.6.15/arch/mips/pci/pci-aruba.c linux-2.6.15-openwrt/arch/mips/pci/pci-aruba.c
---- linux-2.6.15/arch/mips/pci/pci-aruba.c     1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.15-openwrt/arch/mips/pci/pci-aruba.c     2006-01-10 00:32:32.000000000 +0100
-@@ -0,0 +1,235 @@
-+/**************************************************************************
-+ *
-+ *  BRIEF MODULE DESCRIPTION
-+ *     PCI initialization for IDT EB434 board
-+ *
-+ *  Copyright 2004 IDT Inc. (rischelp@idt.com)
-+ *         
-+ *  This program is free software; you can redistribute  it and/or modify it
-+ *  under  the terms of  the GNU General  Public License as published by the
-+ *  Free Software Foundation;  either version 2 of the  License, or (at your
-+ *  option) any later version.
-+ *
-+ *  THIS  SOFTWARE  IS PROVIDED   ``AS  IS'' AND   ANY  EXPRESS OR IMPLIED
-+ *  WARRANTIES,   INCLUDING, BUT NOT  LIMITED  TO, THE IMPLIED WARRANTIES OF
-+ *  MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN
-+ *  NO  EVENT  SHALL   THE AUTHOR  BE    LIABLE FOR ANY   DIRECT, INDIRECT,
-+ *  INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
-+ *  NOT LIMITED   TO, PROCUREMENT OF  SUBSTITUTE GOODS  OR SERVICES; LOSS OF
-+ *  USE, DATA,  OR PROFITS; OR  BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
-+ *  ANY THEORY OF LIABILITY, WHETHER IN  CONTRACT, STRICT LIABILITY, OR TORT
-+ *  (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
-+ *  THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-+ *
-+ *  You should have received a copy of the  GNU General Public License along
-+ *  with this program; if not, write  to the Free Software Foundation, Inc.,
-+ *  675 Mass Ave, Cambridge, MA 02139, USA.
-+ *
-+ *
-+ **************************************************************************
-+ * May 2004 rkt, neb
-+ *
-+ * Initial Release
-+ *
-+ * 
-+ *
-+ **************************************************************************
-+ */
-+
-+#include <linux/config.h>
-+#include <linux/types.h>
-+#include <linux/pci.h>
-+#include <linux/kernel.h>
-+#include <linux/init.h>
-+#include <asm/idt-boards/rc32434/rc32434.h>
-+#include <asm/idt-boards/rc32434/rc32434_pci.h> 
-+
-+#define PCI_ACCESS_READ  0
-+#define PCI_ACCESS_WRITE 1
-+
-+#undef DEBUG
-+#ifdef DEBUG
-+#define DBG(x...) printk(x)
-+#else
-+#define DBG(x...)
-+#endif
-+/* define an unsigned array for the PCI registers */
-+unsigned int korinaCnfgRegs[25] = {
-+      KORINA_CNFG1,    KORINA_CNFG2,  KORINA_CNFG3,  KORINA_CNFG4,
-+      KORINA_CNFG5,    KORINA_CNFG6,  KORINA_CNFG7,  KORINA_CNFG8,
-+      KORINA_CNFG9,    KORINA_CNFG10, KORINA_CNFG11, KORINA_CNFG12,
-+      KORINA_CNFG13, KORINA_CNFG14, KORINA_CNFG15, KORINA_CNFG16,
-+      KORINA_CNFG17, KORINA_CNFG18, KORINA_CNFG19, KORINA_CNFG20,
-+      KORINA_CNFG21, KORINA_CNFG22, KORINA_CNFG23, KORINA_CNFG24
-+};
-+
-+static struct resource rc32434_res_pci_mem2;
-+
-+static struct resource rc32434_res_pci_mem1 = {
-+      .name = "PCI MEM1",
-+      .start = 0x50000000,
-+      .end = 0x5FFFFFFF,
-+      .flags = IORESOURCE_MEM,
-+      .child = &rc32434_res_pci_mem2,
-+};
-+static struct resource rc32434_res_pci_mem2 = {
-+      .name = "PCI MEM2",
-+      .start = 0x60000000,
-+      .end = 0x6FFFFFFF,
-+      .flags = IORESOURCE_MEM,
-+      .parent = &rc32434_res_pci_mem1,
-+};
-+static struct resource rc32434_res_pci_io1 = {
-+      .name = "PCI I/O1",
-+      .start = 0x18800000,
-+      .end = 0x188FFFFF,
-+      .flags = IORESOURCE_IO,
-+};
-+
-+extern struct pci_ops rc32434_pci_ops;
-+
-+struct pci_controller rc32434_controller = {
-+      .pci_ops = &rc32434_pci_ops,
-+      .mem_resource = &rc32434_res_pci_mem1,
-+      .io_resource = &rc32434_res_pci_io1,
-+      .mem_offset     = 0x00000000UL,
-+      .io_offset      = 0x00000000UL,
-+};
-+
-+extern unsigned int arch_has_pci;
-+
-+static int __init rc32434_pcibridge_init(void)
-+{
-+      
-+      unsigned int pciConfigAddr = 0;/*used for writing pci config values */
-+      int          loopCount=0    ;/*used for the loop */
-+      
-+      unsigned int pcicValue, pcicData=0;
-+      unsigned int dummyRead, pciCntlVal = 0;
-+
-+      if (!arch_has_pci) return 0;
-+
-+      printk("PCI: Initializing PCI\n");
-+      
-+      /* Disable the IP bus error for PCI scaning */
-+      pciCntlVal=rc32434_pci->pcic;
-+      pciCntlVal &= 0xFFFFFF7;
-+      rc32434_pci->pcic = pciCntlVal;
-+      
-+      ioport_resource.start = rc32434_res_pci_io1.start;
-+      ioport_resource.end = rc32434_res_pci_io1.end;
-+/*
-+      iomem_resource.start = rc32434_res_pci_mem1.start;
-+      iomem_resource.end = rc32434_res_pci_mem1.end;
-+*/
-+      
-+      pcicValue = rc32434_pci->pcic;
-+      pcicValue = (pcicValue >> PCIM_SHFT) & PCIM_BIT_LEN;
-+      if (!((pcicValue == PCIM_H_EA) ||
-+            (pcicValue == PCIM_H_IA_FIX) ||
-+            (pcicValue == PCIM_H_IA_RR))) {
-+              /* Not in Host Mode, return ERROR */
-+              return -1;
-+      }
-+      
-+      /* Enables the Idle Grant mode, Arbiter Parking */
-+      pcicData |=(PCIC_igm_m|PCIC_eap_m|PCIC_en_m);
-+      rc32434_pci->pcic = pcicData; /* Enable the PCI bus Interface */
-+      /* Zero out the PCI status & PCI Status Mask */
-+      for(;;) {
-+              pcicData = rc32434_pci->pcis;
-+              if (!(pcicData & PCIS_rip_m))
-+                      break;
-+      }
-+      
-+      rc32434_pci->pcis = 0;
-+      rc32434_pci->pcism = 0xFFFFFFFF;
-+      /* Zero out the PCI decoupled registers */
-+      rc32434_pci->pcidac=0; /* disable PCI decoupled accesses at initialization */
-+      rc32434_pci->pcidas=0; /* clear the status */
-+      rc32434_pci->pcidasm=0x0000007F; /* Mask all the interrupts */
-+      /* Mask PCI Messaging Interrupts */
-+      rc32434_pci_msg->pciiic = 0;
-+      rc32434_pci_msg->pciiim = 0xFFFFFFFF;
-+      rc32434_pci_msg->pciioic = 0;
-+      rc32434_pci_msg->pciioim = 0;
-+      
-+      /* Setup PCILB0 as Memory Window */
-+      rc32434_pci->pcilba[0].a = (unsigned int) (PCI_ADDR_START);
-+      
-+      /* setup the PCI map address as same as the local address */
-+      
-+      rc32434_pci->pcilba[0].m = (unsigned int) (PCI_ADDR_START);
-+      
-+      /* Setup PCILBA1 as MEM */
-+#ifdef __MIPSEB__
-+      rc32434_pci->pcilba[0].c = ( ((SIZE_16MB & 0x1f) << PCILBAC_size_b) | PCILBAC_sb_m);
-+#else
-+      rc32434_pci->pcilba[0].c = ( ((SIZE_16MB & 0x1f) << PCILBAC_size_b));
-+#endif
-+      dummyRead = rc32434_pci->pcilba[0].c; /* flush the CPU write Buffers */
-+      
-+      rc32434_pci->pcilba[1].a = 0x60000000;
-+      
-+      rc32434_pci->pcilba[1].m = 0x60000000;
-+      /* setup PCILBA2 as IO Window*/
-+#ifdef __MIPSEB__
-+      rc32434_pci->pcilba[1].c = ( ((SIZE_256MB & 0x1f) << PCILBAC_size_b) |  PCILBAC_sb_m);
-+#else
-+      rc32434_pci->pcilba[1].c = ((SIZE_256MB & 0x1f) << PCILBAC_size_b);
-+#endif
-+      dummyRead = rc32434_pci->pcilba[1].c; /* flush the CPU write Buffers */
-+      rc32434_pci->pcilba[2].a = 0x18C00000;
-+      
-+      rc32434_pci->pcilba[2].m = 0x18FFFFFF;
-+      /* setup PCILBA2 as IO Window*/
-+#ifdef __MIPSEB__
-+      rc32434_pci->pcilba[2].c = ( ((SIZE_4MB & 0x1f) << PCILBAC_size_b)  |  PCILBAC_sb_m);
-+#else
-+      rc32434_pci->pcilba[2].c = ((SIZE_4MB & 0x1f) << PCILBAC_size_b);
-+#endif  
-+      
-+      dummyRead = rc32434_pci->pcilba[2].c; /* flush the CPU write Buffers */
-+      
-+      
-+      rc32434_pci->pcilba[3].a = 0x18800000;
-+      
-+      rc32434_pci->pcilba[3].m = 0x18800000;
-+      /* Setup PCILBA3 as IO Window */
-+      
-+#ifdef __MIPSEB__
-+      rc32434_pci->pcilba[3].c = ( (((SIZE_1MB & 0x1ff) << PCILBAC_size_b) | PCILBAC_msi_m)   |  PCILBAC_sb_m);
-+#else
-+      rc32434_pci->pcilba[3].c = (((SIZE_1MB & 0x1ff) << PCILBAC_size_b) | PCILBAC_msi_m);
-+#endif
-+      dummyRead = rc32434_pci->pcilba[2].c; /* flush the CPU write Buffers */
-+      
-+      pciConfigAddr = (unsigned int)(0x80000004);
-+      for(loopCount = 0; loopCount < 24; loopCount++){
-+              rc32434_pci->pcicfga = pciConfigAddr;
-+              dummyRead = rc32434_pci->pcicfga;
-+              rc32434_pci->pcicfgd = korinaCnfgRegs[loopCount];
-+              dummyRead=rc32434_pci->pcicfgd;
-+              pciConfigAddr += 4;
-+      }
-+      rc32434_pci->pcitc=(unsigned int)((PCITC_RTIMER_VAL&0xff) << PCITC_rtimer_b) |
-+              ((PCITC_DTIMER_VAL&0xff)<<PCITC_dtimer_b);
-+      
-+      pciCntlVal = rc32434_pci->pcic;
-+      pciCntlVal &= ~(PCIC_tnr_m);
-+      rc32434_pci->pcic = pciCntlVal;
-+      pciCntlVal = rc32434_pci->pcic;
-+      
-+      register_pci_controller(&rc32434_controller);
-+      
-+      rc32434_sync();  
-+      return 0;
-+}
++      printk("%08lx(%d)\n", r4k_offset, (int)r4k_offset);
 +
-+arch_initcall(rc32434_pcibridge_init);
++      est_freq = 2 * r4k_offset * HZ;
++      est_freq += 5000;       /* round */
++      est_freq -= est_freq % 10000;
++      printk("CPU frequency %d.%02d MHz\n", est_freq / 1000000,
++             (est_freq % 1000000) * 100 / 1000000);
++      local_irq_restore(flags);
 +
-+/* Do platform specific device initialization at pci_enable_device() time */
-+int pcibios_plat_dev_init(struct pci_dev *dev)
-+{
-+        return 0;
 +}
-diff -Nur linux-2.6.15/drivers/mtd/chips/cfi_probe.c linux-2.6.15-openwrt/drivers/mtd/chips/cfi_probe.c
---- linux-2.6.15/drivers/mtd/chips/cfi_probe.c 2006-01-03 04:21:10.000000000 +0100
-+++ linux-2.6.15-openwrt/drivers/mtd/chips/cfi_probe.c 2006-01-10 00:32:32.000000000 +0100
-@@ -26,6 +26,74 @@
- static void print_cfi_ident(struct cfi_ident *);
- #endif
-+#if 1
-+
-+#define AMD_AUTOSEL_OFF1      0xAAA
-+#define AMD_AUTOSEL_OFF2      0x555
-+#define AMD_MANUF_ID          0x1
-+#define AMD_DEVICE_ID1                0xF6 /* T */
-+#define AMD_DEVICE_ID2                0xF9 /* B */
-+/* Foll. are definitions for Macronix Flash Part */
-+#define MCX_MANUF_ID          0xC2
-+#define MCX_DEVICE_ID1                0xA7
-+#define MCX_DEVICE_ID2                0xA8
-+/* Foll. common to both AMD and Macronix */
-+#define FACTORY_LOCKED                0x99
-+#define USER_LOCKED           0x19
-+
-+/* NOTE: AP-70/6x use BYTE mode flash access. Therefore the
-+ * lowest Addr. pin in the flash is not A0 but A-1 (A minus 1).
-+ * CPU's A0 is tied to Flash's A-1, A1 to A0 and so on. This
-+ * gives 4MB of byte-addressable mem. In byte mode, all addr
-+ * need to be multiplied by 2 (i.e compared to word mode).
-+ * NOTE: AMD_AUTOSEL_OFF1 and OFF2 are already mult. by 2
-+ * Just blindly use the addr offsets suggested in the manual
-+ * for byte mode and you'll be OK. Offs. in Table 6 need to
-+ * be mult by 2 (for getting autosel params)
-+ */
-+void
-+flash_detect(struct map_info *map, __u32 base, struct cfi_private *cfi)
++
++void __init aruba_timer_setup(struct irqaction *irq)
 +{
-+      map_word val[3];
-+      int osf = cfi->interleave * cfi->device_type; // =2 for AP70/6x
-+      char *manuf, *part, *lock ;
++      /* we are using the cpu counter for timer interrupts */
++      setup_irq(MIPS_CPU_TIMER_IRQ, irq);
 +
-+      if (osf != 1) return ;
++      /* to generate the first timer interrupt */
++      r4k_cur = (read_c0_count() + r4k_offset);
++      write_c0_compare(r4k_cur);
 +
-+      cfi_send_gen_cmd(0xAA, AMD_AUTOSEL_OFF1, base, map, cfi, cfi->device_type, NULL);
-+      cfi_send_gen_cmd(0x55, AMD_AUTOSEL_OFF2, base, map, cfi, cfi->device_type, NULL);
-+      cfi_send_gen_cmd(0x90, AMD_AUTOSEL_OFF1, base, map, cfi, cfi->device_type, NULL);
-+      val[0] = map_read(map, base) ; // manuf ID
-+      val[1] = map_read(map, base+2) ; // device ID
-+      val[2] = map_read(map, base+6) ; // lock indicator
-+#if 0
-+printk("v1=0x%x v2=0x%x v3=0x%x\n", val[0], val[1], val[2]) ;
-+#endif
-+      if (val[0].x[0] == AMD_MANUF_ID) {
-+              manuf = "AMD Flash" ;
-+              if (val[1].x[0] == AMD_DEVICE_ID1)
-+                      part = "AM29LV320D (Top)" ;
-+              else if (val[1].x[0] == AMD_DEVICE_ID2)
-+                      part = "AM29LV320D (Bot)" ;
-+              else part = "Unknown" ;
-+      } else if (val[0].x[0] == MCX_MANUF_ID) {
-+              manuf = "Macronix Flash" ;
-+              if (val[1].x[0] == MCX_DEVICE_ID1)
-+                      part = "MX29LV320A (Top)" ;
-+              else if (val[1].x[0] == MCX_DEVICE_ID2)
-+                      part = "MX29LV320A (Bot)" ;
-+              else part = "Unknown" ;
-+      } else
-+              return ;
-+      if (val[2].x[0] == FACTORY_LOCKED)
-+              lock = "Factory Locked" ;
-+      else if (val[2].x[0] == USER_LOCKED)
-+              lock = "User Locked" ;
-+      else lock = "Unknown locking" ;
-+      printk("%s %s (%s)\n", manuf, part, lock) ;
 +}
-+#endif
 +
- static int cfi_probe_chip(struct map_info *map, __u32 base,
-                         unsigned long *chip_map, struct cfi_private *cfi);
- static int cfi_chip_setup(struct map_info *map, struct cfi_private *cfi);
-@@ -118,6 +186,10 @@
-       }
-       xip_disable();
-+#if 1
-+      //cfi_send_gen_cmd(0xF0, 0, base, map, cfi, cfi->device_type, NULL);
-+      flash_detect(map, base, cfi) ;
-+#endif
-       cfi_send_gen_cmd(0xF0, 0, base, map, cfi, cfi->device_type, NULL);
-       cfi_send_gen_cmd(0xFF, 0, base, map, cfi, cfi->device_type, NULL);
-       cfi_send_gen_cmd(0x98, 0x55, base, map, cfi, cfi->device_type, NULL);
-diff -Nur linux-2.6.15/drivers/mtd/maps/physmap.c linux-2.6.15-openwrt/drivers/mtd/maps/physmap.c
---- linux-2.6.15/drivers/mtd/maps/physmap.c    2006-01-03 04:21:10.000000000 +0100
-+++ linux-2.6.15-openwrt/drivers/mtd/maps/physmap.c    2006-01-10 00:32:32.000000000 +0100
-@@ -34,15 +34,31 @@
- static struct mtd_partition *mtd_parts;
- static int                   mtd_parts_nb;
--static int num_physmap_partitions;
--static struct mtd_partition *physmap_partitions;
-+static int num_physmap_partitions = 3;
-+static struct mtd_partition physmap_partitions[] = {
-+      {
-+                name:           "zImage",
-+                size:           0x3f0000-0x80000,
-+                offset:         0x80000,
-+        },
-+      {
-+                name:           "JFFS2",
-+                size:           0x3f0000-0x120000,
-+                offset:         0x120000,
-+      },
-+      {
-+              name:           "NVRAM",
-+              size:           0x2000,
-+              offset:         0x3f8000,
-+      }
-+};
++asmlinkage void aruba_timer_interrupt(int irq, struct pt_regs *regs)
++{
++      irq_enter();
++      kstat_this_cpu.irqs[irq]++;
++
++      timer_interrupt(irq, NULL, regs);
++      irq_exit();
++}
+diff -Nur linux-2.6.17/arch/mips/Kconfig linux-2.6.17-owrt/arch/mips/Kconfig
+--- linux-2.6.17/arch/mips/Kconfig     2006-06-18 03:49:35.000000000 +0200
++++ linux-2.6.17-owrt/arch/mips/Kconfig        2006-06-18 12:44:28.000000000 +0200
+@@ -227,6 +227,17 @@
+         either a NEC Vr5432 or QED RM5231. Say Y here if you wish to build
+         a kernel for this platform.
  
- static const char *part_probes[] __initdata = {"cmdlinepart", "RedBoot", NULL};
++config MACH_ARUBA
++      bool "Support for the ARUBA product line"
++      select DMA_NONCOHERENT
++      select CPU_HAS_PREFETCH
++      select HW_HAS_PCI
++      select SWAP_IO_SPACE
++      select SYS_SUPPORTS_32BIT_KERNEL
++      select SYS_HAS_CPU_MIPS32_R1
++      select SYS_SUPPORTS_BIG_ENDIAN
++
++
+ config MACH_JAZZ
+       bool "Jazz family of machines"
+       select ARC
+diff -Nur linux-2.6.17/arch/mips/Makefile linux-2.6.17-owrt/arch/mips/Makefile
+--- linux-2.6.17/arch/mips/Makefile    2006-06-18 03:49:35.000000000 +0200
++++ linux-2.6.17-owrt/arch/mips/Makefile       2006-06-18 12:44:28.000000000 +0200
+@@ -145,6 +145,14 @@
+ #
  
- void physmap_set_partitions(struct mtd_partition *parts, int num_parts)
- {
--      physmap_partitions=parts;
--      num_physmap_partitions=num_parts;
-+//    physmap_partitions=parts;
-+//    num_physmap_partitions=num_parts;
- }
- #endif /* CONFIG_MTD_PARTITIONS */
+ #
++# Aruba
++#
++
++core-$(CONFIG_MACH_ARUBA)     += arch/mips/aruba/
++cflags-$(CONFIG_MACH_ARUBA)   += -Iinclude/asm-mips/aruba
++load-$(CONFIG_MACH_ARUBA)     += 0x80100000
++
++#
+ # Acer PICA 61, Mips Magnum 4000 and Olivetti M700.
+ #
+ core-$(CONFIG_MACH_JAZZ)      += arch/mips/jazz/
+diff -Nur linux-2.6.17/arch/mips/mm/tlbex.c linux-2.6.17-owrt/arch/mips/mm/tlbex.c
+--- linux-2.6.17/arch/mips/mm/tlbex.c  2006-06-18 03:49:35.000000000 +0200
++++ linux-2.6.17-owrt/arch/mips/mm/tlbex.c     2006-06-18 12:48:27.000000000 +0200
+@@ -876,7 +876,6 @@
+       case CPU_R10000:
+       case CPU_R12000:
+       case CPU_R14000:
+-      case CPU_4KC:
+       case CPU_SB1:
+       case CPU_SB1A:
+       case CPU_4KSC:
+@@ -904,6 +903,7 @@
+               tlbw(p);
+               break;
  
-diff -Nur linux-2.6.15/drivers/net/Kconfig linux-2.6.15-openwrt/drivers/net/Kconfig
---- linux-2.6.15/drivers/net/Kconfig   2006-01-03 04:21:10.000000000 +0100
-+++ linux-2.6.15-openwrt/drivers/net/Kconfig   2006-01-10 00:32:32.000000000 +0100
-@@ -176,6 +176,13 @@
++      case CPU_4KC:
+       case CPU_4KEC:
+       case CPU_24K:
+       case CPU_34K:
+diff -Nur linux-2.6.17/drivers/net/Kconfig linux-2.6.17-owrt/drivers/net/Kconfig
+--- linux-2.6.17/drivers/net/Kconfig   2006-06-18 03:49:35.000000000 +0200
++++ linux-2.6.17-owrt/drivers/net/Kconfig      2006-06-18 12:44:28.000000000 +0200
+@@ -187,6 +187,13 @@
  
  source "drivers/net/arm/Kconfig"
  
@@ -2352,21 +1105,102 @@ diff -Nur linux-2.6.15/drivers/net/Kconfig linux-2.6.15-openwrt/drivers/net/Kcon
  config MACE
        tristate "MACE (Power Mac ethernet) support"
        depends on NET_ETHERNET && PPC_PMAC && PPC32
-diff -Nur linux-2.6.15/drivers/net/Makefile linux-2.6.15-openwrt/drivers/net/Makefile
---- linux-2.6.15/drivers/net/Makefile  2006-01-03 04:21:10.000000000 +0100
-+++ linux-2.6.15-openwrt/drivers/net/Makefile  2006-01-10 00:32:33.000000000 +0100
-@@ -190,6 +190,7 @@
- obj-$(CONFIG_SMC91X) += smc91x.o
- obj-$(CONFIG_DM9000) += dm9000.o
- obj-$(CONFIG_FEC_8XX) += fec_8xx/
+diff -Nur linux-2.6.17/drivers/net/Makefile linux-2.6.17-owrt/drivers/net/Makefile
+--- linux-2.6.17/drivers/net/Makefile  2006-06-18 03:49:35.000000000 +0200
++++ linux-2.6.17-owrt/drivers/net/Makefile     2006-06-18 12:44:28.000000000 +0200
+@@ -38,6 +38,7 @@
+ obj-$(CONFIG_OAKNET) += oaknet.o 8390.o
 +obj-$(CONFIG_IDT_RC32434_ETH) += rc32434_eth.o
+ obj-$(CONFIG_DGRS) += dgrs.o
+ obj-$(CONFIG_VORTEX) += 3c59x.o
+ obj-$(CONFIG_TYPHOON) += typhoon.o
+diff -Nur linux-2.6.17/drivers/net/natsemi.c linux-2.6.17-owrt/drivers/net/natsemi.c
+--- linux-2.6.17/drivers/net/natsemi.c 2006-06-18 03:49:35.000000000 +0200
++++ linux-2.6.17-owrt/drivers/net/natsemi.c    2006-06-18 12:44:28.000000000 +0200
+@@ -771,6 +771,49 @@
+ static int netdev_get_eeprom(struct net_device *dev, u8 *buf);
+ static struct ethtool_ops ethtool_ops;
++#ifdef CONFIG_MACH_ARUBA
++
++#include <linux/ctype.h>
++
++#ifndef ERR
++#define ERR(fmt, args...) printk("%s: " fmt, __func__, ##args)
++#endif
++
++static int parse_mac_addr(struct net_device *dev, char* macstr)
++{
++        int i, j;
++        unsigned char result, value;
++
++        for (i=0; i<6; i++) {
++                result = 0;
++                if (i != 5 && *(macstr+2) != ':') {
++                        ERR("invalid mac address format: %d %c\n",
++                            i, *(macstr+2));
++                        return -EINVAL;
++                }
++                for (j=0; j<2; j++) {
++                        if (isxdigit(*macstr) && (value = isdigit(*macstr) ? *macstr-'0' :
++                                                  toupper(*macstr)-'A'+10) < 16) {
++                                result = result*16 + value;
++                                macstr++;
++                        }
++                        else {
++                                ERR("invalid mac address "
++                                    "character: %c\n", *macstr);
++                                return -EINVAL;
++                        }
++                }
++
++                macstr++;
++                dev->dev_addr[i] = result;
++        }
++
++      dev->dev_addr[5]++;
++        return 0;
++}
++
++#endif
++
+ static inline void __iomem *ns_ioaddr(struct net_device *dev)
+ {
+       return (void __iomem *) dev->base_addr;
+@@ -871,6 +914,7 @@
+               goto err_ioremap;
+       }
++#ifndef CONFIG_MACH_ARUBA
+       /* Work around the dropped serial bit. */
+       prev_eedata = eeprom_read(ioaddr, 6);
+       for (i = 0; i < 3; i++) {
+@@ -879,6 +923,19 @@
+               dev->dev_addr[i*2+1] = eedata >> 7;
+               prev_eedata = eedata;
+       }
++#else
++      {
++              char mac[32];
++              unsigned char def_mac[6] = {00, 0x0b, 0x86, 0xba, 0xdb, 0xad};
++              extern char *getenv(char *e);
++              memset(mac, 0, 32);
++              memcpy(mac, getenv("ethaddr"), 17);
++              if (parse_mac_addr(dev, mac)){
++                      printk("%s: MAC address not found\n", __func__);
++                      memcpy(dev->dev_addr, def_mac, 6);
++              }
++      }
++#endif
  
- obj-$(CONFIG_ARM) += arm/
- obj-$(CONFIG_DEV_APPLETALK) += appletalk/
-diff -Nur linux-2.6.15/drivers/net/rc32434_eth.c linux-2.6.15-openwrt/drivers/net/rc32434_eth.c
---- linux-2.6.15/drivers/net/rc32434_eth.c     1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.15-openwrt/drivers/net/rc32434_eth.c     2006-01-10 00:32:33.000000000 +0100
-@@ -0,0 +1,1268 @@
+       dev->base_addr = (unsigned long __force) ioaddr;
+       dev->irq = irq;
+diff -Nur linux-2.6.17/drivers/net/rc32434_eth.c linux-2.6.17-owrt/drivers/net/rc32434_eth.c
+--- linux-2.6.17/drivers/net/rc32434_eth.c     1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.17-owrt/drivers/net/rc32434_eth.c        2006-06-18 12:44:28.000000000 +0200
+@@ -0,0 +1,1273 @@
 +/**************************************************************************
 + *
 + *  BRIEF MODULE DESCRIPTION
@@ -2408,6 +1242,7 @@ diff -Nur linux-2.6.15/drivers/net/rc32434_eth.c linux-2.6.15-openwrt/drivers/ne
 + */
 +
 +#include <linux/config.h>
++#include <linux/version.h>
 +#include <linux/module.h>
 +#include <linux/kernel.h>
 +#include <linux/moduleparam.h>
@@ -2453,7 +1288,11 @@ diff -Nur linux-2.6.15/drivers/net/rc32434_eth.c linux-2.6.15-openwrt/drivers/ne
 +#define MII_CLOCK 1250000                             /* no more than 2.5MHz */
 +static char mac0[18] = "08:00:06:05:40:01"; 
 +
++#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,17)
++module_param_string(mac0, mac0, 18, 0);
++#else
 +MODULE_PARM(mac0, "c18");
++#endif
 +MODULE_PARM_DESC(mac0, "MAC address for RC32434 ethernet0");
 +
 +static struct rc32434_if_t {
@@ -3635,9 +2474,9 @@ diff -Nur linux-2.6.15/drivers/net/rc32434_eth.c linux-2.6.15-openwrt/drivers/ne
 +
 +
 +
-diff -Nur linux-2.6.15/drivers/net/rc32434_eth.h linux-2.6.15-openwrt/drivers/net/rc32434_eth.h
---- linux-2.6.15/drivers/net/rc32434_eth.h     1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.15-openwrt/drivers/net/rc32434_eth.h     2006-01-10 00:32:33.000000000 +0100
+diff -Nur linux-2.6.17/drivers/net/rc32434_eth.h linux-2.6.17-owrt/drivers/net/rc32434_eth.h
+--- linux-2.6.17/drivers/net/rc32434_eth.h     1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.17-owrt/drivers/net/rc32434_eth.h        2006-06-18 12:44:28.000000000 +0200
 @@ -0,0 +1,187 @@
 +/**************************************************************************
 + *
@@ -3826,53 +2665,9 @@ diff -Nur linux-2.6.15/drivers/net/rc32434_eth.h linux-2.6.15-openwrt/drivers/ne
 +      rc32434_writel(0, &ch->dmadptr); 
 +      rc32434_writel(0, &ch->dmandptr); 
 +}
-diff -Nur linux-2.6.15/drivers/pci/access.c linux-2.6.15-openwrt/drivers/pci/access.c
---- linux-2.6.15/drivers/pci/access.c  2006-01-03 04:21:10.000000000 +0100
-+++ linux-2.6.15-openwrt/drivers/pci/access.c  2006-01-10 00:43:10.000000000 +0100
-@@ -21,6 +21,7 @@
- #define PCI_word_BAD (pos & 1)
- #define PCI_dword_BAD (pos & 3)
-+#ifdef __MIPSEB__
- #define PCI_OP_READ(size,type,len) \
- int pci_bus_read_config_##size \
-       (struct pci_bus *bus, unsigned int devfn, int pos, type *value) \
-@@ -31,11 +32,32 @@
-       if (PCI_##size##_BAD) return PCIBIOS_BAD_REGISTER_NUMBER;       \
-       spin_lock_irqsave(&pci_lock, flags);                            \
-       res = bus->ops->read(bus, devfn, pos, len, &data);              \
-+      if (len == 1)                                                   \
-+       *value = (type)((data >> 24) & 0xff);                          \
-+       else if (len == 2)                                             \
-+       *value = (type)((data >> 16) & 0xffff);                        \
-+      else                                                            \
-       *value = (type)data;                                            \
-       spin_unlock_irqrestore(&pci_lock, flags);                       \
-       return res;                                                     \
- }
-+#else
-+#define PCI_OP_READ(size,type,len) \
-+int pci_bus_read_config_##size \
-+      (struct pci_bus *bus, unsigned int devfn, int pos, type *value) \
-+{                                                                     \
-+      int res;                                                        \
-+      unsigned long flags;                                            \
-+      u32 data = 0;                                                   \
-+      if (PCI_##size##_BAD) return PCIBIOS_BAD_REGISTER_NUMBER;       \
-+      spin_lock_irqsave(&pci_lock, flags);                            \
-+      res = bus->ops->read(bus, devfn, pos, len, &data);              \
-+      *value = (type)data;                                            \
-+      spin_unlock_irqrestore(&pci_lock, flags);                       \
-+      return res;                                                     \
-+}
-+#endif
- #define PCI_OP_WRITE(size,type,len) \
- int pci_bus_write_config_##size \
-       (struct pci_bus *bus, unsigned int devfn, int pos, type value)  \
-diff -Nur linux-2.6.15/include/asm-mips/bootinfo.h linux-2.6.15-openwrt/include/asm-mips/bootinfo.h
---- linux-2.6.15/include/asm-mips/bootinfo.h   2006-01-03 04:21:10.000000000 +0100
-+++ linux-2.6.15-openwrt/include/asm-mips/bootinfo.h   2006-01-10 00:32:33.000000000 +0100
+diff -Nur linux-2.6.17/include/asm-mips/bootinfo.h linux-2.6.17-owrt/include/asm-mips/bootinfo.h
+--- linux-2.6.17/include/asm-mips/bootinfo.h   2006-06-18 03:49:35.000000000 +0200
++++ linux-2.6.17-owrt/include/asm-mips/bootinfo.h      2006-06-18 12:44:28.000000000 +0200
 @@ -218,6 +218,17 @@
  #define MACH_GROUP_TITAN       22     /* PMC-Sierra Titan             */
  #define  MACH_TITAN_YOSEMITE  1       /* PMC-Sierra Yosemite          */
@@ -3891,11 +2686,11 @@ diff -Nur linux-2.6.15/include/asm-mips/bootinfo.h linux-2.6.15-openwrt/include/
  #define CL_SIZE                       COMMAND_LINE_SIZE
  
  const char *get_system_type(void);
-diff -Nur linux-2.6.15/include/asm-mips/cpu.h linux-2.6.15-openwrt/include/asm-mips/cpu.h
---- linux-2.6.15/include/asm-mips/cpu.h        2006-01-03 04:21:10.000000000 +0100
-+++ linux-2.6.15-openwrt/include/asm-mips/cpu.h        2006-01-10 00:32:33.000000000 +0100
-@@ -53,6 +53,9 @@
- #define PRID_IMP_R12000               0x0e00
+diff -Nur linux-2.6.17/include/asm-mips/cpu.h linux-2.6.17-owrt/include/asm-mips/cpu.h
+--- linux-2.6.17/include/asm-mips/cpu.h        2006-06-18 03:49:35.000000000 +0200
++++ linux-2.6.17-owrt/include/asm-mips/cpu.h   2006-06-18 12:45:56.000000000 +0200
+@@ -54,6 +54,9 @@
+ #define PRID_IMP_R14000               0x0f00
  #define PRID_IMP_R8000                0x1000
  #define PRID_IMP_PR4450               0x1200
 +#define PRID_IMP_RC32334      0x1800
@@ -3904,19 +2699,19 @@ diff -Nur linux-2.6.15/include/asm-mips/cpu.h linux-2.6.15-openwrt/include/asm-m
  #define PRID_IMP_R4600                0x2000
  #define PRID_IMP_R4700                0x2100
  #define PRID_IMP_TX39         0x2200
-@@ -196,7 +199,8 @@
- #define CPU_34K                       60
- #define CPU_PR4450            61
+@@ -200,7 +203,8 @@
  #define CPU_SB1A              62
--#define CPU_LAST              62
-+#define CPU_RC32300           63
-+#define CPU_LAST              63
+ #define CPU_74K                       63
+ #define CPU_R14000            64
+-#define CPU_LAST              64
++#define CPU_RC32300           65
++#define CPU_LAST              65
  
  /*
   * ISA Level encodings
-diff -Nur linux-2.6.15/include/asm-mips/idt-boards/rc32300/rc32300.h linux-2.6.15-openwrt/include/asm-mips/idt-boards/rc32300/rc32300.h
---- linux-2.6.15/include/asm-mips/idt-boards/rc32300/rc32300.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.15-openwrt/include/asm-mips/idt-boards/rc32300/rc32300.h 2006-01-10 00:32:33.000000000 +0100
+diff -Nur linux-2.6.17/include/asm-mips/idt-boards/rc32300/rc32300.h linux-2.6.17-owrt/include/asm-mips/idt-boards/rc32300/rc32300.h
+--- linux-2.6.17/include/asm-mips/idt-boards/rc32300/rc32300.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.17-owrt/include/asm-mips/idt-boards/rc32300/rc32300.h    2006-06-18 12:44:28.000000000 +0200
 @@ -0,0 +1,142 @@
 +/**************************************************************************
 + *
@@ -4060,9 +2855,9 @@ diff -Nur linux-2.6.15/include/asm-mips/idt-boards/rc32300/rc32300.h linux-2.6.1
 +}
 +
 +#endif  // __IDT_RC32300_H__
-diff -Nur linux-2.6.15/include/asm-mips/idt-boards/rc32300/rc32334.h linux-2.6.15-openwrt/include/asm-mips/idt-boards/rc32300/rc32334.h
---- linux-2.6.15/include/asm-mips/idt-boards/rc32300/rc32334.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.15-openwrt/include/asm-mips/idt-boards/rc32300/rc32334.h 2006-01-10 00:32:33.000000000 +0100
+diff -Nur linux-2.6.17/include/asm-mips/idt-boards/rc32300/rc32334.h linux-2.6.17-owrt/include/asm-mips/idt-boards/rc32300/rc32334.h
+--- linux-2.6.17/include/asm-mips/idt-boards/rc32300/rc32334.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.17-owrt/include/asm-mips/idt-boards/rc32300/rc32334.h    2006-06-18 12:44:28.000000000 +0200
 @@ -0,0 +1,207 @@
 +/**************************************************************************
 + *
@@ -4271,9 +3066,9 @@ diff -Nur linux-2.6.15/include/asm-mips/idt-boards/rc32300/rc32334.h linux-2.6.1
 +#define RAM_SIZE      (32*1024*1024)
 +
 +#endif // __IDT_RC32334_H__
-diff -Nur linux-2.6.15/include/asm-mips/idt-boards/rc32300/rc32355_dma.h linux-2.6.15-openwrt/include/asm-mips/idt-boards/rc32300/rc32355_dma.h
---- linux-2.6.15/include/asm-mips/idt-boards/rc32300/rc32355_dma.h     1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.15-openwrt/include/asm-mips/idt-boards/rc32300/rc32355_dma.h     2006-01-10 00:32:33.000000000 +0100
+diff -Nur linux-2.6.17/include/asm-mips/idt-boards/rc32300/rc32355_dma.h linux-2.6.17-owrt/include/asm-mips/idt-boards/rc32300/rc32355_dma.h
+--- linux-2.6.17/include/asm-mips/idt-boards/rc32300/rc32355_dma.h     1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.17-owrt/include/asm-mips/idt-boards/rc32300/rc32355_dma.h        2006-06-18 12:44:28.000000000 +0200
 @@ -0,0 +1,206 @@
 +/**************************************************************************
 + *
@@ -4481,9 +3276,9 @@ diff -Nur linux-2.6.15/include/asm-mips/idt-boards/rc32300/rc32355_dma.h linux-2
 +  ((count) & DMADESC_COUNT_MASK)
 +
 +#endif /* RC32355_DMA_H */
-diff -Nur linux-2.6.15/include/asm-mips/idt-boards/rc32300/rc32355_eth.h linux-2.6.15-openwrt/include/asm-mips/idt-boards/rc32300/rc32355_eth.h
---- linux-2.6.15/include/asm-mips/idt-boards/rc32300/rc32355_eth.h     1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.15-openwrt/include/asm-mips/idt-boards/rc32300/rc32355_eth.h     2006-01-10 00:32:33.000000000 +0100
+diff -Nur linux-2.6.17/include/asm-mips/idt-boards/rc32300/rc32355_eth.h linux-2.6.17-owrt/include/asm-mips/idt-boards/rc32300/rc32355_eth.h
+--- linux-2.6.17/include/asm-mips/idt-boards/rc32300/rc32355_eth.h     1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.17-owrt/include/asm-mips/idt-boards/rc32300/rc32355_eth.h        2006-06-18 12:44:28.000000000 +0200
 @@ -0,0 +1,442 @@
 +/**************************************************************************
 + *
@@ -4927,9 +3722,9 @@ diff -Nur linux-2.6.15/include/asm-mips/idt-boards/rc32300/rc32355_eth.h linux-2
 +
 +#endif /* RC32355_ETHER_H */
 +
-diff -Nur linux-2.6.15/include/asm-mips/idt-boards/rc32300/rc32355.h linux-2.6.15-openwrt/include/asm-mips/idt-boards/rc32300/rc32355.h
---- linux-2.6.15/include/asm-mips/idt-boards/rc32300/rc32355.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.15-openwrt/include/asm-mips/idt-boards/rc32300/rc32355.h 2006-01-10 00:32:33.000000000 +0100
+diff -Nur linux-2.6.17/include/asm-mips/idt-boards/rc32300/rc32355.h linux-2.6.17-owrt/include/asm-mips/idt-boards/rc32300/rc32355.h
+--- linux-2.6.17/include/asm-mips/idt-boards/rc32300/rc32355.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.17-owrt/include/asm-mips/idt-boards/rc32300/rc32355.h    2006-06-18 12:44:28.000000000 +0200
 @@ -0,0 +1,177 @@
 +/**************************************************************************
 + *
@@ -5108,9 +3903,9 @@ diff -Nur linux-2.6.15/include/asm-mips/idt-boards/rc32300/rc32355.h linux-2.6.1
 +#define NVRAM_ENVSTART_OFF 32
 +
 +#endif /* _RC32355_H_ */
-diff -Nur linux-2.6.15/include/asm-mips/idt-boards/rc32300/rc32365_dma.h linux-2.6.15-openwrt/include/asm-mips/idt-boards/rc32300/rc32365_dma.h
---- linux-2.6.15/include/asm-mips/idt-boards/rc32300/rc32365_dma.h     1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.15-openwrt/include/asm-mips/idt-boards/rc32300/rc32365_dma.h     2006-01-10 00:32:33.000000000 +0100
+diff -Nur linux-2.6.17/include/asm-mips/idt-boards/rc32300/rc32365_dma.h linux-2.6.17-owrt/include/asm-mips/idt-boards/rc32300/rc32365_dma.h
+--- linux-2.6.17/include/asm-mips/idt-boards/rc32300/rc32365_dma.h     1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.17-owrt/include/asm-mips/idt-boards/rc32300/rc32365_dma.h        2006-06-18 12:44:28.000000000 +0200
 @@ -0,0 +1,226 @@
 +/**************************************************************************
 + *
@@ -5338,9 +4133,9 @@ diff -Nur linux-2.6.15/include/asm-mips/idt-boards/rc32300/rc32365_dma.h linux-2
 +#endif        // aws - Compatibility.
 +
 +#endif        // __IDT_RC32365_DMA_H__
-diff -Nur linux-2.6.15/include/asm-mips/idt-boards/rc32300/rc32365_dma_v.h linux-2.6.15-openwrt/include/asm-mips/idt-boards/rc32300/rc32365_dma_v.h
---- linux-2.6.15/include/asm-mips/idt-boards/rc32300/rc32365_dma_v.h   1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.15-openwrt/include/asm-mips/idt-boards/rc32300/rc32365_dma_v.h   2006-01-10 00:32:33.000000000 +0100
+diff -Nur linux-2.6.17/include/asm-mips/idt-boards/rc32300/rc32365_dma_v.h linux-2.6.17-owrt/include/asm-mips/idt-boards/rc32300/rc32365_dma_v.h
+--- linux-2.6.17/include/asm-mips/idt-boards/rc32300/rc32365_dma_v.h   1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.17-owrt/include/asm-mips/idt-boards/rc32300/rc32365_dma_v.h      2006-06-18 12:44:28.000000000 +0200
 @@ -0,0 +1,86 @@
 +/**************************************************************************
 + *
@@ -5428,9 +4223,9 @@ diff -Nur linux-2.6.15/include/asm-mips/idt-boards/rc32300/rc32365_dma_v.h linux
 +      local_writel(dma_addr, &ch->dmandptr);
 +}
 +#endif //__IDT_RC32365_DMA_V_H__
-diff -Nur linux-2.6.15/include/asm-mips/idt-boards/rc32300/rc32365_eth.h linux-2.6.15-openwrt/include/asm-mips/idt-boards/rc32300/rc32365_eth.h
---- linux-2.6.15/include/asm-mips/idt-boards/rc32300/rc32365_eth.h     1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.15-openwrt/include/asm-mips/idt-boards/rc32300/rc32365_eth.h     2006-01-10 00:32:33.000000000 +0100
+diff -Nur linux-2.6.17/include/asm-mips/idt-boards/rc32300/rc32365_eth.h linux-2.6.17-owrt/include/asm-mips/idt-boards/rc32300/rc32365_eth.h
+--- linux-2.6.17/include/asm-mips/idt-boards/rc32300/rc32365_eth.h     1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.17-owrt/include/asm-mips/idt-boards/rc32300/rc32365_eth.h        2006-06-18 12:44:28.000000000 +0200
 @@ -0,0 +1,344 @@
 +/**************************************************************************
 + *
@@ -5776,9 +4571,9 @@ diff -Nur linux-2.6.15/include/asm-mips/idt-boards/rc32300/rc32365_eth.h linux-2
 +      u32 ipabmctx            ;
 +}volatile *IPABM_ETH_t;
 +#endif //__IDT_RC32365_ETH_H__
-diff -Nur linux-2.6.15/include/asm-mips/idt-boards/rc32300/rc32365_eth_v.h linux-2.6.15-openwrt/include/asm-mips/idt-boards/rc32300/rc32365_eth_v.h
---- linux-2.6.15/include/asm-mips/idt-boards/rc32300/rc32365_eth_v.h   1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.15-openwrt/include/asm-mips/idt-boards/rc32300/rc32365_eth_v.h   2006-01-10 00:32:33.000000000 +0100
+diff -Nur linux-2.6.17/include/asm-mips/idt-boards/rc32300/rc32365_eth_v.h linux-2.6.17-owrt/include/asm-mips/idt-boards/rc32300/rc32365_eth_v.h
+--- linux-2.6.17/include/asm-mips/idt-boards/rc32300/rc32365_eth_v.h   1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.17-owrt/include/asm-mips/idt-boards/rc32300/rc32365_eth_v.h      2006-06-18 12:44:28.000000000 +0200
 @@ -0,0 +1,72 @@
 +/**************************************************************************
 + *
@@ -5852,9 +4647,9 @@ diff -Nur linux-2.6.15/include/asm-mips/idt-boards/rc32300/rc32365_eth_v.h linux
 +#define RCVPKT_LENGTH(X)     (((X) & ETHRX_length_m) >> ETHRX_length_b)   /* Length of the received packet */
 +
 +#endif //__IDT_RC32365_ETH_V_H__
-diff -Nur linux-2.6.15/include/asm-mips/idt-boards/rc32300/rc32365_gpio.h linux-2.6.15-openwrt/include/asm-mips/idt-boards/rc32300/rc32365_gpio.h
---- linux-2.6.15/include/asm-mips/idt-boards/rc32300/rc32365_gpio.h    1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.15-openwrt/include/asm-mips/idt-boards/rc32300/rc32365_gpio.h    2006-01-10 00:32:33.000000000 +0100
+diff -Nur linux-2.6.17/include/asm-mips/idt-boards/rc32300/rc32365_gpio.h linux-2.6.17-owrt/include/asm-mips/idt-boards/rc32300/rc32365_gpio.h
+--- linux-2.6.17/include/asm-mips/idt-boards/rc32300/rc32365_gpio.h    1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.17-owrt/include/asm-mips/idt-boards/rc32300/rc32365_gpio.h       2006-06-18 12:44:28.000000000 +0200
 @@ -0,0 +1,181 @@
 +/**************************************************************************
 + *
@@ -6037,9 +4832,9 @@ diff -Nur linux-2.6.15/include/asm-mips/idt-boards/rc32300/rc32365_gpio.h linux-
 +} GPIO_DEFS_t;
 +
 +#endif //__IDT_RC32365_GPIO_H__
-diff -Nur linux-2.6.15/include/asm-mips/idt-boards/rc32300/rc32365_gpio_v.h linux-2.6.15-openwrt/include/asm-mips/idt-boards/rc32300/rc32365_gpio_v.h
---- linux-2.6.15/include/asm-mips/idt-boards/rc32300/rc32365_gpio_v.h  1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.15-openwrt/include/asm-mips/idt-boards/rc32300/rc32365_gpio_v.h  2006-01-10 00:32:33.000000000 +0100
+diff -Nur linux-2.6.17/include/asm-mips/idt-boards/rc32300/rc32365_gpio_v.h linux-2.6.17-owrt/include/asm-mips/idt-boards/rc32300/rc32365_gpio_v.h
+--- linux-2.6.17/include/asm-mips/idt-boards/rc32300/rc32365_gpio_v.h  1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.17-owrt/include/asm-mips/idt-boards/rc32300/rc32365_gpio_v.h     2006-06-18 12:44:28.000000000 +0200
 @@ -0,0 +1,91 @@
 +/**************************************************************************
 + *
@@ -6132,9 +4927,9 @@ diff -Nur linux-2.6.15/include/asm-mips/idt-boards/rc32300/rc32365_gpio_v.h linu
 +
 +#endif //__IDT_RC32365_GPIO_V_H__
 +
-diff -Nur linux-2.6.15/include/asm-mips/idt-boards/rc32300/rc32365.h linux-2.6.15-openwrt/include/asm-mips/idt-boards/rc32300/rc32365.h
---- linux-2.6.15/include/asm-mips/idt-boards/rc32300/rc32365.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.15-openwrt/include/asm-mips/idt-boards/rc32300/rc32365.h 2006-01-10 00:32:33.000000000 +0100
+diff -Nur linux-2.6.17/include/asm-mips/idt-boards/rc32300/rc32365.h linux-2.6.17-owrt/include/asm-mips/idt-boards/rc32300/rc32365.h
+--- linux-2.6.17/include/asm-mips/idt-boards/rc32300/rc32365.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.17-owrt/include/asm-mips/idt-boards/rc32300/rc32365.h    2006-06-18 12:44:28.000000000 +0200
 @@ -0,0 +1,160 @@
 +/**************************************************************************
 + *
@@ -6296,9 +5091,9 @@ diff -Nur linux-2.6.15/include/asm-mips/idt-boards/rc32300/rc32365.h linux-2.6.1
 +#define RAM_SIZE         (32 * 1024 * 1024)
 +
 +#endif //__IDT_RC32365_H__
-diff -Nur linux-2.6.15/include/asm-mips/idt-boards/rc32300/rc32365_pci.h linux-2.6.15-openwrt/include/asm-mips/idt-boards/rc32300/rc32365_pci.h
---- linux-2.6.15/include/asm-mips/idt-boards/rc32300/rc32365_pci.h     1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.15-openwrt/include/asm-mips/idt-boards/rc32300/rc32365_pci.h     2006-01-10 00:32:33.000000000 +0100
+diff -Nur linux-2.6.17/include/asm-mips/idt-boards/rc32300/rc32365_pci.h linux-2.6.17-owrt/include/asm-mips/idt-boards/rc32300/rc32365_pci.h
+--- linux-2.6.17/include/asm-mips/idt-boards/rc32300/rc32365_pci.h     1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.17-owrt/include/asm-mips/idt-boards/rc32300/rc32365_pci.h        2006-06-18 12:44:28.000000000 +0200
 @@ -0,0 +1,515 @@
 +/**************************************************************************
 + *
@@ -6815,9 +5610,9 @@ diff -Nur linux-2.6.15/include/asm-mips/idt-boards/rc32300/rc32365_pci.h linux-2
 +
 +
 +#endif        // __IDT_RC32365_PCI_H__
-diff -Nur linux-2.6.15/include/asm-mips/idt-boards/rc32300/rc32365_pci_v.h linux-2.6.15-openwrt/include/asm-mips/idt-boards/rc32300/rc32365_pci_v.h
---- linux-2.6.15/include/asm-mips/idt-boards/rc32300/rc32365_pci_v.h   1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.15-openwrt/include/asm-mips/idt-boards/rc32300/rc32365_pci_v.h   2006-01-10 00:32:33.000000000 +0100
+diff -Nur linux-2.6.17/include/asm-mips/idt-boards/rc32300/rc32365_pci_v.h linux-2.6.17-owrt/include/asm-mips/idt-boards/rc32300/rc32365_pci_v.h
+--- linux-2.6.17/include/asm-mips/idt-boards/rc32300/rc32365_pci_v.h   1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.17-owrt/include/asm-mips/idt-boards/rc32300/rc32365_pci_v.h      2006-06-18 12:44:28.000000000 +0200
 @@ -0,0 +1,217 @@
 +/**************************************************************************
 + *
@@ -7036,9 +5831,9 @@ diff -Nur linux-2.6.15/include/asm-mips/idt-boards/rc32300/rc32365_pci_v.h linux
 +#define PCITC_RTIMER_VAL      0x10
 +
 +#endif //__IDT_RC32365_PCI_V_H__
-diff -Nur linux-2.6.15/include/asm-mips/idt-boards/rc32434/rc32434_dma.h linux-2.6.15-openwrt/include/asm-mips/idt-boards/rc32434/rc32434_dma.h
---- linux-2.6.15/include/asm-mips/idt-boards/rc32434/rc32434_dma.h     1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.15-openwrt/include/asm-mips/idt-boards/rc32434/rc32434_dma.h     2006-01-10 00:32:33.000000000 +0100
+diff -Nur linux-2.6.17/include/asm-mips/idt-boards/rc32434/rc32434_dma.h linux-2.6.17-owrt/include/asm-mips/idt-boards/rc32434/rc32434_dma.h
+--- linux-2.6.17/include/asm-mips/idt-boards/rc32434/rc32434_dma.h     1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.17-owrt/include/asm-mips/idt-boards/rc32434/rc32434_dma.h        2006-06-18 12:44:28.000000000 +0200
 @@ -0,0 +1,205 @@
 +/**************************************************************************
 + *
@@ -7245,9 +6040,9 @@ diff -Nur linux-2.6.15/include/asm-mips/idt-boards/rc32434/rc32434_dma.h linux-2
 +
 +
 +
-diff -Nur linux-2.6.15/include/asm-mips/idt-boards/rc32434/rc32434_dma_v.h linux-2.6.15-openwrt/include/asm-mips/idt-boards/rc32434/rc32434_dma_v.h
---- linux-2.6.15/include/asm-mips/idt-boards/rc32434/rc32434_dma_v.h   1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.15-openwrt/include/asm-mips/idt-boards/rc32434/rc32434_dma_v.h   2006-01-10 00:32:33.000000000 +0100
+diff -Nur linux-2.6.17/include/asm-mips/idt-boards/rc32434/rc32434_dma_v.h linux-2.6.17-owrt/include/asm-mips/idt-boards/rc32434/rc32434_dma_v.h
+--- linux-2.6.17/include/asm-mips/idt-boards/rc32434/rc32434_dma_v.h   1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.17-owrt/include/asm-mips/idt-boards/rc32434/rc32434_dma_v.h      2006-06-18 12:44:28.000000000 +0200
 @@ -0,0 +1,89 @@
 +/**************************************************************************
 + *
@@ -7338,9 +6133,9 @@ diff -Nur linux-2.6.15/include/asm-mips/idt-boards/rc32434/rc32434_dma_v.h linux
 +
 +
 +
-diff -Nur linux-2.6.15/include/asm-mips/idt-boards/rc32434/rc32434_eth.h linux-2.6.15-openwrt/include/asm-mips/idt-boards/rc32434/rc32434_eth.h
---- linux-2.6.15/include/asm-mips/idt-boards/rc32434/rc32434_eth.h     1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.15-openwrt/include/asm-mips/idt-boards/rc32434/rc32434_eth.h     2006-01-10 00:32:33.000000000 +0100
+diff -Nur linux-2.6.17/include/asm-mips/idt-boards/rc32434/rc32434_eth.h linux-2.6.17-owrt/include/asm-mips/idt-boards/rc32434/rc32434_eth.h
+--- linux-2.6.17/include/asm-mips/idt-boards/rc32434/rc32434_eth.h     1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.17-owrt/include/asm-mips/idt-boards/rc32434/rc32434_eth.h        2006-06-18 12:44:28.000000000 +0200
 @@ -0,0 +1,333 @@
 +/**************************************************************************
 + *
@@ -7675,9 +6470,9 @@ diff -Nur linux-2.6.15/include/asm-mips/idt-boards/rc32434/rc32434_eth.h linux-2
 +
 +
 +
-diff -Nur linux-2.6.15/include/asm-mips/idt-boards/rc32434/rc32434_eth_v.h linux-2.6.15-openwrt/include/asm-mips/idt-boards/rc32434/rc32434_eth_v.h
---- linux-2.6.15/include/asm-mips/idt-boards/rc32434/rc32434_eth_v.h   1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.15-openwrt/include/asm-mips/idt-boards/rc32434/rc32434_eth_v.h   2006-01-10 00:32:33.000000000 +0100
+diff -Nur linux-2.6.17/include/asm-mips/idt-boards/rc32434/rc32434_eth_v.h linux-2.6.17-owrt/include/asm-mips/idt-boards/rc32434/rc32434_eth_v.h
+--- linux-2.6.17/include/asm-mips/idt-boards/rc32434/rc32434_eth_v.h   1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.17-owrt/include/asm-mips/idt-boards/rc32434/rc32434_eth_v.h      2006-06-18 12:44:28.000000000 +0200
 @@ -0,0 +1,77 @@
 +/**************************************************************************
 + *
@@ -7756,9 +6551,9 @@ diff -Nur linux-2.6.15/include/asm-mips/idt-boards/rc32434/rc32434_eth_v.h linux
 +
 +
 +
-diff -Nur linux-2.6.15/include/asm-mips/idt-boards/rc32434/rc32434_gpio.h linux-2.6.15-openwrt/include/asm-mips/idt-boards/rc32434/rc32434_gpio.h
---- linux-2.6.15/include/asm-mips/idt-boards/rc32434/rc32434_gpio.h    1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.15-openwrt/include/asm-mips/idt-boards/rc32434/rc32434_gpio.h    2006-01-10 00:32:33.000000000 +0100
+diff -Nur linux-2.6.17/include/asm-mips/idt-boards/rc32434/rc32434_gpio.h linux-2.6.17-owrt/include/asm-mips/idt-boards/rc32434/rc32434_gpio.h
+--- linux-2.6.17/include/asm-mips/idt-boards/rc32434/rc32434_gpio.h    1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.17-owrt/include/asm-mips/idt-boards/rc32434/rc32434_gpio.h       2006-06-18 12:44:28.000000000 +0200
 @@ -0,0 +1,167 @@
 +/**************************************************************************
 + *
@@ -7927,9 +6722,9 @@ diff -Nur linux-2.6.15/include/asm-mips/idt-boards/rc32434/rc32434_gpio.h linux-
 +
 +#endif        // __IDT_GPIO_H__
 +
-diff -Nur linux-2.6.15/include/asm-mips/idt-boards/rc32434/rc32434.h linux-2.6.15-openwrt/include/asm-mips/idt-boards/rc32434/rc32434.h
---- linux-2.6.15/include/asm-mips/idt-boards/rc32434/rc32434.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.15-openwrt/include/asm-mips/idt-boards/rc32434/rc32434.h 2006-01-10 00:32:33.000000000 +0100
+diff -Nur linux-2.6.17/include/asm-mips/idt-boards/rc32434/rc32434.h linux-2.6.17-owrt/include/asm-mips/idt-boards/rc32434/rc32434.h
+--- linux-2.6.17/include/asm-mips/idt-boards/rc32434/rc32434.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.17-owrt/include/asm-mips/idt-boards/rc32434/rc32434.h    2006-06-18 12:44:28.000000000 +0200
 @@ -0,0 +1,199 @@
 + /**************************************************************************
 + *
@@ -8130,9 +6925,9 @@ diff -Nur linux-2.6.15/include/asm-mips/idt-boards/rc32434/rc32434.h linux-2.6.1
 +
 +
 +
-diff -Nur linux-2.6.15/include/asm-mips/idt-boards/rc32434/rc32434_integ.h linux-2.6.15-openwrt/include/asm-mips/idt-boards/rc32434/rc32434_integ.h
---- linux-2.6.15/include/asm-mips/idt-boards/rc32434/rc32434_integ.h   1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.15-openwrt/include/asm-mips/idt-boards/rc32434/rc32434_integ.h   2006-01-10 00:32:33.000000000 +0100
+diff -Nur linux-2.6.17/include/asm-mips/idt-boards/rc32434/rc32434_integ.h linux-2.6.17-owrt/include/asm-mips/idt-boards/rc32434/rc32434_integ.h
+--- linux-2.6.17/include/asm-mips/idt-boards/rc32434/rc32434_integ.h   1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.17-owrt/include/asm-mips/idt-boards/rc32434/rc32434_integ.h      2006-06-18 12:44:28.000000000 +0200
 @@ -0,0 +1,90 @@
 +/**************************************************************************
 + *
@@ -8224,9 +7019,9 @@ diff -Nur linux-2.6.15/include/asm-mips/idt-boards/rc32434/rc32434_integ.h linux
 +} ;
 +
 +#endif        // __IDT_INTEG_H__
-diff -Nur linux-2.6.15/include/asm-mips/idt-boards/rc32434/rc32434_int.h linux-2.6.15-openwrt/include/asm-mips/idt-boards/rc32434/rc32434_int.h
---- linux-2.6.15/include/asm-mips/idt-boards/rc32434/rc32434_int.h     1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.15-openwrt/include/asm-mips/idt-boards/rc32434/rc32434_int.h     2006-01-10 00:32:33.000000000 +0100
+diff -Nur linux-2.6.17/include/asm-mips/idt-boards/rc32434/rc32434_int.h linux-2.6.17-owrt/include/asm-mips/idt-boards/rc32434/rc32434_int.h
+--- linux-2.6.17/include/asm-mips/idt-boards/rc32434/rc32434_int.h     1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.17-owrt/include/asm-mips/idt-boards/rc32434/rc32434_int.h        2006-06-18 12:44:28.000000000 +0200
 @@ -0,0 +1,174 @@
 +/**************************************************************************
 + *
@@ -8402,9 +7197,9 @@ diff -Nur linux-2.6.15/include/asm-mips/idt-boards/rc32434/rc32434_int.h linux-2
 +#endif        // __IDT_INT_H__
 +
 +
-diff -Nur linux-2.6.15/include/asm-mips/idt-boards/rc32434/rc32434_iparb.h linux-2.6.15-openwrt/include/asm-mips/idt-boards/rc32434/rc32434_iparb.h
---- linux-2.6.15/include/asm-mips/idt-boards/rc32434/rc32434_iparb.h   1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.15-openwrt/include/asm-mips/idt-boards/rc32434/rc32434_iparb.h   2006-01-10 00:32:33.000000000 +0100
+diff -Nur linux-2.6.17/include/asm-mips/idt-boards/rc32434/rc32434_iparb.h linux-2.6.17-owrt/include/asm-mips/idt-boards/rc32434/rc32434_iparb.h
+--- linux-2.6.17/include/asm-mips/idt-boards/rc32434/rc32434_iparb.h   1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.17-owrt/include/asm-mips/idt-boards/rc32434/rc32434_iparb.h      2006-06-18 12:44:28.000000000 +0200
 @@ -0,0 +1,111 @@
 +/**************************************************************************
 + *
@@ -8517,9 +7312,9 @@ diff -Nur linux-2.6.15/include/asm-mips/idt-boards/rc32434/rc32434_iparb.h linux
 +};
 +
 +#endif        // __IDT_IPARB_H__
-diff -Nur linux-2.6.15/include/asm-mips/idt-boards/rc32434/rc32434_pci.h linux-2.6.15-openwrt/include/asm-mips/idt-boards/rc32434/rc32434_pci.h
---- linux-2.6.15/include/asm-mips/idt-boards/rc32434/rc32434_pci.h     1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.15-openwrt/include/asm-mips/idt-boards/rc32434/rc32434_pci.h     2006-01-10 00:32:33.000000000 +0100
+diff -Nur linux-2.6.17/include/asm-mips/idt-boards/rc32434/rc32434_pci.h linux-2.6.17-owrt/include/asm-mips/idt-boards/rc32434/rc32434_pci.h
+--- linux-2.6.17/include/asm-mips/idt-boards/rc32434/rc32434_pci.h     1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.17-owrt/include/asm-mips/idt-boards/rc32434/rc32434_pci.h        2006-06-18 12:44:28.000000000 +0200
 @@ -0,0 +1,695 @@
 +/**************************************************************************
 + *
@@ -9216,9 +8011,9 @@ diff -Nur linux-2.6.15/include/asm-mips/idt-boards/rc32434/rc32434_pci.h linux-2
 +
 +
 +
-diff -Nur linux-2.6.15/include/asm-mips/idt-boards/rc32434/rc32434_rst.h linux-2.6.15-openwrt/include/asm-mips/idt-boards/rc32434/rc32434_rst.h
---- linux-2.6.15/include/asm-mips/idt-boards/rc32434/rc32434_rst.h     1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.15-openwrt/include/asm-mips/idt-boards/rc32434/rc32434_rst.h     2006-01-10 00:32:33.000000000 +0100
+diff -Nur linux-2.6.17/include/asm-mips/idt-boards/rc32434/rc32434_rst.h linux-2.6.17-owrt/include/asm-mips/idt-boards/rc32434/rc32434_rst.h
+--- linux-2.6.17/include/asm-mips/idt-boards/rc32434/rc32434_rst.h     1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.17-owrt/include/asm-mips/idt-boards/rc32434/rc32434_rst.h        2006-06-18 12:44:28.000000000 +0200
 @@ -0,0 +1,119 @@
 +/**************************************************************************
 + *
@@ -9339,9 +8134,9 @@ diff -Nur linux-2.6.15/include/asm-mips/idt-boards/rc32434/rc32434_rst.h linux-2
 +      BCV_res15_m             = 0x00008000,
 +} ;
 +#endif        // __IDT_RST_H__
-diff -Nur linux-2.6.15/include/asm-mips/idt-boards/rc32434/rc32434_spi.h linux-2.6.15-openwrt/include/asm-mips/idt-boards/rc32434/rc32434_spi.h
---- linux-2.6.15/include/asm-mips/idt-boards/rc32434/rc32434_spi.h     1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.15-openwrt/include/asm-mips/idt-boards/rc32434/rc32434_spi.h     2006-01-10 00:32:33.000000000 +0100
+diff -Nur linux-2.6.17/include/asm-mips/idt-boards/rc32434/rc32434_spi.h linux-2.6.17-owrt/include/asm-mips/idt-boards/rc32434/rc32434_spi.h
+--- linux-2.6.17/include/asm-mips/idt-boards/rc32434/rc32434_spi.h     1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.17-owrt/include/asm-mips/idt-boards/rc32434/rc32434_spi.h        2006-06-18 12:44:28.000000000 +0200
 @@ -0,0 +1,120 @@
 +/**************************************************************************
 + *
@@ -9463,9 +8258,9 @@ diff -Nur linux-2.6.15/include/asm-mips/idt-boards/rc32434/rc32434_spi.h linux-2
 +      SIOD_pci_m       = 0x00000008,
 +} ;
 +#endif        // __IDT_SPI_H__
-diff -Nur linux-2.6.15/include/asm-mips/idt-boards/rc32434/rc32434_timer.h linux-2.6.15-openwrt/include/asm-mips/idt-boards/rc32434/rc32434_timer.h
---- linux-2.6.15/include/asm-mips/idt-boards/rc32434/rc32434_timer.h   1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.15-openwrt/include/asm-mips/idt-boards/rc32434/rc32434_timer.h   2006-01-10 00:32:33.000000000 +0100
+diff -Nur linux-2.6.17/include/asm-mips/idt-boards/rc32434/rc32434_timer.h linux-2.6.17-owrt/include/asm-mips/idt-boards/rc32434/rc32434_timer.h
+--- linux-2.6.17/include/asm-mips/idt-boards/rc32434/rc32434_timer.h   1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.17-owrt/include/asm-mips/idt-boards/rc32434/rc32434_timer.h      2006-06-18 12:44:28.000000000 +0200
 @@ -0,0 +1,91 @@
 +/**************************************************************************
 + *
@@ -9558,9 +8353,9 @@ diff -Nur linux-2.6.15/include/asm-mips/idt-boards/rc32434/rc32434_timer.h linux
 +} ;
 +#endif        // __IDT_TIM_H__
 +
-diff -Nur linux-2.6.15/include/asm-mips/idt-boards/rc32434/rc32434_uart.h linux-2.6.15-openwrt/include/asm-mips/idt-boards/rc32434/rc32434_uart.h
---- linux-2.6.15/include/asm-mips/idt-boards/rc32434/rc32434_uart.h    1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.15-openwrt/include/asm-mips/idt-boards/rc32434/rc32434_uart.h    2006-01-10 00:32:33.000000000 +0100
+diff -Nur linux-2.6.17/include/asm-mips/idt-boards/rc32434/rc32434_uart.h linux-2.6.17-owrt/include/asm-mips/idt-boards/rc32434/rc32434_uart.h
+--- linux-2.6.17/include/asm-mips/idt-boards/rc32434/rc32434_uart.h    1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.17-owrt/include/asm-mips/idt-boards/rc32434/rc32434_uart.h       2006-06-18 12:44:28.000000000 +0200
 @@ -0,0 +1,189 @@
 +/**************************************************************************
 + *
@@ -9751,9 +8546,9 @@ diff -Nur linux-2.6.15/include/asm-mips/idt-boards/rc32434/rc32434_uart.h linux-
 +} ;
 +
 +#endif        // __IDT_UART_H__
-diff -Nur linux-2.6.15/include/asm-mips/idt-boards/rc32438/rc32438_dma.h linux-2.6.15-openwrt/include/asm-mips/idt-boards/rc32438/rc32438_dma.h
---- linux-2.6.15/include/asm-mips/idt-boards/rc32438/rc32438_dma.h     1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.15-openwrt/include/asm-mips/idt-boards/rc32438/rc32438_dma.h     2006-01-10 00:32:33.000000000 +0100
+diff -Nur linux-2.6.17/include/asm-mips/idt-boards/rc32438/rc32438_dma.h linux-2.6.17-owrt/include/asm-mips/idt-boards/rc32438/rc32438_dma.h
+--- linux-2.6.17/include/asm-mips/idt-boards/rc32438/rc32438_dma.h     1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.17-owrt/include/asm-mips/idt-boards/rc32438/rc32438_dma.h        2006-06-18 12:44:28.000000000 +0200
 @@ -0,0 +1,231 @@
 +/**************************************************************************
 + *
@@ -9986,9 +8781,9 @@ diff -Nur linux-2.6.15/include/asm-mips/idt-boards/rc32438/rc32438_dma.h linux-2
 +#endif        // aws - Compatibility.
 +
 +#endif //__IDT_RC32438_DMA_H__
-diff -Nur linux-2.6.15/include/asm-mips/idt-boards/rc32438/rc32438_dma_v.h linux-2.6.15-openwrt/include/asm-mips/idt-boards/rc32438/rc32438_dma_v.h
---- linux-2.6.15/include/asm-mips/idt-boards/rc32438/rc32438_dma_v.h   1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.15-openwrt/include/asm-mips/idt-boards/rc32438/rc32438_dma_v.h   2006-01-10 00:32:33.000000000 +0100
+diff -Nur linux-2.6.17/include/asm-mips/idt-boards/rc32438/rc32438_dma_v.h linux-2.6.17-owrt/include/asm-mips/idt-boards/rc32438/rc32438_dma_v.h
+--- linux-2.6.17/include/asm-mips/idt-boards/rc32438/rc32438_dma_v.h   1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.17-owrt/include/asm-mips/idt-boards/rc32438/rc32438_dma_v.h      2006-06-18 12:44:28.000000000 +0200
 @@ -0,0 +1,82 @@
 +/**************************************************************************
 + *
@@ -10072,9 +8867,9 @@ diff -Nur linux-2.6.15/include/asm-mips/idt-boards/rc32438/rc32438_dma_v.h linux
 +      rc32438_writel(dma_addr, &ch->dmandptr);
 +}
 +#endif //__IDT_RC32438_DMA_V_H__
-diff -Nur linux-2.6.15/include/asm-mips/idt-boards/rc32438/rc32438_eth.h linux-2.6.15-openwrt/include/asm-mips/idt-boards/rc32438/rc32438_eth.h
---- linux-2.6.15/include/asm-mips/idt-boards/rc32438/rc32438_eth.h     1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.15-openwrt/include/asm-mips/idt-boards/rc32438/rc32438_eth.h     2006-01-10 00:32:33.000000000 +0100
+diff -Nur linux-2.6.17/include/asm-mips/idt-boards/rc32438/rc32438_eth.h linux-2.6.17-owrt/include/asm-mips/idt-boards/rc32438/rc32438_eth.h
+--- linux-2.6.17/include/asm-mips/idt-boards/rc32438/rc32438_eth.h     1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.17-owrt/include/asm-mips/idt-boards/rc32438/rc32438_eth.h        2006-06-18 12:44:28.000000000 +0200
 @@ -0,0 +1,328 @@
 +/**************************************************************************
 + *
@@ -10404,9 +9199,9 @@ diff -Nur linux-2.6.15/include/asm-mips/idt-boards/rc32438/rc32438_eth.h linux-2
 +      ETHTX_cc_m              = 0x001E0000,
 +} ;
 +#endif //__IDT_RC32438_ETH_H__
-diff -Nur linux-2.6.15/include/asm-mips/idt-boards/rc32438/rc32438_eth_v.h linux-2.6.15-openwrt/include/asm-mips/idt-boards/rc32438/rc32438_eth_v.h
---- linux-2.6.15/include/asm-mips/idt-boards/rc32438/rc32438_eth_v.h   1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.15-openwrt/include/asm-mips/idt-boards/rc32438/rc32438_eth_v.h   2006-01-10 00:32:33.000000000 +0100
+diff -Nur linux-2.6.17/include/asm-mips/idt-boards/rc32438/rc32438_eth_v.h linux-2.6.17-owrt/include/asm-mips/idt-boards/rc32438/rc32438_eth_v.h
+--- linux-2.6.17/include/asm-mips/idt-boards/rc32438/rc32438_eth_v.h   1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.17-owrt/include/asm-mips/idt-boards/rc32438/rc32438_eth_v.h      2006-06-18 12:44:28.000000000 +0200
 @@ -0,0 +1,72 @@
 +/**************************************************************************
 + *
@@ -10480,9 +9275,9 @@ diff -Nur linux-2.6.15/include/asm-mips/idt-boards/rc32438/rc32438_eth_v.h linux
 +#define RCVPKT_LENGTH(X)     (((X) & ETHRX_length_m) >> ETHRX_length_b)   /* Length of the received packet */
 +
 +#endif //__IDT_RC32438_ETH_V_H__
-diff -Nur linux-2.6.15/include/asm-mips/idt-boards/rc32438/rc32438_gpio.h linux-2.6.15-openwrt/include/asm-mips/idt-boards/rc32438/rc32438_gpio.h
---- linux-2.6.15/include/asm-mips/idt-boards/rc32438/rc32438_gpio.h    1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.15-openwrt/include/asm-mips/idt-boards/rc32438/rc32438_gpio.h    2006-01-10 00:32:33.000000000 +0100
+diff -Nur linux-2.6.17/include/asm-mips/idt-boards/rc32438/rc32438_gpio.h linux-2.6.17-owrt/include/asm-mips/idt-boards/rc32438/rc32438_gpio.h
+--- linux-2.6.17/include/asm-mips/idt-boards/rc32438/rc32438_gpio.h    1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.17-owrt/include/asm-mips/idt-boards/rc32438/rc32438_gpio.h       2006-06-18 12:44:28.000000000 +0200
 @@ -0,0 +1,257 @@
 +/**************************************************************************
 + *
@@ -10741,9 +9536,9 @@ diff -Nur linux-2.6.15/include/asm-mips/idt-boards/rc32438/rc32438_gpio.h linux-
 +} GPIO_DEFS_t;
 +
 +#endif //__IDT_RC32438_GPIO_H__
-diff -Nur linux-2.6.15/include/asm-mips/idt-boards/rc32438/rc32438.h linux-2.6.15-openwrt/include/asm-mips/idt-boards/rc32438/rc32438.h
---- linux-2.6.15/include/asm-mips/idt-boards/rc32438/rc32438.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.15-openwrt/include/asm-mips/idt-boards/rc32438/rc32438.h 2006-01-10 00:32:33.000000000 +0100
+diff -Nur linux-2.6.17/include/asm-mips/idt-boards/rc32438/rc32438.h linux-2.6.17-owrt/include/asm-mips/idt-boards/rc32438/rc32438.h
+--- linux-2.6.17/include/asm-mips/idt-boards/rc32438/rc32438.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.17-owrt/include/asm-mips/idt-boards/rc32438/rc32438.h    2006-06-18 12:44:28.000000000 +0200
 @@ -0,0 +1,152 @@
 +/**************************************************************************
 + *
@@ -10897,9 +9692,9 @@ diff -Nur linux-2.6.15/include/asm-mips/idt-boards/rc32438/rc32438.h linux-2.6.1
 +      return ret;
 +}
 +#endif //__IDT_RC32438_H__
-diff -Nur linux-2.6.15/include/asm-mips/idt-boards/rc32438/rc32438_pci.h linux-2.6.15-openwrt/include/asm-mips/idt-boards/rc32438/rc32438_pci.h
---- linux-2.6.15/include/asm-mips/idt-boards/rc32438/rc32438_pci.h     1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.15-openwrt/include/asm-mips/idt-boards/rc32438/rc32438_pci.h     2006-01-10 00:32:33.000000000 +0100
+diff -Nur linux-2.6.17/include/asm-mips/idt-boards/rc32438/rc32438_pci.h linux-2.6.17-owrt/include/asm-mips/idt-boards/rc32438/rc32438_pci.h
+--- linux-2.6.17/include/asm-mips/idt-boards/rc32438/rc32438_pci.h     1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.17-owrt/include/asm-mips/idt-boards/rc32438/rc32438_pci.h        2006-06-18 12:44:28.000000000 +0200
 @@ -0,0 +1,510 @@
 +/**************************************************************************
 + *
@@ -11411,9 +10206,9 @@ diff -Nur linux-2.6.15/include/asm-mips/idt-boards/rc32438/rc32438_pci.h linux-2
 +      PCIM_db_m       = 0x00000004,   // inbound or outbound doorbell
 +};
 +
-diff -Nur linux-2.6.15/include/asm-mips/idt-boards/rc32438/rc32438_pci_v.h linux-2.6.15-openwrt/include/asm-mips/idt-boards/rc32438/rc32438_pci_v.h
---- linux-2.6.15/include/asm-mips/idt-boards/rc32438/rc32438_pci_v.h   1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.15-openwrt/include/asm-mips/idt-boards/rc32438/rc32438_pci_v.h   2006-01-10 00:32:33.000000000 +0100
+diff -Nur linux-2.6.17/include/asm-mips/idt-boards/rc32438/rc32438_pci_v.h linux-2.6.17-owrt/include/asm-mips/idt-boards/rc32438/rc32438_pci_v.h
+--- linux-2.6.17/include/asm-mips/idt-boards/rc32438/rc32438_pci_v.h   1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.17-owrt/include/asm-mips/idt-boards/rc32438/rc32438_pci_v.h      2006-06-18 12:44:28.000000000 +0200
 @@ -0,0 +1,190 @@
 +/**************************************************************************
 + *
@@ -11605,9 +10400,9 @@ diff -Nur linux-2.6.15/include/asm-mips/idt-boards/rc32438/rc32438_pci_v.h linux
 +#define       PCITC_DTIMER_VAL        8
 +#define PCITC_RTIMER_VAL      0x10
 +
-diff -Nur linux-2.6.15/include/asm-mips/idt-boards/rc32438/rc32438_timer.h linux-2.6.15-openwrt/include/asm-mips/idt-boards/rc32438/rc32438_timer.h
---- linux-2.6.15/include/asm-mips/idt-boards/rc32438/rc32438_timer.h   1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.15-openwrt/include/asm-mips/idt-boards/rc32438/rc32438_timer.h   2006-01-10 00:32:33.000000000 +0100
+diff -Nur linux-2.6.17/include/asm-mips/idt-boards/rc32438/rc32438_timer.h linux-2.6.17-owrt/include/asm-mips/idt-boards/rc32438/rc32438_timer.h
+--- linux-2.6.17/include/asm-mips/idt-boards/rc32438/rc32438_timer.h   1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.17-owrt/include/asm-mips/idt-boards/rc32438/rc32438_timer.h      2006-06-18 12:44:28.000000000 +0200
 @@ -0,0 +1,91 @@
 +/**************************************************************************
 + *
@@ -11700,9 +10495,9 @@ diff -Nur linux-2.6.15/include/asm-mips/idt-boards/rc32438/rc32438_timer.h linux
 +} ;
 +#endif        //__IDT_RC32438_TIM_H__
 +
-diff -Nur linux-2.6.15/include/asm-mips/mach-generic/irq.h linux-2.6.15-openwrt/include/asm-mips/mach-generic/irq.h
---- linux-2.6.15/include/asm-mips/mach-generic/irq.h   2006-01-03 04:21:10.000000000 +0100
-+++ linux-2.6.15-openwrt/include/asm-mips/mach-generic/irq.h   2006-01-10 00:32:33.000000000 +0100
+diff -Nur linux-2.6.17/include/asm-mips/mach-generic/irq.h linux-2.6.17-owrt/include/asm-mips/mach-generic/irq.h
+--- linux-2.6.17/include/asm-mips/mach-generic/irq.h   2006-06-18 03:49:35.000000000 +0200
++++ linux-2.6.17-owrt/include/asm-mips/mach-generic/irq.h      2006-06-18 12:44:28.000000000 +0200
 @@ -8,6 +8,6 @@
  #ifndef __ASM_MACH_GENERIC_IRQ_H
  #define __ASM_MACH_GENERIC_IRQ_H
@@ -11711,141 +10506,14 @@ diff -Nur linux-2.6.15/include/asm-mips/mach-generic/irq.h linux-2.6.15-openwrt/
 +#define NR_IRQS       256
  
  #endif /* __ASM_MACH_GENERIC_IRQ_H */
-diff -Nur linux-2.6.15/include/linux/init.h linux-2.6.15-openwrt/include/linux/init.h
---- linux-2.6.15/include/linux/init.h  2006-01-03 04:21:10.000000000 +0100
-+++ linux-2.6.15-openwrt/include/linux/init.h  2006-01-10 00:32:33.000000000 +0100
-@@ -86,6 +86,8 @@
-       static initcall_t __initcall_##fn __attribute_used__ \
-       __attribute__((__section__(".initcall" level ".init"))) = fn
-+#define early_initcall(fn)              __define_initcall(".early1",fn)
-+
- #define core_initcall(fn)             __define_initcall("1",fn)
- #define postcore_initcall(fn)         __define_initcall("2",fn)
- #define arch_initcall(fn)             __define_initcall("3",fn)
-diff -Nur linux-2.6.15/include/linux/kernel.h linux-2.6.15-openwrt/include/linux/kernel.h
---- linux-2.6.15/include/linux/kernel.h        2006-01-03 04:21:10.000000000 +0100
-+++ linux-2.6.15-openwrt/include/linux/kernel.h        2006-01-10 00:32:33.000000000 +0100
-@@ -307,6 +307,7 @@
+diff -Nur linux-2.6.17/include/linux/kernel.h linux-2.6.17-owrt/include/linux/kernel.h
+--- linux-2.6.17/include/linux/kernel.h        2006-06-18 03:49:35.000000000 +0200
++++ linux-2.6.17-owrt/include/linux/kernel.h   2006-06-18 12:44:28.000000000 +0200
+@@ -329,6 +329,7 @@
  };
  
  /* Force a compilation error if condition is true */
 +extern void BUILD_BUG(void);
  #define BUILD_BUG_ON(condition) ((void)sizeof(char[1 - 2*!!(condition)]))
  
- #ifdef CONFIG_SYSCTL
-diff -Nur linux-2.6.15/Makefile linux-2.6.15-openwrt/Makefile
---- linux-2.6.15/Makefile      2006-01-03 04:21:10.000000000 +0100
-+++ linux-2.6.15-openwrt/Makefile      2006-01-10 00:32:33.000000000 +0100
-@@ -166,10 +166,7 @@
- # then ARCH is assigned, getting whatever value it gets normally, and 
- # SUBARCH is subsequently ignored.
--SUBARCH := $(shell uname -m | sed -e s/i.86/i386/ -e s/sun4u/sparc64/ \
--                                -e s/arm.*/arm/ -e s/sa110/arm/ \
--                                -e s/s390x/s390/ -e s/parisc64/parisc/ \
--                                -e s/ppc64/powerpc/ )
-+SUBARCH := mips
- # Cross compiling and selecting different set of gcc/bin-utils
- # ---------------------------------------------------------------------------
-diff -Nur linux-2.6.15/drivers/net/natsemi.c linux-2.6.15-openwrt/drivers/net/natsemi.c
---- linux-2.6.15/drivers/net/natsemi.c 2006-01-02 19:21:10.000000000 -0800
-+++ linux-2.6.15-openwrt/drivers/net/natsemi.c 2006-01-10 07:29:49.581994000 -0800
-@@ -771,6 +771,49 @@
- static int netdev_get_eeprom(struct net_device *dev, u8 *buf);
- static struct ethtool_ops ethtool_ops;
-+#ifdef CONFIG_MACH_ARUBA
-+
-+#include <linux/ctype.h>
-+
-+#ifndef ERR
-+#define ERR(fmt, args...) printk("%s: " fmt, __func__, ##args)
-+#endif
-+
-+static int parse_mac_addr(struct net_device *dev, char* macstr)
-+{
-+        int i, j;
-+        unsigned char result, value;
-+
-+        for (i=0; i<6; i++) {
-+                result = 0;
-+                if (i != 5 && *(macstr+2) != ':') {
-+                        ERR("invalid mac address format: %d %c\n",
-+                            i, *(macstr+2));
-+                        return -EINVAL;
-+                }
-+                for (j=0; j<2; j++) {
-+                        if (isxdigit(*macstr) && (value = isdigit(*macstr) ? *macstr-'0' :
-+                                                  toupper(*macstr)-'A'+10) < 16) {
-+                                result = result*16 + value;
-+                                macstr++;
-+                        }
-+                        else {
-+                                ERR("invalid mac address "
-+                                    "character: %c\n", *macstr);
-+                                return -EINVAL;
-+                        }
-+                }
-+
-+                macstr++;
-+                dev->dev_addr[i] = result;
-+        }
-+
-+      dev->dev_addr[5]++;
-+        return 0;
-+}
-+
-+#endif
-+
- static inline void __iomem *ns_ioaddr(struct net_device *dev)
- {
-       return (void __iomem *) dev->base_addr;
-@@ -859,6 +902,7 @@
-               goto err_ioremap;
-       }
-+#ifndef CONFIG_MACH_ARUBA
-       /* Work around the dropped serial bit. */
-       prev_eedata = eeprom_read(ioaddr, 6);
-       for (i = 0; i < 3; i++) {
-@@ -867,6 +911,19 @@
-               dev->dev_addr[i*2+1] = eedata >> 7;
-               prev_eedata = eedata;
-       }
-+#else
-+      {
-+              char mac[32];
-+              unsigned char def_mac[6] = {00, 0x0b, 0x86, 0xba, 0xdb, 0xad};
-+              extern char *getenv(char *e);
-+              memset(mac, 0, 32);
-+              memcpy(mac, getenv("ethaddr"), 17);
-+              if (parse_mac_addr(dev, mac)){
-+                      printk("%s: MAC address not found\n", __func__);
-+                      memcpy(dev->dev_addr, def_mac, 6);
-+              }
-+      }
-+#endif
-       dev->base_addr = (unsigned long __force) ioaddr;
-       dev->irq = irq;
-diff -Nur linux-2.6.15/drivers/net/Makefile linux-2.6.15-openwrt/drivers/net/Makefile
---- linux-2.6.15/drivers/net/Makefile  2006-01-13 09:19:55.000000000 -0800
-+++ linux-2.6.15-openwrt/drivers/net/Makefile  2006-01-09 20:44:10.378339000 -0800
-@@ -35,6 +35,7 @@
- obj-$(CONFIG_OAKNET) += oaknet.o 8390.o
-+obj-$(CONFIG_IDT_RC32434_ETH) += rc32434_eth.o
- obj-$(CONFIG_DGRS) += dgrs.o
- obj-$(CONFIG_VORTEX) += 3c59x.o
- obj-$(CONFIG_TYPHOON) += typhoon.o
-@@ -190,7 +189,6 @@
- obj-$(CONFIG_SMC91X) += smc91x.o
- obj-$(CONFIG_DM9000) += dm9000.o
- obj-$(CONFIG_FEC_8XX) += fec_8xx/
--obj-$(CONFIG_IDT_RC32434_ETH) += rc32434_eth.o
- obj-$(CONFIG_ARM) += arm/
- obj-$(CONFIG_DEV_APPLETALK) += appletalk/
+ /* Trap pasters of __FUNCTION__ at compile-time */