diff options
Diffstat (limited to 'target/linux/omap24xx/patches-2.6.38/535-cbus-retu-wdt-cleanup.patch')
-rw-r--r-- | target/linux/omap24xx/patches-2.6.38/535-cbus-retu-wdt-cleanup.patch | 194 |
1 files changed, 194 insertions, 0 deletions
diff --git a/target/linux/omap24xx/patches-2.6.38/535-cbus-retu-wdt-cleanup.patch b/target/linux/omap24xx/patches-2.6.38/535-cbus-retu-wdt-cleanup.patch new file mode 100644 index 0000000000..4b650686fd --- /dev/null +++ b/target/linux/omap24xx/patches-2.6.38/535-cbus-retu-wdt-cleanup.patch @@ -0,0 +1,194 @@ +Index: linux-2.6.38-rc6/drivers/cbus/retu-wdt.c +=================================================================== +--- linux-2.6.38-rc6.orig/drivers/cbus/retu-wdt.c 2011-03-02 16:49:51.231863891 +0100 ++++ linux-2.6.38-rc6/drivers/cbus/retu-wdt.c 2011-03-02 16:53:47.189454637 +0100 +@@ -52,7 +52,6 @@ static DEFINE_MUTEX(retu_wdt_mutex); + + /* Current period of watchdog */ + static unsigned int period_val = RETU_WDT_DEFAULT_TIMER; +-static int counter_param = RETU_WDT_MAX_TIMER; + + struct retu_wdt_dev { + struct device *dev; +@@ -109,56 +108,6 @@ static void retu_wdt_ping_work(struct wo + retu_wdt_ping_enable(wdev); + } + +-static ssize_t retu_wdt_period_show(struct device *dev, +- struct device_attribute *attr, char *buf) +-{ +- /* Show current max counter */ +- return sprintf(buf, "%u\n", (u16)period_val); +-} +- +-/* +- * Note: This inteface is non-standard and likely to disappear! +- * Use /dev/watchdog instead, that's the standard. +- */ +-static ssize_t retu_wdt_period_store(struct device *dev, +- struct device_attribute *attr, +- const char *buf, size_t count) +-{ +- unsigned int new_period; +- int ret; +- +-#ifdef CONFIG_WATCHDOG_NOWAYOUT +- retu_wdt_ping_disable(retu_wdt); +-#endif +- +- if (sscanf(buf, "%u", &new_period) != 1) { +- printk(KERN_ALERT "retu_wdt_period_store: Invalid input\n"); +- return -EINVAL; +- } +- +- ret = retu_modify_counter(new_period); +- if (ret < 0) +- return ret; +- +- return strnlen(buf, count); +-} +- +-static ssize_t retu_wdt_counter_show(struct device *dev, +- struct device_attribute *attr, char *buf) +-{ +- u16 counter; +- +- /* Show current value in watchdog counter */ +- counter = retu_read_reg(dev, RETU_REG_WATCHDOG); +- +- /* Only the 5 LSB are important */ +- return snprintf(buf, PAGE_SIZE, "%u\n", (counter & 0x3F)); +-} +- +-static DEVICE_ATTR(period, S_IRUGO | S_IWUSR, retu_wdt_period_show, \ +- retu_wdt_period_store); +-static DEVICE_ATTR(counter, S_IRUGO, retu_wdt_counter_show, NULL); +- + static int retu_wdt_open(struct inode *inode, struct file *file) + { + if (test_and_set_bit(0, &retu_wdt->users)) +@@ -175,9 +124,9 @@ static int retu_wdt_release(struct inode + struct retu_wdt_dev *wdev = file->private_data; + + #ifndef CONFIG_WATCHDOG_NOWAYOUT +- retu_wdt_ping_enable(retu_wdt); ++ retu_wdt_ping_enable(wdev); + #endif +- clear_bit(0, &retu_wdt->users); ++ clear_bit(0, &wdev->users); + + return 0; + } +@@ -232,18 +181,6 @@ static long retu_wdt_ioctl(struct file * + return 0; + } + +-/* Start kicking retu watchdog until user space starts doing the kicking */ +-static int __devinit retu_wdt_ping(void) +-{ +-#ifdef CONFIG_WATCHDOG_NOWAYOUT +- retu_modify_counter(RETU_WDT_MAX_TIMER); +-#else +- retu_wdt_ping_enable(retu_wdt); +-#endif +- +- return 0; +-} +- + static const struct file_operations retu_wdt_fops = { + .owner = THIS_MODULE, + .write = retu_wdt_write, +@@ -252,8 +189,6 @@ static const struct file_operations retu + .release = retu_wdt_release, + }; + +-/*----------------------------------------------------------------------------*/ +- + static int __init retu_wdt_probe(struct platform_device *pdev) + { + struct retu_wdt_dev *wdev; +@@ -265,18 +200,6 @@ static int __init retu_wdt_probe(struct + + wdev->dev = &pdev->dev; + +- ret = device_create_file(&pdev->dev, &dev_attr_period); +- if (ret) { +- dev_err(&pdev->dev, "Error creating sysfs period\n"); +- goto free1; +- } +- +- ret = device_create_file(&pdev->dev, &dev_attr_counter); +- if (ret) { +- dev_err(&pdev->dev, "Error creating sysfs counter\n"); +- goto free2; +- } +- + platform_set_drvdata(pdev, wdev); + retu_wdt = wdev; + wdev->retu_wdt_miscdev.parent = &pdev->dev; +@@ -286,38 +209,21 @@ static int __init retu_wdt_probe(struct + + ret = misc_register(&(wdev->retu_wdt_miscdev)); + if (ret) +- goto free3; ++ goto err_free_wdev; + + INIT_DELAYED_WORK(&wdev->ping_work, retu_wdt_ping_work); + +- /* passed as module parameter? */ +- ret = retu_modify_counter(counter_param); +- if (ret == -EINVAL) { +- ret = retu_modify_counter(RETU_WDT_DEFAULT_TIMER); +- dev_dbg(&pdev->dev, "Initializing to default value\n"); +- } +- +- /* Kick the watchdog for kernel booting to finish */ ++ /* Kick the watchdog for kernel booting to finish. ++ * If nowayout is not set, we start the ping work. */ ++#ifdef CONFIG_WATCHDOG_NOWAYOUT + retu_modify_counter(RETU_WDT_MAX_TIMER); +- +- ret = retu_wdt_ping(); +- if (ret < 0) { +- dev_err(&pdev->dev, "Failed to ping\n"); +- goto free4; +- } ++#else ++ retu_wdt_ping_enable(retu_wdt); ++#endif + + return 0; + +-free4: +- misc_deregister(&wdev->retu_wdt_miscdev); +- +-free3: +- device_remove_file(&pdev->dev, &dev_attr_counter); +- +-free2: +- device_remove_file(&pdev->dev, &dev_attr_period); +- +-free1: ++err_free_wdev: + kfree(wdev); + + return ret; +@@ -329,8 +235,6 @@ static int __devexit retu_wdt_remove(str + + wdev = platform_get_drvdata(pdev); + misc_deregister(&wdev->retu_wdt_miscdev); +- device_remove_file(&pdev->dev, &dev_attr_period); +- device_remove_file(&pdev->dev, &dev_attr_counter); + cancel_delayed_work_sync(&wdev->ping_work); + kfree(wdev); + +@@ -356,9 +260,7 @@ static void __exit retu_wdt_exit(void) + + module_init(retu_wdt_init); + module_exit(retu_wdt_exit); +-module_param(counter_param, int, 0); + + MODULE_DESCRIPTION("Retu WatchDog"); + MODULE_AUTHOR("Amit Kucheria"); + MODULE_LICENSE("GPL"); +- |