| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180 |
- --- a/drivers/cbus/retu-wdt.c
- +++ b/drivers/cbus/retu-wdt.c
- @@ -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))
- @@ -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");
- -
|