summaryrefslogtreecommitdiff
path: root/target/linux/aruba-2.6
diff options
context:
space:
mode:
Diffstat (limited to 'target/linux/aruba-2.6')
-rw-r--r--target/linux/aruba-2.6/Makefile4
-rw-r--r--target/linux/aruba-2.6/patches/000-aruba.patch42
-rw-r--r--target/linux/aruba-2.6/patches/004-wdt.patch126
3 files changed, 132 insertions, 40 deletions
diff --git a/target/linux/aruba-2.6/Makefile b/target/linux/aruba-2.6/Makefile
index b5b220d0f2..e21bf818de 100644
--- a/target/linux/aruba-2.6/Makefile
+++ b/target/linux/aruba-2.6/Makefile
@@ -1,8 +1,8 @@
include $(TOPDIR)/rules.mk
-LINUX_VERSION:=2.6.16.4
+LINUX_VERSION:=2.6.16.7
LINUX_RELEASE:=1
-LINUX_KERNEL_MD5SUM:=cb675279c9711237a06ebb8379a4da27
+LINUX_KERNEL_MD5SUM:=9682b2bd6e02f3087982d7c3f5ba824e
include ../rules.mk
include ./config
diff --git a/target/linux/aruba-2.6/patches/000-aruba.patch b/target/linux/aruba-2.6/patches/000-aruba.patch
index 34fbaf2dec..7bb8a26d7f 100644
--- a/target/linux/aruba-2.6/patches/000-aruba.patch
+++ b/target/linux/aruba-2.6/patches/000-aruba.patch
@@ -45,7 +45,7 @@ diff -Nur linux-2.6.16/arch/mips/aruba/Makefile linux-2.6.16-owrt/arch/mips/arub
+# .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
@@ -823,6 +823,7 @@ diff -Nur linux-2.6.16/arch/mips/aruba/setup.c linux-2.6.16-owrt/arch/mips/aruba
+ */
+
+#include <linux/init.h>
++#include <linux/module.h>
+#include <linux/mm.h>
+#include <linux/sched.h>
+#include <linux/irq.h>
@@ -872,7 +873,6 @@ diff -Nur linux-2.6.16/arch/mips/aruba/setup.c linux-2.6.16-owrt/arch/mips/aruba
+
+extern char * getenv(char *e);
+extern void unlock_ap60_70_flash(void);
-+extern void wdt_merlot_disable(void);
+
+void __init plat_setup(void)
+{
@@ -895,8 +895,6 @@ diff -Nur linux-2.6.16/arch/mips/aruba/setup.c linux-2.6.16-owrt/arch/mips/aruba
+
+ printk("BOARD - %s\n",getenv("boardname"));
+
-+ wdt_merlot_disable();
-+
+ return 0;
+}
+
@@ -909,6 +907,8 @@ diff -Nur linux-2.6.16/arch/mips/aruba/setup.c linux-2.6.16-owrt/arch/mips/aruba
+{
+ return "MIPS IDT32434 - ARUBA";
+}
++
++EXPORT_SYMBOL(get_system_type);
diff -Nur linux-2.6.16/arch/mips/aruba/time.c linux-2.6.16-owrt/arch/mips/aruba/time.c
--- linux-2.6.16/arch/mips/aruba/time.c 1970-01-01 01:00:00.000000000 +0100
+++ linux-2.6.16-owrt/arch/mips/aruba/time.c 2006-03-20 14:25:10.000000000 +0100
@@ -1021,40 +1021,6 @@ diff -Nur linux-2.6.16/arch/mips/aruba/time.c linux-2.6.16-owrt/arch/mips/aruba/
+ timer_interrupt(irq, NULL, regs);
+ irq_exit();
+}
-diff -Nur linux-2.6.16/arch/mips/aruba/wdt_merlot.c linux-2.6.16-owrt/arch/mips/aruba/wdt_merlot.c
---- linux-2.6.16/arch/mips/aruba/wdt_merlot.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.16-owrt/arch/mips/aruba/wdt_merlot.c 2006-03-20 14:25:10.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.16/arch/mips/Kconfig linux-2.6.16-owrt/arch/mips/Kconfig
--- linux-2.6.16/arch/mips/Kconfig 2006-03-20 06:53:29.000000000 +0100
+++ linux-2.6.16-owrt/arch/mips/Kconfig 2006-03-20 14:25:10.000000000 +0100
diff --git a/target/linux/aruba-2.6/patches/004-wdt.patch b/target/linux/aruba-2.6/patches/004-wdt.patch
new file mode 100644
index 0000000000..15fbffa043
--- /dev/null
+++ b/target/linux/aruba-2.6/patches/004-wdt.patch
@@ -0,0 +1,126 @@
+diff -Nur linux-2.6.15.1/drivers/char/watchdog/wdt_merlot.c linux-2.6.15.1-openwrt/drivers/char/watchdog/wdt_merlot.c
+--- linux-2.6.15.1/drivers/char/watchdog/wdt_merlot.c 2006-01-26 21:14:02.204626250 -0800
++++ linux-2.6.15.1-openwrt/drivers/char/watchdog/wdt_merlot.c 2006-02-02 20:31:43.000000000 -0800
+@@ -0,0 +1,110 @@
++#include <linux/config.h>
++#include <linux/module.h>
++#include <linux/types.h>
++#include <linux/miscdevice.h>
++#include <linux/watchdog.h>
++#include <linux/fs.h>
++
++#include <asm/io.h>
++#include <asm/uaccess.h>
++#include <asm/system.h>
++#include <asm/bootinfo.h>
++
++extern unsigned long mips_machtype;
++
++static unsigned long wdt_is_open;
++static struct timer_list wdt_timer;
++
++static void wdt_merlot_refresh(void)
++{
++ volatile __u32 *wdt;
++ switch (mips_machtype) {
++ case MACH_ARUBA_AP70:
++ wdt = (__u32 *) 0xb8030034;
++ *wdt = 0x10000000;
++ break;
++ default:
++ wdt = (__u32 *) 0xbc00300c;
++ *wdt = 0x40000000;
++ break;
++ }
++}
++
++static void wdt_merlot_timer_fn(unsigned long data)
++{
++ wdt_merlot_refresh();
++ if (!test_bit(1, &wdt_is_open))
++ mod_timer(&wdt_timer, jiffies + HZ);
++}
++
++static int wdt_merlot_setup_timer(void)
++{
++
++ init_timer(&wdt_timer);
++ wdt_timer.function = wdt_merlot_timer_fn;
++ wdt_timer.data = 0;
++ wdt_timer.expires = jiffies + HZ;
++ add_timer(&wdt_timer);
++ return 0;
++}
++
++static int wdt_open(struct inode *inode, struct file *file)
++{
++ if (test_and_set_bit(0, &wdt_is_open))
++ return -EBUSY;
++ set_bit(1, &wdt_is_open);
++ return nonseekable_open(inode, file);
++}
++
++static ssize_t wdt_write(struct file *file, const char __user * buf, size_t count, loff_t * ppos)
++{
++ if (count) /* something was written */
++ wdt_merlot_refresh();
++ return count;
++}
++
++static int wdt_release(struct inode *inode, struct file *file)
++{
++ clear_bit(0, &wdt_is_open);
++ return 0;
++}
++
++static struct file_operations wdt_fops = {
++ .owner = THIS_MODULE,
++ .llseek = no_llseek,
++ .write = wdt_write,
++ .open = wdt_open,
++ .release = wdt_release,
++};
++
++static struct miscdevice wdt_miscdev = {
++ .minor = WATCHDOG_MINOR,
++ .name = "watchdog",
++ .fops = &wdt_fops,
++};
++
++static void __exit wdt_exit(void)
++{
++ misc_deregister(&wdt_miscdev);
++}
++
++static int __init wdt_init(void)
++{
++ int ret;
++ ret = misc_register(&wdt_miscdev);
++ if (ret) {
++ printk(KERN_ERR
++ "wdt: cannot register miscdev on minor=%d (err=%d)\n",
++ WATCHDOG_MINOR, ret);
++ misc_deregister(&wdt_miscdev);
++ goto out;
++ }
++ printk("wdt: registered with refresh\n");
++ wdt_merlot_refresh();
++ wdt_merlot_setup_timer();
++ out:
++ return ret;
++}
++
++module_init(wdt_init);
++module_exit(wdt_exit);
+diff -Nur linux-2.6.15.3/drivers/char/watchdog/Makefile linux-2.6.15.3-openwrt/drivers/char/watchdog/Makefile
+--- linux-2.6.15.3/drivers/char/watchdog/Makefile 2006-02-22 10:04:18.596278000 -0800
++++ linux-2.6.15.3-openwrt/drivers/char/watchdog/Makefile 2006-02-22 10:06:21.400960000 -0800
+@@ -71,5 +71,8 @@
+
+ # SPARC64 Architecture
+
++# Aruba Architecture
++obj-$(CONFIG_MACH_ARUBA) += wdt_merlot.o
++
+ # Architecture Independant
+ obj-$(CONFIG_SOFT_WATCHDOG) += softdog.o