From patchwork Fri Oct 5 10:16:06 2012 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Fabio Porcedda X-Patchwork-Id: 1552391 Return-Path: X-Original-To: patchwork-linux-arm@patchwork.kernel.org Delivered-To: patchwork-process-083081@patchwork1.kernel.org Received: from merlin.infradead.org (merlin.infradead.org [205.233.59.134]) by patchwork1.kernel.org (Postfix) with ESMTP id 5E4593FCFC for ; Fri, 5 Oct 2012 10:18:43 +0000 (UTC) Received: from localhost ([::1] helo=merlin.infradead.org) by merlin.infradead.org with esmtp (Exim 4.76 #1 (Red Hat Linux)) id 1TK4xN-0000iN-0N; Fri, 05 Oct 2012 10:16:33 +0000 Received: from mail-ee0-f49.google.com ([74.125.83.49]) by merlin.infradead.org with esmtps (Exim 4.76 #1 (Red Hat Linux)) id 1TK4x9-0000gp-Ln for linux-arm-kernel@lists.infradead.org; Fri, 05 Oct 2012 10:16:20 +0000 Received: by mail-ee0-f49.google.com with SMTP id c1so1139263eek.36 for ; Fri, 05 Oct 2012 03:16:15 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=from:to:cc:subject:date:message-id:x-mailer:in-reply-to:references; bh=lzRuTYFh6WPyCG9vovfoJDjYolwSCPohZjdrYoeNbwc=; b=GU71Jbgkx2KWHaSdZavSQgA/5TcQt+iZfrmNJCJDGQH0JDny3TEEXo/w0+ZTZyzBaN 3yVFQ9eY+bUVLH+7jLEmo9pmOIG8V3w596db3BpocrylG6iqNU1Yr1bz6HXyBCFqyW9A HnpfAwCkTqnGMRXkPImvs+IJAX4VVvAosRl8I3Y25wxV3i/iD+rXELJ3j276NJCBQuPc 5PxiD7REAP8i8p0Rt4ioeimYS6AO6HPNAQq2RUMslce9sLRYXEnVasuM81BWJi0k93gj w/loPnshDZEZJNLI/TNiOywaglvDhDN97P0yBVKGlmSdM8JmkTrs8J4qJvi04RxFPJuy gQnQ== Received: by 10.14.219.198 with SMTP id m46mr12136943eep.18.1349432174943; Fri, 05 Oct 2012 03:16:14 -0700 (PDT) Received: from ld2036.tmt.telital.com ([213.205.6.118]) by mx.google.com with ESMTPS id 7sm1559321eeg.5.2012.10.05.03.16.13 (version=SSLv3 cipher=OTHER); Fri, 05 Oct 2012 03:16:14 -0700 (PDT) From: Fabio Porcedda To: Wim Van Sebroeck , linux-watchdog@vger.kernel.org, linux-arm-kernel@lists.infradead.org, Nicolas Ferre , Jean-Christophe PLAGNIOL-VILLARD , Andrew Victor , Jason Cooper , Andrew Lunn Subject: [RFC PATCH v3 1/4] watchdog: core: dt: add support for the timeout-sec dt property Date: Fri, 5 Oct 2012 12:16:06 +0200 Message-Id: <1349432169-13006-2-git-send-email-fabio.porcedda@gmail.com> X-Mailer: git-send-email 1.7.11.3 In-Reply-To: <1349432169-13006-1-git-send-email-fabio.porcedda@gmail.com> References: <1349432169-13006-1-git-send-email-fabio.porcedda@gmail.com> X-Spam-Note: CRM114 invocation failed X-Spam-Score: -2.7 (--) X-Spam-Report: SpamAssassin version 3.3.2 on merlin.infradead.org summary: Content analysis details: (-2.7 points) pts rule name description ---- ---------------------- -------------------------------------------------- -0.7 RCVD_IN_DNSWL_LOW RBL: Sender listed at http://www.dnswl.org/, low trust [74.125.83.49 listed in list.dnswl.org] 0.0 FREEMAIL_FROM Sender email is commonly abused enduser mail provider (fabio.porcedda[at]gmail.com) -0.0 SPF_PASS SPF: sender matches SPF record -1.9 BAYES_00 BODY: Bayes spam probability is 0 to 1% [score: 0.0000] -0.1 DKIM_VALID_AU Message has a valid DKIM or DK signature from author's domain 0.1 DKIM_SIGNED Message has a DKIM or DK signature, not necessarily valid -0.1 DKIM_VALID Message has at least one valid DKIM or DK signature Cc: devicetree-discuss@lists.ozlabs.org X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , MIME-Version: 1.0 Sender: linux-arm-kernel-bounces@lists.infradead.org Errors-To: linux-arm-kernel-bounces+patchwork-linux-arm=patchwork.kernel.org@lists.infradead.org Signed-off-by: Fabio Porcedda --- Documentation/watchdog/watchdog-kernel-api.txt | 4 ++++ drivers/watchdog/watchdog_core.c | 27 ++++++++++++++++++++++++++ include/linux/watchdog.h | 4 ++++ 3 files changed, 35 insertions(+) diff --git a/Documentation/watchdog/watchdog-kernel-api.txt b/Documentation/watchdog/watchdog-kernel-api.txt index 086638f..2208db7 100644 --- a/Documentation/watchdog/watchdog-kernel-api.txt +++ b/Documentation/watchdog/watchdog-kernel-api.txt @@ -212,3 +212,7 @@ 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. + +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 3796434..646be48 100644 --- a/drivers/watchdog/watchdog_core.c +++ b/drivers/watchdog/watchdog_core.c @@ -143,6 +143,33 @@ void watchdog_unregister_device(struct watchdog_device *wdd) } EXPORT_SYMBOL_GPL(watchdog_unregister_device); +/** + * watchdog_init_timeout() - initialize the timeout field + * @parm_timeout: 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. + */ +void watchdog_init_timeout(struct watchdog_device *wdd, + unsigned int parm_timeout, struct device_node *node) +{ + unsigned int t = 0; + + if ((parm_timeout >= wdd->min_timeout) && + (parm_timeout <= wdd->max_timeout)) { + wdd->timeout = parm_timeout; + return; + } + + if (!node) + return; + + of_property_read_u32(node, "timeout-sec", &t); + if ((t >= wdd->min_timeout) && (t <= wdd->max_timeout)) + wdd->timeout = t; +} +EXPORT_SYMBOL_GPL(watchdog_init_timeout); + static int __init watchdog_init(void) { int err; diff --git a/include/linux/watchdog.h b/include/linux/watchdog.h index da70f0f..d09dda7 100644 --- a/include/linux/watchdog.h +++ b/include/linux/watchdog.h @@ -11,6 +11,7 @@ #include #include +#include #define WATCHDOG_IOCTL_BASE 'W' @@ -177,6 +178,9 @@ static inline void *watchdog_get_drvdata(struct watchdog_device *wdd) /* drivers/watchdog/core/watchdog_core.c */ extern int watchdog_register_device(struct watchdog_device *); extern void watchdog_unregister_device(struct watchdog_device *); +extern void watchdog_init_timeout(struct watchdog_device *wdd, + unsigned int parm_timeout, + struct device_node *node); #endif /* __KERNEL__ */