[PATCH v5 6/8] watchdog: at91sam9_wdt: add timeout-sec property binding
Nicolas Ferre
nicolas.ferre at atmel.com
Tue Nov 20 08:01:03 EST 2012
On 11/19/2012 03:10 PM, Fabio Porcedda :
> Tested on at91sam9260 board (evk-pro3).
>
> Signed-off-by: Fabio Porcedda <fabio.porcedda at gmail.com>
> Cc: Andrew Victor <linux at maxim.org.za>
> Cc: Nicolas Ferre <nicolas.ferre at atmel.com>
Seems good:
Acked-by: Nicolas Ferre <nicolas.ferre at atmel.com>
> Cc: Jean-Christophe PLAGNIOL-VILLARD <plagnioj at jcrosoft.com>
> ---
> Documentation/devicetree/bindings/watchdog/atmel-wdt.txt | 4 ++++
> drivers/watchdog/Kconfig | 1 +
> drivers/watchdog/at91sam9_wdt.c | 16 +++++++++++++---
> 3 files changed, 18 insertions(+), 3 deletions(-)
>
> diff --git a/Documentation/devicetree/bindings/watchdog/atmel-wdt.txt b/Documentation/devicetree/bindings/watchdog/atmel-wdt.txt
> index 2957ebb..fcdd48f 100644
> --- a/Documentation/devicetree/bindings/watchdog/atmel-wdt.txt
> +++ b/Documentation/devicetree/bindings/watchdog/atmel-wdt.txt
> @@ -7,9 +7,13 @@ Required properties:
> - reg: physical base address of the controller and length of memory mapped
> region.
>
> +Optional properties:
> +- timeout-sec: contains the watchdog timeout in seconds.
> +
> Example:
>
> watchdog at fffffd40 {
> compatible = "atmel,at91sam9260-wdt";
> reg = <0xfffffd40 0x10>;
> + timeout-sec = <10>;
> };
> diff --git a/drivers/watchdog/Kconfig b/drivers/watchdog/Kconfig
> index ad1bb93..dda695f 100644
> --- a/drivers/watchdog/Kconfig
> +++ b/drivers/watchdog/Kconfig
> @@ -114,6 +114,7 @@ config AT91RM9200_WATCHDOG
> config AT91SAM9X_WATCHDOG
> tristate "AT91SAM9X / AT91CAP9 watchdog"
> depends on ARCH_AT91 && !ARCH_AT91RM9200
> + select WATCHDOG_CORE
> help
> Watchdog timer embedded into AT91SAM9X and AT91CAP9 chips. This will
> reboot your system when the timeout is reached.
> diff --git a/drivers/watchdog/at91sam9_wdt.c b/drivers/watchdog/at91sam9_wdt.c
> index dc42e44..d864dc4 100644
> --- a/drivers/watchdog/at91sam9_wdt.c
> +++ b/drivers/watchdog/at91sam9_wdt.c
> @@ -57,8 +57,10 @@
> #define WDT_TIMEOUT (HZ/2)
>
> /* User land timeout */
> +#define MIN_HEARTBEAT 1
> +#define MAX_HEARTBEAT 16
> #define WDT_HEARTBEAT 15
> -static int heartbeat = WDT_HEARTBEAT;
> +static int heartbeat;
> module_param(heartbeat, int, 0);
> MODULE_PARM_DESC(heartbeat, "Watchdog heartbeats in seconds. "
> "(default = " __MODULE_STRING(WDT_HEARTBEAT) ")");
> @@ -255,6 +257,12 @@ static struct miscdevice at91wdt_miscdev = {
> .fops = &at91wdt_fops,
> };
>
> +static struct watchdog_device at91wdt_wdd __initdata = {
> + .timeout = WDT_HEARTBEAT,
> + .min_timeout = MIN_HEARTBEAT,
> + .max_timeout = MAX_HEARTBEAT,
> +};
> +
> static int __init at91wdt_probe(struct platform_device *pdev)
> {
> struct resource *r;
> @@ -273,6 +281,8 @@ static int __init at91wdt_probe(struct platform_device *pdev)
> return -ENOMEM;
> }
>
> + watchdog_init_timeout(&at91wdt_wdd, heartbeat, pdev->dev.of_node);
> +
> /* Set watchdog */
> res = at91_wdt_settimeout(ms_to_ticks(WDT_HW_TIMEOUT * 1000));
> if (res)
> @@ -282,12 +292,12 @@ static int __init at91wdt_probe(struct platform_device *pdev)
> if (res)
> return res;
>
> - at91wdt_private.next_heartbeat = jiffies + heartbeat * HZ;
> + at91wdt_private.next_heartbeat = jiffies + at91wdt_wdd.timeout * HZ;
> setup_timer(&at91wdt_private.timer, at91_ping, 0);
> mod_timer(&at91wdt_private.timer, jiffies + WDT_TIMEOUT);
>
> pr_info("enabled (heartbeat=%d sec, nowayout=%d)\n",
> - heartbeat, nowayout);
> + at91wdt_wdd.timeout, nowayout);
>
> return 0;
> }
>
--
Nicolas Ferre
More information about the linux-arm-kernel
mailing list