static int s3c2410wdt_cpufreq_transition(struct notifier_block *nb, unsigned long val, void *data) { if (!s3c2410wdt_is_running()) return 0; if (val == CPUFREQ_PRECHANGE) { /* To ensure that over the change we don't cause the * watchdog to trigger, we perform an keep-alive if * the watchdog is running. */ s3c2410wdt_keepalive(&s3c2410_wdd); } else if (val == CPUFREQ_POSTCHANGE) { /* Exynos4 do not change pclk freq after boot, so don't need to do this */ #if !defined (CONFIG_MX_SERIAL_TYPE) && !defined(CONFIG_MX2_SERIAL_TYPE) int ret; s3c2410wdt_stop(&s3c2410_wdd); ret = s3c2410wdt_set_heartbeat(&s3c2410_wdd, s3c2410_wdd.timeout); if (ret >= 0) { s3c2410wdt_start(&s3c2410_wdd); } else { dev_err(wdt_dev, "cannot set new value for timeout %d\n", s3c2410_wdd.timeout); return ret; } #endif } return 0; }
static int s3c2410wdt_cpufreq_transition(struct notifier_block *nb, unsigned long val, void *data) { int ret; if (!s3c2410wdt_is_running()) goto done; if (val == CPUFREQ_PRECHANGE) { /* To ensure that over the change we don't cause the * watchdog to trigger, we perform an keep-alive if * the watchdog is running. */ s3c2410wdt_keepalive(&s3c2410_wdd); } else if (val == CPUFREQ_POSTCHANGE) { s3c2410wdt_stop(&s3c2410_wdd); ret = s3c2410wdt_set_heartbeat(&s3c2410_wdd, s3c2410_wdd.timeout); if (ret >= 0) s3c2410wdt_start(&s3c2410_wdd); else goto err; } done: return 0; err: dev_err(wdt_dev, "cannot set new value for timeout %d\n", s3c2410_wdd.timeout); return ret; }