X-Git-Url: https://git.rohieb.name/openwrt.git/blobdiff_plain/c92885c466d11dc3b8e2837a8be1fd3b6b7e2e01..e1d447b01722ddc24f570134664ddcd0f1a230eb:/target/linux/aruba-2.6/patches/004-wdt.patch diff --git a/target/linux/aruba-2.6/patches/004-wdt.patch b/target/linux/aruba-2.6/patches/004-wdt.patch index 2f034afbe..74731b2d3 100644 --- a/target/linux/aruba-2.6/patches/004-wdt.patch +++ b/target/linux/aruba-2.6/patches/004-wdt.patch @@ -1,117 +1,3 @@ -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 -+#include -+#include -+#include -+#include -+#include -+ -+#include -+#include -+#include -+#include -+ -+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