* [PATCH v8 0/7] watchdog: dt: add support for the timeout-sec dt property
@ 2013-02-13 12:22 Fabio Porcedda
2013-02-13 12:22 ` [PATCH v8 1/7] watchdog: core: add and use watchdog_is_valid_timeout function Fabio Porcedda
` (7 more replies)
0 siblings, 8 replies; 9+ messages in thread
From: Fabio Porcedda @ 2013-02-13 12:22 UTC (permalink / raw)
To: Wim Van Sebroeck, linux-watchdog, linux-arm-kernel, Nicolas Ferre,
Jean-Christophe PLAGNIOL-VILLARD, Andrew Victor, Jason Cooper,
Andrew Lunn, Ben Dooks, Kukjin Kim
Cc: devicetree-discuss, Wenyou Yang
Hi all,
this patchset add the timeout-sec property to the watchdog core,
to the at91sam9_wdt driver and on all framework enabled watchdog driver
with dt support.
The at91sam9_wdt is tested on evk-pr3,
the other drivers are compile tested only.
Best regards
Fabio Porcedda
changes:
v8:
- watchdog_is_valid_timeout(): export in watchdog.h
- watchdog_is_valid_timeout(): use in watchdog_set_timeout()
- watchdog_is_valid_timeout(): split patch
- watchdog_init_timeout(): return -EINVAL for out of range values.
- watchdog_init_timeout(): use struct device instead of struct device_node
v7:
- rebase over v3.8-rc2
- remove the patch already merged
v6:
- remove patch for function of_get_timeout_sec as aked by Rob Herring
- add Acked-by: Jason Cooper <jason@lakedaemon.net>
- add Acked-by: Nicolas Ferre <nicolas.ferre@atmel.com>
v5:
- fix codestyle for compilance ti checkpatch.pl about
"ERROR: do not initialise statics to 0 or NULL"
for s3c2410_wdt.c:56 and at91sam9_wdt.c:63
v4:
- add of_get_timeout_sec
- add s3c2410_wdt driver
- split driver patch
- fixed watchdog_init_timeout handling of min_timeout and max_timeout
v3:
- rename watchdog_probe_dt_timeout -> watchdog_init_timeout
- move the watchdog_init_timeout function from inline to watchdog_core.c
- add timeout parameter handling code to watchdog_init_timeout
- add timeout-sec property to the pnx4008-wdt driver
- add two small commit for fixup and cleanup
v2:
- change "timeout" to "timeout-sec" as asked by Jean-Christophe
- at91sam9_wdt: use the new helper function
- at91sam9_wdt: add bounds checking
- watchdog.h: add bounds checking
Fabio Porcedda (7):
watchdog: core: add and use watchdog_is_valid_timeout function
watchdog: core: dt: add support for the timeout-sec dt property
watchdog: orion_wdt: add timeout-sec property binding
watchdog: pnx4008: add timeout-sec property binding
watchdog: s3c2410_wdt: add timeout-sec property binding
watchdog: at91sam9_wdt: add timeout-sec property binding
watchdog: orion_wdt: move the min_timeout initialization
.../devicetree/bindings/watchdog/atmel-wdt.txt | 4 ++
.../devicetree/bindings/watchdog/marvel.txt | 5 +++
.../devicetree/bindings/watchdog/pnx4008-wdt.txt | 4 ++
.../devicetree/bindings/watchdog/samsung-wdt.txt | 3 ++
Documentation/watchdog/watchdog-kernel-api.txt | 10 +++++
drivers/watchdog/Kconfig | 1 +
drivers/watchdog/at91sam9_wdt.c | 16 ++++++--
drivers/watchdog/orion_wdt.c | 10 ++---
drivers/watchdog/pnx4008_wdt.c | 7 ++--
drivers/watchdog/s3c2410_wdt.c | 6 ++-
drivers/watchdog/watchdog_core.c | 48 ++++++++++++++++++++++
drivers/watchdog/watchdog_dev.c | 3 +-
include/linux/watchdog.h | 4 ++
13 files changed, 104 insertions(+), 17 deletions(-)
--
1.8.1.1
^ permalink raw reply [flat|nested] 9+ messages in thread
* [PATCH v8 1/7] watchdog: core: add and use watchdog_is_valid_timeout function
2013-02-13 12:22 [PATCH v8 0/7] watchdog: dt: add support for the timeout-sec dt property Fabio Porcedda
@ 2013-02-13 12:22 ` Fabio Porcedda
2013-02-13 12:22 ` [PATCH v8 2/7] watchdog: core: dt: add support for the timeout-sec dt property Fabio Porcedda
` (6 subsequent siblings)
7 siblings, 0 replies; 9+ messages in thread
From: Fabio Porcedda @ 2013-02-13 12:22 UTC (permalink / raw)
To: Wim Van Sebroeck, linux-watchdog, linux-arm-kernel, Nicolas Ferre,
Jean-Christophe PLAGNIOL-VILLARD, Andrew Victor, Jason Cooper,
Andrew Lunn, Ben Dooks, Kukjin Kim
Cc: devicetree-discuss, Wenyou Yang
Signed-off-by: Fabio Porcedda <fabio.porcedda@gmail.com>
---
drivers/watchdog/watchdog_core.c | 14 ++++++++++++++
drivers/watchdog/watchdog_dev.c | 3 +--
include/linux/watchdog.h | 2 ++
3 files changed, 17 insertions(+), 2 deletions(-)
diff --git a/drivers/watchdog/watchdog_core.c b/drivers/watchdog/watchdog_core.c
index 3796434..f10fa31 100644
--- a/drivers/watchdog/watchdog_core.c
+++ b/drivers/watchdog/watchdog_core.c
@@ -43,6 +43,20 @@ static DEFINE_IDA(watchdog_ida);
static struct class *watchdog_class;
/**
+ * watchdog_is_valid_timeout() - check if the timeout is within a valid range
+ * @timeout: value to check
+ */
+bool watchdog_is_valid_timeout(struct watchdog_device *wdd, uint timeout)
+{
+ if (wdd->min_timeout < wdd->max_timeout)
+ return (wdd->min_timeout <= timeout) &&
+ (timeout <= wdd->max_timeout);
+ else
+ return (timeout > 0);
+}
+EXPORT_SYMBOL_GPL(watchdog_is_valid_timeout);
+
+/**
* watchdog_register_device() - register a watchdog device
* @wdd: watchdog device
*
diff --git a/drivers/watchdog/watchdog_dev.c b/drivers/watchdog/watchdog_dev.c
index ef8edec..49976f8 100644
--- a/drivers/watchdog/watchdog_dev.c
+++ b/drivers/watchdog/watchdog_dev.c
@@ -200,8 +200,7 @@ static int watchdog_set_timeout(struct watchdog_device *wddev,
!(wddev->info->options & WDIOF_SETTIMEOUT))
return -EOPNOTSUPP;
- if ((wddev->max_timeout != 0) &&
- (timeout < wddev->min_timeout || timeout > wddev->max_timeout))
+ if (!watchdog_is_valid_timeout(wddev, timeout))
return -EINVAL;
mutex_lock(&wddev->lock);
diff --git a/include/linux/watchdog.h b/include/linux/watchdog.h
index 3a9df2f..9ae945e 100644
--- a/include/linux/watchdog.h
+++ b/include/linux/watchdog.h
@@ -130,6 +130,8 @@ static inline void *watchdog_get_drvdata(struct watchdog_device *wdd)
}
/* drivers/watchdog/watchdog_core.c */
+extern bool watchdog_is_valid_timeout(struct watchdog_device *wdd,
+ uint timeout);
extern int watchdog_register_device(struct watchdog_device *);
extern void watchdog_unregister_device(struct watchdog_device *);
--
1.8.1.1
^ permalink raw reply related [flat|nested] 9+ messages in thread
* [PATCH v8 2/7] watchdog: core: dt: add support for the timeout-sec dt property
2013-02-13 12:22 [PATCH v8 0/7] watchdog: dt: add support for the timeout-sec dt property Fabio Porcedda
2013-02-13 12:22 ` [PATCH v8 1/7] watchdog: core: add and use watchdog_is_valid_timeout function Fabio Porcedda
@ 2013-02-13 12:22 ` Fabio Porcedda
2013-02-13 12:22 ` [PATCH v8 3/7] watchdog: orion_wdt: add timeout-sec property binding Fabio Porcedda
` (5 subsequent siblings)
7 siblings, 0 replies; 9+ messages in thread
From: Fabio Porcedda @ 2013-02-13 12:22 UTC (permalink / raw)
To: Wim Van Sebroeck, linux-watchdog, linux-arm-kernel, Nicolas Ferre,
Jean-Christophe PLAGNIOL-VILLARD, Andrew Victor, Jason Cooper,
Andrew Lunn, Ben Dooks, Kukjin Kim
Cc: devicetree-discuss, Wenyou Yang
Signed-off-by: Fabio Porcedda <fabio.porcedda@gmail.com>
---
Documentation/watchdog/watchdog-kernel-api.txt | 10 ++++++++
drivers/watchdog/watchdog_core.c | 34 ++++++++++++++++++++++++++
include/linux/watchdog.h | 2 ++
3 files changed, 46 insertions(+)
diff --git a/Documentation/watchdog/watchdog-kernel-api.txt b/Documentation/watchdog/watchdog-kernel-api.txt
index 086638f..44098c2 100644
--- a/Documentation/watchdog/watchdog-kernel-api.txt
+++ b/Documentation/watchdog/watchdog-kernel-api.txt
@@ -212,3 +212,13 @@ driver specific data to and a pointer to the data itself.
The watchdog_get_drvdata function allows you to retrieve driver specific data.
The argument of this function is the watchdog device where you want to retrieve
data from. The function returns the pointer to the driver specific data.
+
+To initialize the timeout field use the following function:
+
+extern void watchdog_init_timeout(struct watchdog_device *wdd,
+ unsigned int parm_timeout,
+ struct device_node *node);
+
+The watchdog_init_timeout function allows you to initialize the timeout field
+using the module timeout parameter or retrieving the timeout-sec property from
+the device tree.
diff --git a/drivers/watchdog/watchdog_core.c b/drivers/watchdog/watchdog_core.c
index f10fa31..b9e9148 100644
--- a/drivers/watchdog/watchdog_core.c
+++ b/drivers/watchdog/watchdog_core.c
@@ -36,6 +36,7 @@
#include <linux/init.h> /* For __init/__exit/... */
#include <linux/idr.h> /* For ida_* macros */
#include <linux/err.h> /* For IS_ERR macros */
+#include <linux/of.h> /* For of_get_timeout_sec */
#include "watchdog_core.h" /* For watchdog_dev_register/... */
@@ -57,6 +58,39 @@ bool watchdog_is_valid_timeout(struct watchdog_device *wdd, uint timeout)
EXPORT_SYMBOL_GPL(watchdog_is_valid_timeout);
/**
+ * watchdog_init_timeout() - initialize the timeout field
+ * @parm: timeout module parameter, it takes precedence over the
+ * timeout-sec property.
+ * @node: Retrieve the timeout-sec property only if the parm_timeout
+ * is out of bounds.
+ */
+int watchdog_init_timeout(struct watchdog_device *wdd, uint parm,
+ struct device *dev)
+{
+ uint timeout = 0;
+ int ret = 0;
+
+ if (watchdog_is_valid_timeout(wdd, parm)) {
+ wdd->timeout = parm;
+ return ret;
+ }
+ if (parm)
+ ret = -EINVAL;
+
+ /* try to get the timeout_sec property */
+ if (!dev->of_node)
+ return ret;
+ of_property_read_u32(dev->of_node, "timeout-sec", &timeout);
+ if (watchdog_is_valid_timeout(wdd, timeout))
+ wdd->timeout = timeout;
+ else
+ ret = -EINVAL;
+
+ return ret;
+}
+EXPORT_SYMBOL_GPL(watchdog_init_timeout);
+
+/**
* watchdog_register_device() - register a watchdog device
* @wdd: watchdog device
*
diff --git a/include/linux/watchdog.h b/include/linux/watchdog.h
index 9ae945e..b1023dd 100644
--- a/include/linux/watchdog.h
+++ b/include/linux/watchdog.h
@@ -132,6 +132,8 @@ static inline void *watchdog_get_drvdata(struct watchdog_device *wdd)
/* drivers/watchdog/watchdog_core.c */
extern bool watchdog_is_valid_timeout(struct watchdog_device *wdd,
uint timeout);
+extern int watchdog_init_timeout(struct watchdog_device *wdd,
+ uint parm_timeout, struct device *dev);
extern int watchdog_register_device(struct watchdog_device *);
extern void watchdog_unregister_device(struct watchdog_device *);
--
1.8.1.1
^ permalink raw reply related [flat|nested] 9+ messages in thread
* [PATCH v8 3/7] watchdog: orion_wdt: add timeout-sec property binding
2013-02-13 12:22 [PATCH v8 0/7] watchdog: dt: add support for the timeout-sec dt property Fabio Porcedda
2013-02-13 12:22 ` [PATCH v8 1/7] watchdog: core: add and use watchdog_is_valid_timeout function Fabio Porcedda
2013-02-13 12:22 ` [PATCH v8 2/7] watchdog: core: dt: add support for the timeout-sec dt property Fabio Porcedda
@ 2013-02-13 12:22 ` Fabio Porcedda
2013-02-13 12:22 ` [PATCH v8 4/7] watchdog: pnx4008: " Fabio Porcedda
` (4 subsequent siblings)
7 siblings, 0 replies; 9+ messages in thread
From: Fabio Porcedda @ 2013-02-13 12:22 UTC (permalink / raw)
To: Wim Van Sebroeck, linux-watchdog, linux-arm-kernel, Nicolas Ferre,
Jean-Christophe PLAGNIOL-VILLARD, Andrew Victor, Jason Cooper,
Andrew Lunn, Ben Dooks, Kukjin Kim
Cc: devicetree-discuss, Wenyou Yang
Only compile tested.
Signed-off-by: Fabio Porcedda <fabio.porcedda@gmail.com>
Cc: Andrew Lunn <andrew@lunn.ch>
Acked-by: Jason Cooper <jason@lakedaemon.net>
---
Documentation/devicetree/bindings/watchdog/marvel.txt | 5 +++++
drivers/watchdog/orion_wdt.c | 8 +++-----
2 files changed, 8 insertions(+), 5 deletions(-)
diff --git a/Documentation/devicetree/bindings/watchdog/marvel.txt b/Documentation/devicetree/bindings/watchdog/marvel.txt
index 0b2503a..5dc8d30 100644
--- a/Documentation/devicetree/bindings/watchdog/marvel.txt
+++ b/Documentation/devicetree/bindings/watchdog/marvel.txt
@@ -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";
};
diff --git a/drivers/watchdog/orion_wdt.c b/drivers/watchdog/orion_wdt.c
index 87ed2b9..3022a38 100644
--- a/drivers/watchdog/orion_wdt.c
+++ b/drivers/watchdog/orion_wdt.c
@@ -164,12 +164,10 @@ 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;
}
--
1.8.1.1
^ permalink raw reply related [flat|nested] 9+ messages in thread
* [PATCH v8 4/7] watchdog: pnx4008: add timeout-sec property binding
2013-02-13 12:22 [PATCH v8 0/7] watchdog: dt: add support for the timeout-sec dt property Fabio Porcedda
` (2 preceding siblings ...)
2013-02-13 12:22 ` [PATCH v8 3/7] watchdog: orion_wdt: add timeout-sec property binding Fabio Porcedda
@ 2013-02-13 12:22 ` Fabio Porcedda
2013-02-13 12:22 ` [PATCH v8 5/7] watchdog: s3c2410_wdt: " Fabio Porcedda
` (3 subsequent siblings)
7 siblings, 0 replies; 9+ messages in thread
From: Fabio Porcedda @ 2013-02-13 12:22 UTC (permalink / raw)
To: Wim Van Sebroeck, linux-watchdog, linux-arm-kernel, Nicolas Ferre,
Jean-Christophe PLAGNIOL-VILLARD, Andrew Victor, Jason Cooper,
Andrew Lunn, Ben Dooks, Kukjin Kim
Cc: devicetree-discuss, Wenyou Yang, Wolfram Sang, Masanari Iida
Only compile tested.
Signed-off-by: Fabio Porcedda <fabio.porcedda@gmail.com>
Cc: Wim Van Sebroeck <wim@iguana.be>
Cc: Wolfram Sang <w.sang@pengutronix.de>
Cc: Masanari Iida <standby24x7@gmail.com>
---
Documentation/devicetree/bindings/watchdog/pnx4008-wdt.txt | 4 ++++
drivers/watchdog/pnx4008_wdt.c | 7 +++----
2 files changed, 7 insertions(+), 4 deletions(-)
diff --git a/Documentation/devicetree/bindings/watchdog/pnx4008-wdt.txt b/Documentation/devicetree/bindings/watchdog/pnx4008-wdt.txt
index 7c7f688..556d06c 100644
--- a/Documentation/devicetree/bindings/watchdog/pnx4008-wdt.txt
+++ b/Documentation/devicetree/bindings/watchdog/pnx4008-wdt.txt
@@ -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>;
};
diff --git a/drivers/watchdog/pnx4008_wdt.c b/drivers/watchdog/pnx4008_wdt.c
index dcba5da..bbc249a 100644
--- a/drivers/watchdog/pnx4008_wdt.c
+++ b/drivers/watchdog/pnx4008_wdt.c
@@ -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;
--
1.8.1.1
^ permalink raw reply related [flat|nested] 9+ messages in thread
* [PATCH v8 5/7] watchdog: s3c2410_wdt: add timeout-sec property binding
2013-02-13 12:22 [PATCH v8 0/7] watchdog: dt: add support for the timeout-sec dt property Fabio Porcedda
` (3 preceding siblings ...)
2013-02-13 12:22 ` [PATCH v8 4/7] watchdog: pnx4008: " Fabio Porcedda
@ 2013-02-13 12:22 ` Fabio Porcedda
2013-02-13 12:22 ` [PATCH v8 6/7] watchdog: at91sam9_wdt: " Fabio Porcedda
` (2 subsequent siblings)
7 siblings, 0 replies; 9+ messages in thread
From: Fabio Porcedda @ 2013-02-13 12:22 UTC (permalink / raw)
To: Wim Van Sebroeck, linux-watchdog, linux-arm-kernel, Nicolas Ferre,
Jean-Christophe PLAGNIOL-VILLARD, Andrew Victor, Jason Cooper,
Andrew Lunn, Ben Dooks, Kukjin Kim
Cc: devicetree-discuss, Wenyou Yang
Only compile tested.
Signed-off-by: Fabio Porcedda <fabio.porcedda@gmail.com>
Cc: Ben Dooks <ben-linux@fluff.org>
Cc: Kukjin Kim <kgene.kim@samsung.com>
---
Documentation/devicetree/bindings/watchdog/samsung-wdt.txt | 3 +++
drivers/watchdog/s3c2410_wdt.c | 6 ++++--
2 files changed, 7 insertions(+), 2 deletions(-)
diff --git a/Documentation/devicetree/bindings/watchdog/samsung-wdt.txt b/Documentation/devicetree/bindings/watchdog/samsung-wdt.txt
index 79ead82..451127a 100644
--- a/Documentation/devicetree/bindings/watchdog/samsung-wdt.txt
+++ b/Documentation/devicetree/bindings/watchdog/samsung-wdt.txt
@@ -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.
diff --git a/drivers/watchdog/s3c2410_wdt.c b/drivers/watchdog/s3c2410_wdt.c
index 6419c61..c1a221c 100644
--- a/drivers/watchdog/s3c2410_wdt.c
+++ b/drivers/watchdog/s3c2410_wdt.c
@@ -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);
--
1.8.1.1
^ permalink raw reply related [flat|nested] 9+ messages in thread
* [PATCH v8 6/7] watchdog: at91sam9_wdt: add timeout-sec property binding
2013-02-13 12:22 [PATCH v8 0/7] watchdog: dt: add support for the timeout-sec dt property Fabio Porcedda
` (4 preceding siblings ...)
2013-02-13 12:22 ` [PATCH v8 5/7] watchdog: s3c2410_wdt: " Fabio Porcedda
@ 2013-02-13 12:22 ` Fabio Porcedda
2013-02-13 12:22 ` [PATCH v8 7/7] watchdog: orion_wdt: move the min_timeout initialization Fabio Porcedda
2013-02-14 7:21 ` [PATCH v8 0/7] watchdog: dt: add support for the timeout-sec dt property Fabio Porcedda
7 siblings, 0 replies; 9+ messages in thread
From: Fabio Porcedda @ 2013-02-13 12:22 UTC (permalink / raw)
To: Wim Van Sebroeck, linux-watchdog, linux-arm-kernel, Nicolas Ferre,
Jean-Christophe PLAGNIOL-VILLARD, Andrew Victor, Jason Cooper,
Andrew Lunn, Ben Dooks, Kukjin Kim
Cc: devicetree-discuss, Wenyou Yang
Tested on at91sam9260 board (evk-pro3).
Signed-off-by: Fabio Porcedda <fabio.porcedda@gmail.com>
Cc: Andrew Victor <linux@maxim.org.za>
Cc: Jean-Christophe PLAGNIOL-VILLARD <plagnioj@jcrosoft.com>
Acked-by: Nicolas Ferre <nicolas.ferre@atmel.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@fffffd40 {
compatible = "atmel,at91sam9260-wdt";
reg = <0xfffffd40 0x10>;
+ timeout-sec = <10>;
};
diff --git a/drivers/watchdog/Kconfig b/drivers/watchdog/Kconfig
index 5e8a034..c36fcb0 100644
--- a/drivers/watchdog/Kconfig
+++ b/drivers/watchdog/Kconfig
@@ -125,6 +125,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 6dad954..29b167a 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);
+
/* 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;
}
--
1.8.1.1
^ permalink raw reply related [flat|nested] 9+ messages in thread
* [PATCH v8 7/7] watchdog: orion_wdt: move the min_timeout initialization
2013-02-13 12:22 [PATCH v8 0/7] watchdog: dt: add support for the timeout-sec dt property Fabio Porcedda
` (5 preceding siblings ...)
2013-02-13 12:22 ` [PATCH v8 6/7] watchdog: at91sam9_wdt: " Fabio Porcedda
@ 2013-02-13 12:22 ` Fabio Porcedda
2013-02-14 7:21 ` [PATCH v8 0/7] watchdog: dt: add support for the timeout-sec dt property Fabio Porcedda
7 siblings, 0 replies; 9+ messages in thread
From: Fabio Porcedda @ 2013-02-13 12:22 UTC (permalink / raw)
To: Wim Van Sebroeck, linux-watchdog, linux-arm-kernel, Nicolas Ferre,
Jean-Christophe PLAGNIOL-VILLARD, Andrew Victor, Jason Cooper,
Andrew Lunn, Ben Dooks, Kukjin Kim
Cc: devicetree-discuss, Wenyou Yang
Move the min_timeout initialization inside the orion_wdt definition.
Only compile tested.
Signed-off-by: Fabio Porcedda <fabio.porcedda@gmail.com>
Cc: Andrew Lunn <andrew@lunn.ch>
Acked-by: Jason Cooper <jason@lakedaemon.net>
---
drivers/watchdog/orion_wdt.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/watchdog/orion_wdt.c b/drivers/watchdog/orion_wdt.c
index 3022a38..da57798 100644
--- a/drivers/watchdog/orion_wdt.c
+++ b/drivers/watchdog/orion_wdt.c
@@ -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,7 +165,6 @@ static int orion_wdt_probe(struct platform_device *pdev)
wdt_max_duration = WDT_MAX_CYCLE_COUNT / wdt_tclk;
- 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);
--
1.8.1.1
^ permalink raw reply related [flat|nested] 9+ messages in thread
* Re: [PATCH v8 0/7] watchdog: dt: add support for the timeout-sec dt property
2013-02-13 12:22 [PATCH v8 0/7] watchdog: dt: add support for the timeout-sec dt property Fabio Porcedda
` (6 preceding siblings ...)
2013-02-13 12:22 ` [PATCH v8 7/7] watchdog: orion_wdt: move the min_timeout initialization Fabio Porcedda
@ 2013-02-14 7:21 ` Fabio Porcedda
7 siblings, 0 replies; 9+ messages in thread
From: Fabio Porcedda @ 2013-02-14 7:21 UTC (permalink / raw)
To: Wim Van Sebroeck, linux-watchdog, linux-arm-kernel, Nicolas Ferre,
Jean-Christophe PLAGNIOL-VILLARD, Andrew Victor, Jason Cooper,
Andrew Lunn, Ben Dooks, Kukjin Kim
Cc: devicetree-discuss, Wenyou Yang
On Wed, Feb 13, 2013 at 1:22 PM, Fabio Porcedda
<fabio.porcedda@gmail.com> wrote:
> Hi all,
> this patchset add the timeout-sec property to the watchdog core,
> to the at91sam9_wdt driver and on all framework enabled watchdog driver
> with dt support.
> The at91sam9_wdt is tested on evk-pr3,
> the other drivers are compile tested only.
Because in the watchdog-next tree there is already the reworked first
patch of the v7,
i will send the v9 rebased over the watchdog-next tree, dropping the
first and second patch.
Fabio
> Best regards
> Fabio Porcedda
>
> changes:
> v8:
> - watchdog_is_valid_timeout(): export in watchdog.h
> - watchdog_is_valid_timeout(): use in watchdog_set_timeout()
> - watchdog_is_valid_timeout(): split patch
> - watchdog_init_timeout(): return -EINVAL for out of range values.
> - watchdog_init_timeout(): use struct device instead of struct device_node
> v7:
> - rebase over v3.8-rc2
> - remove the patch already merged
> v6:
> - remove patch for function of_get_timeout_sec as aked by Rob Herring
> - add Acked-by: Jason Cooper <jason@lakedaemon.net>
> - add Acked-by: Nicolas Ferre <nicolas.ferre@atmel.com>
> v5:
> - fix codestyle for compilance ti checkpatch.pl about
> "ERROR: do not initialise statics to 0 or NULL"
> for s3c2410_wdt.c:56 and at91sam9_wdt.c:63
> v4:
> - add of_get_timeout_sec
> - add s3c2410_wdt driver
> - split driver patch
> - fixed watchdog_init_timeout handling of min_timeout and max_timeout
> v3:
> - rename watchdog_probe_dt_timeout -> watchdog_init_timeout
> - move the watchdog_init_timeout function from inline to watchdog_core.c
> - add timeout parameter handling code to watchdog_init_timeout
> - add timeout-sec property to the pnx4008-wdt driver
> - add two small commit for fixup and cleanup
> v2:
> - change "timeout" to "timeout-sec" as asked by Jean-Christophe
> - at91sam9_wdt: use the new helper function
> - at91sam9_wdt: add bounds checking
> - watchdog.h: add bounds checking
>
> Fabio Porcedda (7):
> watchdog: core: add and use watchdog_is_valid_timeout function
> watchdog: core: dt: add support for the timeout-sec dt property
> watchdog: orion_wdt: add timeout-sec property binding
> watchdog: pnx4008: add timeout-sec property binding
> watchdog: s3c2410_wdt: add timeout-sec property binding
> watchdog: at91sam9_wdt: add timeout-sec property binding
> watchdog: orion_wdt: move the min_timeout initialization
>
> .../devicetree/bindings/watchdog/atmel-wdt.txt | 4 ++
> .../devicetree/bindings/watchdog/marvel.txt | 5 +++
> .../devicetree/bindings/watchdog/pnx4008-wdt.txt | 4 ++
> .../devicetree/bindings/watchdog/samsung-wdt.txt | 3 ++
> Documentation/watchdog/watchdog-kernel-api.txt | 10 +++++
> drivers/watchdog/Kconfig | 1 +
> drivers/watchdog/at91sam9_wdt.c | 16 ++++++--
> drivers/watchdog/orion_wdt.c | 10 ++---
> drivers/watchdog/pnx4008_wdt.c | 7 ++--
> drivers/watchdog/s3c2410_wdt.c | 6 ++-
> drivers/watchdog/watchdog_core.c | 48 ++++++++++++++++++++++
> drivers/watchdog/watchdog_dev.c | 3 +-
> include/linux/watchdog.h | 4 ++
> 13 files changed, 104 insertions(+), 17 deletions(-)
>
> --
> 1.8.1.1
>
--
Fabio Porcedda
^ permalink raw reply [flat|nested] 9+ messages in thread
end of thread, other threads:[~2013-02-14 7:21 UTC | newest]
Thread overview: 9+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2013-02-13 12:22 [PATCH v8 0/7] watchdog: dt: add support for the timeout-sec dt property Fabio Porcedda
2013-02-13 12:22 ` [PATCH v8 1/7] watchdog: core: add and use watchdog_is_valid_timeout function Fabio Porcedda
2013-02-13 12:22 ` [PATCH v8 2/7] watchdog: core: dt: add support for the timeout-sec dt property Fabio Porcedda
2013-02-13 12:22 ` [PATCH v8 3/7] watchdog: orion_wdt: add timeout-sec property binding Fabio Porcedda
2013-02-13 12:22 ` [PATCH v8 4/7] watchdog: pnx4008: " Fabio Porcedda
2013-02-13 12:22 ` [PATCH v8 5/7] watchdog: s3c2410_wdt: " Fabio Porcedda
2013-02-13 12:22 ` [PATCH v8 6/7] watchdog: at91sam9_wdt: " Fabio Porcedda
2013-02-13 12:22 ` [PATCH v8 7/7] watchdog: orion_wdt: move the min_timeout initialization Fabio Porcedda
2013-02-14 7:21 ` [PATCH v8 0/7] watchdog: dt: add support for the timeout-sec dt property Fabio Porcedda
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).