]> git.karo-electronics.de Git - karo-tx-linux.git/commitdiff
watchdog: add timeout-sec property binding
authorFabio Porcedda <fabio.porcedda@gmail.com>
Thu, 14 Feb 2013 08:14:25 +0000 (09:14 +0100)
committerWim Van Sebroeck <wim@iguana.be>
Mon, 18 Feb 2013 20:10:59 +0000 (21:10 +0100)
this patchset add the timeout-sec property to the following drivers:
orion_wdt, pnx4008_wdt, s3c2410_wdt and at91sam9_wdt.

The at91sam9_wdt is tested on evk-pr3,
the other drivers are compile tested only.

Signed-off-by: Fabio Porcedda <fabio.porcedda@gmail.com>
Cc: Andrew Lunn <andrew@lunn.ch>
Cc: Jason Cooper <jason@lakedaemon.net>
Cc: Wolfram Sang <w.sang@pengutronix.de>
Cc: Masanari Iida <standby24x7@gmail.com>
Cc: Ben Dooks <ben-linux@fluff.org>
Cc: Kukjin Kim <kgene.kim@samsung.com>
Cc: Andrew Victor <linux@maxim.org.za>
Cc: Jean-Christophe PLAGNIOL-VILLARD <plagnioj@jcrosoft.com>
Cc: Nicolas Ferre <nicolas.ferre@atmel.com>
Signed-off-by: Wim Van Sebroeck <wim@iguana.be>
Documentation/devicetree/bindings/watchdog/atmel-wdt.txt
Documentation/devicetree/bindings/watchdog/marvel.txt
Documentation/devicetree/bindings/watchdog/pnx4008-wdt.txt
Documentation/devicetree/bindings/watchdog/samsung-wdt.txt
drivers/watchdog/at91sam9_wdt.c
drivers/watchdog/orion_wdt.c
drivers/watchdog/pnx4008_wdt.c
drivers/watchdog/s3c2410_wdt.c

index 2957ebb5aa716c101a023bd096cb76eb1f7a96ca..fcdd48f7dcffc0f71540dacb48aa4f501c6dd5de 100644 (file)
@@ -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@fffffd40 {
                compatible = "atmel,at91sam9260-wdt";
                reg = <0xfffffd40 0x10>;
+               timeout-sec = <10>;
        };
index 0b2503ab0a056f3dd2825207aef79aad7dac6267..5dc8d30061ce0b9c01347864135c5f0a40763751 100644 (file)
@@ -5,10 +5,15 @@ Required Properties:
 - Compatibility : "marvell,orion-wdt"
 - reg          : Address of the timer registers
 
+Optional properties:
+
+- timeout-sec  : Contains the watchdog timeout in seconds
+
 Example:
 
        wdt@20300 {
                compatible = "marvell,orion-wdt";
                reg = <0x20300 0x28>;
+               timeout-sec = <10>;
                status = "okay";
        };
index 7c7f6887c796a6c4ff367252a21674b28339ddd0..556d06c17c92beb8a40e889679c150163722596c 100644 (file)
@@ -5,9 +5,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@4003C000 {
                compatible = "nxp,pnx4008-wdt";
                reg = <0x4003C000 0x1000>;
+               timeout-sec = <10>;
        };
index 79ead8263ae4e476be63a2da3da06fc60d1f11eb..451127a79dfadac960f034bc16fbdfc3367a4c4e 100644 (file)
@@ -9,3 +9,6 @@ Required properties:
 - reg : base physical address of the controller and length of memory mapped
        region.
 - interrupts : interrupt number to the cpu.
+
+Optional properties:
+- timeout-sec : contains the watchdog timeout in seconds.
index 8066dec8bd90115cd4cc92207e2061dba8d59167..49eaceeae4caa7168b54a07265d7f4a290e34ae0 100644 (file)
@@ -56,7 +56,7 @@
 
 /* User land timeout */
 #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) ")");
@@ -176,6 +176,7 @@ static const struct watchdog_ops at91_wdt_ops = {
 static struct watchdog_device at91_wdt_dev = {
        .info =         &at91_wdt_info,
        .ops =          &at91_wdt_ops,
+       .timeout =      WDT_HEARTBEAT,
        .min_timeout =  1,
        .max_timeout =  0xFFFF,
 };
@@ -194,8 +195,8 @@ static int __init at91wdt_probe(struct platform_device *pdev)
                return -ENOMEM;
        }
 
-       at91_wdt_dev.timeout = heartbeat;
        at91_wdt_dev.parent = &pdev->dev;
+       watchdog_init_timeout(&at91_wdt_dev, heartbeat, &pdev->dev);
        watchdog_set_nowayout(&at91_wdt_dev, nowayout);
 
        /* Set watchdog */
@@ -212,7 +213,7 @@ static int __init at91wdt_probe(struct platform_device *pdev)
        mod_timer(&at91wdt_private.timer, jiffies + WDT_TIMEOUT);
 
        pr_info("enabled (heartbeat=%d sec, nowayout=%d)\n",
-               heartbeat, nowayout);
+               at91_wdt_dev.timeout, nowayout);
 
        return 0;
 }
index 87ed2b9886a358a647f84973cab7a041f2bcbe21..da577980d390cbe5df8343f3de64240b4f04c528 100644 (file)
@@ -140,6 +140,7 @@ static const struct watchdog_ops orion_wdt_ops = {
 static struct watchdog_device orion_wdt = {
        .info = &orion_wdt_info,
        .ops = &orion_wdt_ops,
+       .min_timeout = 1,
 };
 
 static int orion_wdt_probe(struct platform_device *pdev)
@@ -164,12 +165,9 @@ static int orion_wdt_probe(struct platform_device *pdev)
 
        wdt_max_duration = WDT_MAX_CYCLE_COUNT / wdt_tclk;
 
-       if ((heartbeat < 1) || (heartbeat > wdt_max_duration))
-               heartbeat = wdt_max_duration;
-
-       orion_wdt.timeout = heartbeat;
-       orion_wdt.min_timeout = 1;
+       orion_wdt.timeout = wdt_max_duration;
        orion_wdt.max_timeout = wdt_max_duration;
+       watchdog_init_timeout(&orion_wdt, heartbeat, &pdev->dev);
 
        watchdog_set_nowayout(&orion_wdt, nowayout);
        ret = watchdog_register_device(&orion_wdt);
@@ -179,7 +177,7 @@ static int orion_wdt_probe(struct platform_device *pdev)
        }
 
        pr_info("Initial timeout %d sec%s\n",
-               heartbeat, nowayout ? ", nowayout" : "");
+               orion_wdt.timeout, nowayout ? ", nowayout" : "");
        return 0;
 }
 
index dcba5dab6c299b3111ad528ba1f42e8a283dee07..bbc249a3aa353e29df8e4e7e7317147723d5566b 100644 (file)
@@ -142,6 +142,7 @@ static const struct watchdog_ops pnx4008_wdt_ops = {
 static struct watchdog_device pnx4008_wdd = {
        .info = &pnx4008_wdt_ident,
        .ops = &pnx4008_wdt_ops,
+       .timeout = DEFAULT_HEARTBEAT,
        .min_timeout = 1,
        .max_timeout = MAX_HEARTBEAT,
 };
@@ -151,8 +152,7 @@ static int pnx4008_wdt_probe(struct platform_device *pdev)
        struct resource *r;
        int ret = 0;
 
-       if (heartbeat < 1 || heartbeat > MAX_HEARTBEAT)
-               heartbeat = DEFAULT_HEARTBEAT;
+       watchdog_init_timeout(&pnx4008_wdd, heartbeat, &pdev->dev);
 
        r = platform_get_resource(pdev, IORESOURCE_MEM, 0);
        wdt_base = devm_request_and_ioremap(&pdev->dev, r);
@@ -167,7 +167,6 @@ static int pnx4008_wdt_probe(struct platform_device *pdev)
        if (ret)
                goto out;
 
-       pnx4008_wdd.timeout = heartbeat;
        pnx4008_wdd.bootstatus = (readl(WDTIM_RES(wdt_base)) & WDOG_RESET) ?
                        WDIOF_CARDRESET : 0;
        watchdog_set_nowayout(&pnx4008_wdd, nowayout);
@@ -181,7 +180,7 @@ static int pnx4008_wdt_probe(struct platform_device *pdev)
        }
 
        dev_info(&pdev->dev, "PNX4008 Watchdog Timer: heartbeat %d sec\n",
-                       heartbeat);
+                pnx4008_wdd.timeout);
 
        return 0;
 
index 6419c61594fda562a24302393e55ba5bf139725a..c1a221cbeae4eec83a94aeb730b9c5e6d9a540ac 100644 (file)
@@ -53,7 +53,7 @@
 #define CONFIG_S3C2410_WATCHDOG_DEFAULT_TIME   (15)
 
 static bool nowayout   = WATCHDOG_NOWAYOUT;
-static int tmr_margin  = CONFIG_S3C2410_WATCHDOG_DEFAULT_TIME;
+static int tmr_margin;
 static int tmr_atboot  = CONFIG_S3C2410_WATCHDOG_ATBOOT;
 static int soft_noboot;
 static int debug;
@@ -226,6 +226,7 @@ static struct watchdog_ops s3c2410wdt_ops = {
 static struct watchdog_device s3c2410_wdd = {
        .info = &s3c2410_wdt_ident,
        .ops = &s3c2410wdt_ops,
+       .timeout = CONFIG_S3C2410_WATCHDOG_DEFAULT_TIME,
 };
 
 /* interrupt handler code */
@@ -356,7 +357,8 @@ static int s3c2410wdt_probe(struct platform_device *pdev)
        /* see if we can actually set the requested timer margin, and if
         * not, try the default value */
 
-       if (s3c2410wdt_set_heartbeat(&s3c2410_wdd, tmr_margin)) {
+       watchdog_init_timeout(&s3c2410_wdd, tmr_margin,  &pdev->dev);
+       if (s3c2410wdt_set_heartbeat(&s3c2410_wdd, s3c2410_wdd.timeout)) {
                started = s3c2410wdt_set_heartbeat(&s3c2410_wdd,
                                        CONFIG_S3C2410_WATCHDOG_DEFAULT_TIME);