瀏覽代碼

watchdog: hpwdt: Add support for WDIOC_SETOPTIONS

WDIOC_SETOPTIONS makes it possible to disable and re-enable the
watchdog timer while the hpwdt driver is loaded.

Signed-off-by: Jean Delvare <jdelvare@suse.de>
Reviewed-by: Guenter Roeck <linux@roeck-us.net>
Signed-off-by: Wim Van Sebroeck <wim@iguana.be>
Jean Delvare 10 年之前
父節點
當前提交
46c80b20d0
共有 1 個文件被更改,包括 15 次插入1 次删除
  1. 15 1
      drivers/watchdog/hpwdt.c

+ 15 - 1
drivers/watchdog/hpwdt.c

@@ -588,7 +588,7 @@ static long hpwdt_ioctl(struct file *file, unsigned int cmd,
 {
 {
 	void __user *argp = (void __user *)arg;
 	void __user *argp = (void __user *)arg;
 	int __user *p = argp;
 	int __user *p = argp;
-	int new_margin;
+	int new_margin, options;
 	int ret = -ENOTTY;
 	int ret = -ENOTTY;
 
 
 	switch (cmd) {
 	switch (cmd) {
@@ -608,6 +608,20 @@ static long hpwdt_ioctl(struct file *file, unsigned int cmd,
 		ret = 0;
 		ret = 0;
 		break;
 		break;
 
 
+	case WDIOC_SETOPTIONS:
+		ret = get_user(options, p);
+		if (ret)
+			break;
+
+		if (options & WDIOS_DISABLECARD)
+			hpwdt_stop();
+
+		if (options & WDIOS_ENABLECARD) {
+			hpwdt_start();
+			hpwdt_ping();
+		}
+		break;
+
 	case WDIOC_SETTIMEOUT:
 	case WDIOC_SETTIMEOUT:
 		ret = get_user(new_margin, p);
 		ret = get_user(new_margin, p);
 		if (ret)
 		if (ret)