[WATCHDOG] at32ap700x_wdt.c - timeout module parameter patch

integrate the timeout/heartbeat as a module parameter and not as
a CONFIG_* value.

Signed-off-by: Hans-Christian Egtvedt <hcegtvedt@atmel.com>
Cc: Haavard Skinnemoen <hskinnemoen@atmel.com>
Signed-off-by: Wim Van Sebroeck <wim@iguana.be>
Cc: Andrew Morton <akpm@linux-foundation.org>
This commit is contained in:
Wim Van Sebroeck 2007-06-18 22:49:35 +02:00
parent c0ead7e0ff
commit 726c9f611a
2 changed files with 13 additions and 16 deletions

View File

@ -196,17 +196,6 @@ config AT32AP700X_WDT
Watchdog timer embedded into AT32AP700x devices. This will reboot Watchdog timer embedded into AT32AP700x devices. This will reboot
your system when the timeout is reached. your system when the timeout is reached.
config AT32AP700X_WDT_TIMEOUT
int "Timeout value for AT32AP700x watchdog"
depends on AT32AP700X_WDT
default "2"
range 1 2
help
Sets the timeout value for the watchdog in AT32AP700x devices.
Limited by hardware to be 1 or 2 seconds.
Set to 2 seconds by default.
# X86 (i386 + ia64 + x86_64) Architecture # X86 (i386 + ia64 + x86_64) Architecture
config ACQUIRE_WDT config ACQUIRE_WDT

View File

@ -20,8 +20,15 @@
#include <linux/io.h> #include <linux/io.h>
#define TIMEOUT_MIN 1 #define TIMEOUT_MIN 1
#define TIMEOUT_DEFAULT CONFIG_AT32AP700X_WDT_TIMEOUT
#define TIMEOUT_MAX 2 #define TIMEOUT_MAX 2
#define TIMEOUT_DEFAULT TIMEOUT_MAX
/* module parameters */
static int timeout = TIMEOUT_DEFAULT;
module_param(timeout, int, 0);
MODULE_PARM_DESC(timeout,
"Timeout value. Limited to be 1 or 2 seconds. (default="
__MODULE_STRING(TIMEOUT_DEFAULT) ")");
/* Watchdog registers and write/read macro */ /* Watchdog registers and write/read macro */
#define WDT_CTRL 0x00 #define WDT_CTRL 0x00
@ -233,11 +240,11 @@ static int __init at32_wdt_probe(struct platform_device *pdev)
wdt->miscdev.name = "watchdog"; wdt->miscdev.name = "watchdog";
wdt->miscdev.fops = &at32_wdt_fops; wdt->miscdev.fops = &at32_wdt_fops;
if (at32_wdt_settimeout(TIMEOUT_DEFAULT)) { if (at32_wdt_settimeout(timeout)) {
at32_wdt_settimeout(TIMEOUT_MAX); at32_wdt_settimeout(TIMEOUT_DEFAULT);
dev_dbg(&pdev->dev, dev_dbg(&pdev->dev,
"default timeout invalid, set to %d sec.\n", "default timeout invalid, set to %d sec.\n",
TIMEOUT_MAX); TIMEOUT_DEFAULT);
} }
ret = misc_register(&wdt->miscdev); ret = misc_register(&wdt->miscdev);
@ -248,7 +255,8 @@ static int __init at32_wdt_probe(struct platform_device *pdev)
platform_set_drvdata(pdev, wdt); platform_set_drvdata(pdev, wdt);
wdt->miscdev.parent = &pdev->dev; wdt->miscdev.parent = &pdev->dev;
dev_info(&pdev->dev, "AT32AP700X WDT at 0x%p\n", wdt->regs); dev_info(&pdev->dev, "AT32AP700X WDT at 0x%p, timeout %d sec\n",
wdt->regs, wdt->timeout);
return 0; return 0;