/* * Close the watchdog device. * If CONFIG_WATCHDOG_NOWAYOUT is NOT defined then the watchdog is also * disabled. */ static int ks8695_wdt_close(struct inode *inode, struct file *file) { /* Disable the watchdog when file is closed */ if (!nowayout) ks8695_wdt_stop(); clear_bit(0, &ks8695wdt_busy); return 0; }
static int ks8695_wdt_close(struct inode *inode, struct file *file) { if (!nowayout) ks8695_wdt_stop(); clear_bit(0, &ks8695wdt_busy); return 0; }
/* * Handle commands from user-space. */ static long ks8695_wdt_ioctl(struct file *file, unsigned int cmd, unsigned long arg) { void __user *argp = (void __user *)arg; int __user *p = argp; int new_value; switch (cmd) { case WDIOC_GETSUPPORT: return copy_to_user(argp, &ks8695_wdt_info, sizeof(ks8695_wdt_info)) ? -EFAULT : 0; case WDIOC_GETSTATUS: case WDIOC_GETBOOTSTATUS: return put_user(0, p); case WDIOC_SETOPTIONS: if (get_user(new_value, p)) return -EFAULT; if (new_value & WDIOS_DISABLECARD) ks8695_wdt_stop(); if (new_value & WDIOS_ENABLECARD) ks8695_wdt_start(); return 0; case WDIOC_KEEPALIVE: ks8695_wdt_reload(); /* pat the watchdog */ return 0; case WDIOC_SETTIMEOUT: if (get_user(new_value, p)) return -EFAULT; if (ks8695_wdt_settimeout(new_value)) return -EINVAL; /* Enable new time value */ ks8695_wdt_start(); /* Return current value */ return put_user(wdt_time, p); case WDIOC_GETTIMEOUT: return put_user(wdt_time, p); default: return -ENOTTY; } }
static int ks8695wdt_suspend(struct platform_device *pdev, pm_message_t message) { ks8695_wdt_stop(); return 0; }
static void ks8695wdt_shutdown(struct platform_device *pdev) { ks8695_wdt_stop(); }