static int __init ks8695_wdt_init(void) { if (ks8695_wdt_settimeout(wdt_time)) { ks8695_wdt_settimeout(WDT_DEFAULT_TIME); pr_info("ks8695_wdt: wdt_time value must be 1 <= wdt_time <= %i" ", using %d\n", wdt_time, WDT_MAX_TIME); } return platform_driver_register(&ks8695wdt_driver); }
static int __init ks8695_wdt_init(void) { /* Check that the heartbeat value is within range; if not reset to the default */ if (ks8695_wdt_settimeout(wdt_time)) { ks8695_wdt_settimeout(WDT_DEFAULT_TIME); pr_info("ks8695_wdt: wdt_time value must be 1 <= wdt_time <= %i" ", using %d\n", wdt_time, WDT_MAX_TIME); } return platform_driver_register(&ks8695wdt_driver); }
/* * 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; } }