From patchwork Thu Mar 26 15:02:01 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: =?utf-8?q?Stefan_Riedm=C3=BCller?= X-Patchwork-Id: 11460331 Return-Path: Received: from mail.kernel.org (pdx-korg-mail-1.web.codeaurora.org [172.30.200.123]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id BBF526CA for ; Thu, 26 Mar 2020 15:02:06 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id 746E3206F8 for ; Thu, 26 Mar 2020 15:02:06 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=temperror (0-bit key) header.d=phytec.de header.i=@phytec.de header.b="TPV+j3xY" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727889AbgCZPCG (ORCPT ); Thu, 26 Mar 2020 11:02:06 -0400 Received: from mickerik.phytec.de ([195.145.39.210]:46422 "EHLO mickerik.phytec.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1727444AbgCZPCF (ORCPT ); Thu, 26 Mar 2020 11:02:05 -0400 DKIM-Signature: v=1; a=rsa-sha256; d=phytec.de; s=a1; c=relaxed/simple; q=dns/txt; i=@phytec.de; t=1585234924; x=1587826924; h=From:Sender:Reply-To:Subject:Date:Message-Id:To:Cc:MIME-Version:Content-Type: Content-Transfer-Encoding:Content-ID:Content-Description:Resent-Date:Resent-From: Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:In-Reply-To:References:List-Id: List-Help:List-Unsubscribe:List-Subscribe:List-Post:List-Owner:List-Archive; bh=z2mlDmUTVL8bamKSgP9kkGknh9FvkyYg3rvvPm37X4Q=; b=TPV+j3xYLPi/szZNWzSPvj3Qxqy6XFqbU9pzIWY+kiVsdQk7SPqydxOYrVrvc5pk 6Bg/i+jxtn1wEgqbpEwOAKfvQDyje+Ndkr1dBM7jC+FjAZeXHpIxExFOj6i+UMuG gRBT2lreLWnhDVN98uBuNizfGUCe4I3Xy+6d9ldVM2E=; X-AuditID: c39127d2-583ff70000001db9-a4-5e7cc3ecbc8d Received: from idefix.phytec.de (Unknown_Domain [172.16.0.10]) by mickerik.phytec.de (PHYTEC Mail Gateway) with SMTP id 14.1C.07609.CE3CC7E5; Thu, 26 Mar 2020 16:02:04 +0100 (CET) Received: from augenblix2.phytec.de ([172.16.0.56]) by idefix.phytec.de (IBM Domino Release 9.0.1FP7) with ESMTP id 2020032616020393-89374 ; Thu, 26 Mar 2020 16:02:03 +0100 From: Stefan Riedmueller To: Wim Van Sebroeck , Guenter Roeck , Support Opensource Cc: linux-watchdog@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH 1/3] watchdog: da9062: Use pre-configured timeout until userspace takes over Date: Thu, 26 Mar 2020 16:02:01 +0100 Message-Id: <20200326150203.371673-1-s.riedmueller@phytec.de> X-Mailer: git-send-email 2.23.0 MIME-Version: 1.0 X-MIMETrack: Itemize by SMTP Server on Idefix/Phytec(Release 9.0.1FP7|August 17, 2016) at 26.03.2020 16:02:04, Serialize by Router on Idefix/Phytec(Release 9.0.1FP7|August 17, 2016) at 26.03.2020 16:02:04 X-TNEFEvaluated: 1 X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFprOLMWRmVeSWpSXmKPExsWyRoCBS/fN4Zo4g9VL+C0u75rDZnFj3T52 iycLzzBZ7G29yGzx+OU/ZgdWjxWf9D1WrlnD6rHzewO7x+dNcgEsUVw2Kak5mWWpRfp2CVwZ H28ZFXTxVfzf0s3ewPiSu4uRk0NCwETi3oerjF2MXBxCAlsZJfrvNbJAOOcYJZ7/vcQGUsUm YCSxYFojE0hCRKCNUWLP0VmMIAlmAQeJx3MfgtnCAjES27ZMZgKxWQRUJZq+7GUGsXkFbCWu tLcD2RxA6+QlDh/KgggLSpyc+QRsmYTAFUaJ47d7WCBOEpI4vfgsM8R8bYllC18zT2Dkm4Wk ZxaS1AJGplWMQrmZydmpRZnZegUZlSWpyXopqZsYgYF3eKL6pR2MfXM8DjEycTAeYpTgYFYS 4X0aWRMnxJuSWFmVWpQfX1Sak1p8iFGag0VJnHcDb0mYkEB6YklqdmpqQWoRTJaJg1OqgdHl /zNTM0dh0/goGenJVzQb+/SXnt9puCx0xcaQ7ui5NxL2v5m2MLjv5c9DzMphj9KmJzid2nPI 7W/UuRczgk54ctSYFQJjjnF7ae5Rt39PQndMXffOqvV8uk9X4LZPl1db9z+z6pQ1Fvlgmzxv xoeIL+dexBZY8N9fdaDtzYa2LRMajOI+8CmxFGckGmoxFxUnAgDn9A2bKgIAAA== Sender: linux-watchdog-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-watchdog@vger.kernel.org If the watchdog is already running during probe read back its pre-configured timeout (set e.g. by the bootloader) and use it to ping the watchdog until userspace takes over. Otherwise the default timeout set before might not result in a fast enough ping. Signed-off-by: Stefan Riedmueller --- drivers/watchdog/da9062_wdt.c | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/drivers/watchdog/da9062_wdt.c b/drivers/watchdog/da9062_wdt.c index 0ad15d55071c..6d81b1276b87 100644 --- a/drivers/watchdog/da9062_wdt.c +++ b/drivers/watchdog/da9062_wdt.c @@ -35,6 +35,14 @@ struct da9062_watchdog { bool use_sw_pm; }; +static unsigned int da9062_wdt_read_timeout(struct da9062_watchdog *wdt) +{ + int val; + + regmap_read(wdt->hw->regmap, DA9062AA_CONTROL_D, &val); + return wdt_timeout[val & DA9062AA_TWDSCALE_MASK]; +} + static unsigned int da9062_wdt_timeout_to_sel(unsigned int secs) { unsigned int i; @@ -184,6 +192,7 @@ static int da9062_wdt_probe(struct platform_device *pdev) { struct device *dev = &pdev->dev; int ret; + int timeout; struct da9062 *chip; struct da9062_watchdog *wdt; @@ -213,6 +222,13 @@ static int da9062_wdt_probe(struct platform_device *pdev) watchdog_set_drvdata(&wdt->wdtdev, wdt); dev_set_drvdata(dev, &wdt->wdtdev); + timeout = da9062_wdt_read_timeout(wdt); + if (timeout > 0) { + wdt->wdtdev.timeout = timeout; + set_bit(WDOG_HW_RUNNING, &wdt->wdtdev.status); + dev_info(wdt->hw->dev, "watchdog is running (%u s)", timeout); + } + ret = devm_watchdog_register_device(dev, &wdt->wdtdev); if (ret < 0) return ret;