From patchwork Tue May 22 18:47:18 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ray Jui X-Patchwork-Id: 10419397 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork.web.codeaurora.org (Postfix) with ESMTP id A1ECB60224 for ; Tue, 22 May 2018 18:54:48 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 8FACE28ED6 for ; Tue, 22 May 2018 18:54:48 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 82E5028F67; Tue, 22 May 2018 18:54:48 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-2.9 required=2.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,MAILING_LIST_MULTI autolearn=unavailable version=3.3.1 Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.wl.linuxfoundation.org (Postfix) with ESMTPS id 40FD028ED6 for ; Tue, 22 May 2018 18:54:48 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20170209; h=Sender: Content-Transfer-Encoding:Content-Type:MIME-Version:Cc:List-Subscribe: List-Help:List-Post:List-Archive:List-Unsubscribe:List-Id:References: In-Reply-To:Message-Id:Date:Subject:To:From:Reply-To:Content-ID: Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc :Resent-Message-ID:List-Owner; bh=ez9+W04BKXEKNMSikqdZhy5VLfJYNnrNnR+R+EDAokc=; b=IPcrfSa2q2g+RNOTGHBe55IB8L BXHH5NxVfNr+dPUk3P4P7Th2gDQXk8mYZvqnCyOVq7+nJbL2dGNxHupaxTjZBrffjSqdUx+/m3BQ4 GlcvU5+Z8QEvkwatOgoiNonSWnYOXQt3V49ELmYLJKTJFVj0WQTgQCRlnGUZcm1bwjFVaskAtebjY 1QgaB6WfqBFriADHGOPzblZ8vlfeF6U2UfeHY45xAC4mChQ/gO0HQxv1loRfw/kWjvYxLgiEudw7s 72rY3YRkeuOo9t5vIi2t651fcOZjsh8cspayzm1gWTdMHLNBEMIvAVh0+edMPUGnn4ODfSl5mlDl5 oB9+urGA==; Received: from localhost ([127.0.0.1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.90_1 #2 (Red Hat Linux)) id 1fLCQg-0005GX-8h; Tue, 22 May 2018 18:54:38 +0000 Received: from mail-qt0-x241.google.com ([2607:f8b0:400d:c0d::241]) by bombadil.infradead.org with esmtps (Exim 4.90_1 #2 (Red Hat Linux)) id 1fLCKB-0007mX-I2 for linux-arm-kernel@lists.infradead.org; Tue, 22 May 2018 18:48:11 +0000 Received: by mail-qt0-x241.google.com with SMTP id f1-v6so24815277qtj.6 for ; Tue, 22 May 2018 11:47:45 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=broadcom.com; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=Jkfk/vmdzxfquXSh1Qg6AhVY1hn/WREz3T4y64iMDHY=; b=EZX7H74wxR9clbKJAebx/sHkcgpHS0GeF236da5KY/7NRv/1v4xN12ZFaOyFcwW5Ko Eosb8rhdEIJuHAAXiPmdtmMZgekDDAVxtqmhxM6no8r+UqbTgYmxTN5wKfikmJKV1SWy 0cLbooAoAgyq6q6x7YW5Ux7s+CiTzVXm26mjY= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=Jkfk/vmdzxfquXSh1Qg6AhVY1hn/WREz3T4y64iMDHY=; b=ce3sjRfINdMlNJoBmgUfeCBE6sO7i+5Ti1xjV3VKI1heMvRCXUbJ730NTz+swqjfmm 5AeekAamtmPA1ZGb+HRwJRpm+8DBfTkgbjs+qCSrxhXemwxaWX1LsUHlmB00ueFrFsdS l5TIEzwfN4EKQVVhOGjowooNdncAsyI5VxuEWcihtlyx/tu3SZ7C9RDZ5vg+QhUaWDp7 vmnyLbEWWKe0ZxreypEppY9yCO7h11TPqNXZnoXjnAoWpX/knPuc+jJyv5zr63egam12 DzB8cz1WvfJbGewLxuHNk1JaW2iugaKIYebho0mfqxTrmxkM/XEJt4O4LTBU89zLDCU1 2hAw== X-Gm-Message-State: ALKqPwfWH8IFksHgU+MVe1kkM2NYrgnLz8OHSkExiSlyRlJ2nvnD9BmP zX02EJ6wbh+W02FUVRieKMBq4g== X-Google-Smtp-Source: AB8JxZpvNL9w+WbQlmfp5gV6IIq7ifhFNw9IeZ79P0KTvpr7b2qm9jZ+kIb6fqhOCEcKQd/BZoJAwg== X-Received: by 2002:ac8:21b4:: with SMTP id 49-v6mr17298905qty.315.1527014864212; Tue, 22 May 2018 11:47:44 -0700 (PDT) Received: from lbrmn-lnxub44-1.ric.broadcom.com ([192.19.228.250]) by smtp.gmail.com with ESMTPSA id i69-v6sm192501qke.87.2018.05.22.11.47.41 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Tue, 22 May 2018 11:47:43 -0700 (PDT) From: Ray Jui To: Wim Van Sebroeck , Guenter Roeck , Rob Herring , Mark Rutland , Frank Rowand , Catalin Marinas , Will Deacon Subject: [PATCH 3/5] watchdog: sp805: set WDOG_HW_RUNNING when appropriate Date: Tue, 22 May 2018 11:47:18 -0700 Message-Id: <1527014840-21236-4-git-send-email-ray.jui@broadcom.com> X-Mailer: git-send-email 2.1.4 In-Reply-To: <1527014840-21236-1-git-send-email-ray.jui@broadcom.com> References: <1527014840-21236-1-git-send-email-ray.jui@broadcom.com> X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20180522_114755_618707_9DC97196 X-CRM114-Status: GOOD ( 16.26 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: devicetree@vger.kernel.org, linux-watchdog@vger.kernel.org, linux-kernel@vger.kernel.org, Ray Jui , bcm-kernel-feedback-list@broadcom.com, linux-arm-kernel@lists.infradead.org MIME-Version: 1.0 Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+patchwork-linux-arm=patchwork.kernel.org@lists.infradead.org X-Virus-Scanned: ClamAV using ClamSMTP If the watchdog hardware is already enabled during the boot process, when the Linux watchdog driver loads, it should reset the watchdog and tell the watchdog framework. As a result, ping can be generated from the watchdog framework, until the userspace watchdog daemon takes over control Signed-off-by: Ray Jui Reviewed-by: Vladimir Olovyannikov Reviewed-by: Scott Branden --- drivers/watchdog/sp805_wdt.c | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/drivers/watchdog/sp805_wdt.c b/drivers/watchdog/sp805_wdt.c index 1484609..408ffbe 100644 --- a/drivers/watchdog/sp805_wdt.c +++ b/drivers/watchdog/sp805_wdt.c @@ -42,6 +42,7 @@ /* control register masks */ #define INT_ENABLE (1 << 0) #define RESET_ENABLE (1 << 1) + #define ENABLE_MASK (INT_ENABLE | RESET_ENABLE) #define WDTINTCLR 0x00C #define WDTRIS 0x010 #define WDTMIS 0x014 @@ -74,6 +75,18 @@ module_param(nowayout, bool, 0); MODULE_PARM_DESC(nowayout, "Set to 1 to keep watchdog running after device release"); +/* returns true if wdt is running; otherwise returns false */ +static bool wdt_is_running(struct watchdog_device *wdd) +{ + struct sp805_wdt *wdt = watchdog_get_drvdata(wdd); + + if ((readl_relaxed(wdt->base + WDTCONTROL) & ENABLE_MASK) == + ENABLE_MASK) + return true; + else + return false; +} + /* This routine finds load value that will reset system in required timout */ static int wdt_setload(struct watchdog_device *wdd, unsigned int timeout) { @@ -239,6 +252,15 @@ sp805_wdt_probe(struct amba_device *adev, const struct amba_id *id) watchdog_init_timeout(&wdt->wdd, 0, &adev->dev); wdt_setload(&wdt->wdd, wdt->wdd.timeout); + /* + * If HW is already running, enable/reset the wdt and set the running + * bit to tell the wdt subsystem + */ + if (wdt_is_running(&wdt->wdd)) { + wdt_enable(&wdt->wdd); + set_bit(WDOG_HW_RUNNING, &wdt->wdd.status); + } + ret = watchdog_register_device(&wdt->wdd); if (ret) { dev_err(&adev->dev, "watchdog_register_device() failed: %d\n",