From patchwork Wed May 23 20:32:05 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ray Jui X-Patchwork-Id: 10422399 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 597D260224 for ; Wed, 23 May 2018 20:48:45 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 201C629117 for ; Wed, 23 May 2018 20:48:44 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 137952911F; Wed, 23 May 2018 20:48:44 +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 8CA4429117 for ; Wed, 23 May 2018 20:48:43 +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=yE5M1lS9ScMdX+cnQVJ93ccPqI0/UfnZLAnqj2CKEsk=; b=T1NRrVnhu7GbMcUjy8FF20e4Df T7XlYQCALw9ifq3H73+xP2k9WSMJ1CMS0uWekT45q/W4KJvEKHUMG/60eODaaMg6pXpH2r7U3L2Ih LPXseK5A7YEfui7XmKYuVvdgOLSSeUB04AcVWsxsC+pMeQvD72eXfypf3RCOwKK+ZiByPQrPlfzdk CJOkk9JH1HlPKsCGlJ+jm+v7k7NQ9fvAPcMoXagasKI+1+LAFnNtJrPj7CIZVYqnDYTE1XkYG4iHn htVHtWK//GsMrTAr0wW8tInbKh9/abBTMc1aVjTJMb4VkUS0YrUfoYXMIwI5ONX16cQb1B/1LfSYc CL0qc0fg==; 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 1fLagV-0004Eu-19; Wed, 23 May 2018 20:48:35 +0000 Received: from mail-qk0-x244.google.com ([2607:f8b0:400d:c09::244]) by bombadil.infradead.org with esmtps (Exim 4.90_1 #2 (Red Hat Linux)) id 1fLaRE-0005R5-NH for linux-arm-kernel@lists.infradead.org; Wed, 23 May 2018 20:32:57 +0000 Received: by mail-qk0-x244.google.com with SMTP id r28-v6so16301197qkk.4 for ; Wed, 23 May 2018 13:32:38 -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=stGZociEH2eWVBN9zoz9wqwGnPceJsZ4J8FDyHubcvM=; b=brb1V3yDsjq1K2KPNnDQE/88O7fusQAJkAy4WSjl7AW4zldcpD7l6pdld8J2hvs/yi 0aVPkVtPUT+YiFKf68uT5eeEeaiuD7UoaTRvenKyKzu8sUY9aT1svO69D8J9k7VtBHHn o/VMAHatpBWt/imsypgt8ALeaTAwjBKiRgz2I= 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=stGZociEH2eWVBN9zoz9wqwGnPceJsZ4J8FDyHubcvM=; b=T/bpW1Z9hEsnERHB4K4cn1AvqM7JtNOCaG4v6FtX3lcQGh2e4wZVL7l9Y8e/P9Hmu3 Ddkpess7roRW456HeAKatD9NHsIAJG52R0SQqVAE6xwD5CHOu2+M55gnYu/HcnqjS2f8 nED0clL0oa5Z5CGcTGa8J3pDnYUOz3WryJvBUDQAQejXJAGPnnOFJzm5NFsd+GFAJZX9 uQfJFXNbZChwm8sYukxlvJhFwLH5WwiWVE8wtasgKkGs4GzCUP70hOpsNv1pwrtlVOua t3oq63urg44xkJdWeXdluGoA7nwk1dqjDFrmFTS753rGK9SpoB9WT6oDutH26HODvMBx D3Vw== X-Gm-Message-State: ALKqPwe+Kfwu4hadBN3L7h+w1g3YicCuCV3hZfB9lw8U8NmqHB+sLcnX vUyVAKW0GB8oYAz9b9vME7wDwQ== X-Google-Smtp-Source: ADUXVKJCEVO8rDkwR4o0SiTS/RFajPCSsTeforsOptX6gzRMxaxdowghzgah9z1pWy0z2xEK6gTDRw== X-Received: by 2002:a37:4c56:: with SMTP id z83-v6mr749918qka.302.1527107557302; Wed, 23 May 2018 13:32:37 -0700 (PDT) Received: from lbrmn-lnxub44-1.ric.broadcom.com ([192.19.228.250]) by smtp.gmail.com with ESMTPSA id z64-v6sm14598151qke.66.2018.05.23.13.32.34 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Wed, 23 May 2018 13:32:36 -0700 (PDT) From: Ray Jui To: Wim Van Sebroeck , Guenter Roeck , Rob Herring , Mark Rutland , Frank Rowand , Catalin Marinas , Will Deacon , Robin Murphy Subject: [PATCH v2 4/6] watchdog: sp805: set WDOG_HW_RUNNING when appropriate Date: Wed, 23 May 2018 13:32:05 -0700 Message-Id: <1527107527-8093-5-git-send-email-ray.jui@broadcom.com> X-Mailer: git-send-email 2.1.4 In-Reply-To: <1527107527-8093-1-git-send-email-ray.jui@broadcom.com> References: <1527107527-8093-1-git-send-email-ray.jui@broadcom.com> X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20180523_133248_790616_C9C17577 X-CRM114-Status: GOOD ( 15.41 ) 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 | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/drivers/watchdog/sp805_wdt.c b/drivers/watchdog/sp805_wdt.c index 1484609..d662a6f 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,15 @@ 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); + u32 wdtcontrol = readl_relaxed(wdt->base + WDTCONTROL); + + return (wdtcontrol & ENABLE_MASK) == ENABLE_MASK; +} + /* 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 +249,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",