From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 603ABC433EF for ; Wed, 1 Dec 2021 14:15:16 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender: Content-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:MIME-Version:In-Reply-To:References: Message-ID:Date:Subject:CC:To:From:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=y+6qkzyQK8r5PfsZ4IFaqeiEkvweq9d+28f/z/mROic=; b=3PV2zUs5YPKAXx 5IkyzcaWV6EmmBH9/U/8oS6yfPd9/KTzrLY3esu8PIFWDaGucGiuQDj2FZwtdOfgPT6WGGaDkwSaV ZbYP81vmO4E01rZP1gWBWPCDLaKPEjRhzYh+kUVmX5VQjkiEwefDF/tX3lFzmSAphZ6osW9dm+yOk ojW+2UZCV98puDBB1nSHfOeLgL9N42mNHY65eUj0t3IkGvnKuNU1ubiaxM874I1wVRBJV6H/hP5zG 3oAYhcn4q4t0d05R4QdmEkKiJS03pxWJXX36HJWmQLnVhmnGu7g+OItdzMsTsnSDE8kZFK3zBKCEm 4aUU09HndgwAb64q2rhA==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.94.2 #2 (Red Hat Linux)) id 1msQMZ-008zQI-0R; Wed, 01 Dec 2021 14:13:35 +0000 Received: from mx4.securetransport.de ([178.254.6.145]) by bombadil.infradead.org with esmtps (Exim 4.94.2 #2 (Red Hat Linux)) id 1msQMU-008zP6-Vg for linux-arm-kernel@lists.infradead.org; Wed, 01 Dec 2021 14:13:33 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=dh-electronics.com; s=dhelectronicscom; t=1638367918; bh=ZtGSwznsU++k0Gk+LT23e0akB0N+CZ+YjkcaFMqOdLA=; h=From:To:CC:Subject:Date:References:In-Reply-To:From; b=Po+AexHwQvE2VMH+ymp6dYgtSkXWvfU3Zcc3UHmG4KT2AFQr29BTUK2ds+81Gf8SR XLM/sSDzHcBCZ2brvYTn22VAZgjsC7jEQ9UASqc82IhRrltm0uwaRDlVq0fJs8USNU NO6LoymTnuGdlH0IU6Bt63qcIzUq4XiM/THdPsk0C+DToBNrge5UgjIfjIwp8uqTIe OCuBo9Nx+ADbmL4ibIN84bquxTbhCE6e780NKLyV9ZTBujNIhs4P1dCD4ZIe1+x0GA bG4igPFPNprs2Iy77wizZvEU3DUpg2RQYID9c73YHf/gqZ4RCXcGy2yWvPlmDyJ34d WS2P1laXXnNEA== X-secureTransport-forwarded: yes From: Christoph Niedermaier Complaints-To: abuse@cubewerk.de To: Andrej Picej , "support.opensource@diasemi.com" , "linux@roeck-us.net" , "linux-watchdog@vger.kernel.org" CC: "wim@linux-watchdog.org" , "linux-kernel@vger.kernel.org" , "robh+dt@kernel.org" , "devicetree@vger.kernel.org" , "shawnguo@kernel.org" , "s.hauer@pengutronix.de" , "kernel@pengutronix.de" , "festevam@gmail.com" , "linux-imx@nxp.com" , "linux-arm-kernel@lists.infradead.org" Subject: Re: [PATCH v3 2/4] watchdog: da9062: reset board on watchdog timeout Thread-Topic: [PATCH v3 2/4] watchdog: da9062: reset board on watchdog timeout Thread-Index: AQHX5owZirEHvI9/hEig4OjJTza/Fawdfm9A Date: Wed, 1 Dec 2021 14:11:51 +0000 Message-ID: <13e0b9047f114722a0b4ebb4c1d24f2b@dh-electronics.com> References: <20211201081512.3580837-1-andrej.picej@norik.com> <20211201081512.3580837-2-andrej.picej@norik.com> In-Reply-To: <20211201081512.3580837-2-andrej.picej@norik.com> Accept-Language: de-DE, en-US Content-Language: de-DE X-MS-Has-Attach: X-MS-TNEF-Correlator: MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20211201_061331_521559_B2CF7CF1 X-CRM114-Status: GOOD ( 27.94 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org From: Andrej Picej Sent: Wednesday, December 1, 2021 9:15 AM > Implement a method to change watchdog timeout configuration based on DT > binding ("dlg,wdt-sd"). There is a possibility to change the bahaviour > of watchdog reset. Setting WATCHDOG_SD bit enables SHUTDOWN mode, and > clearing it enables POWERDOWN mode on watchdog timeout. > > If no DT binding is specified the WATCHDOG_SD bit stays in default > configuration, not breaking behaviour of devices which might depend on > default fuse configuration. > > Note: This patch requires that the config register CONFIG_I is > configured as writable in the da9062 multi function device. > > Signed-off-by: Andrej Picej > --- > Changes in v3: > - no changes > > Changes in v2: > - don't force the "reset" for all da9062-watchdog users, instead add DT > binding where the behavior can be selected > --- > drivers/watchdog/da9062_wdt.c | 25 +++++++++++++++++++++++++ > 1 file changed, 25 insertions(+) > > diff --git a/drivers/watchdog/da9062_wdt.c b/drivers/watchdog/da9062_wdt.c > index f02cbd530538..e342e9e50cb1 100644 > --- a/drivers/watchdog/da9062_wdt.c > +++ b/drivers/watchdog/da9062_wdt.c > @@ -85,8 +85,33 @@ static int da9062_wdt_start(struct watchdog_device *wdd) > { > struct da9062_watchdog *wdt = watchdog_get_drvdata(wdd); > unsigned int selector; > + unsigned int mask; > + u32 val; > int ret; > > + /* Configure what happens on watchdog timeout. Can be specified with > + * "dlg,wdt-sd" dt-binding (0 -> POWERDOWN, 1 -> SHUTDOWN). > + * If "dlg,wdt-sd" dt-binding is NOT set use the default. > + */ > + ret = device_property_read_u32(wdd->parent, "dlg,wdt-sd", &val); > + if (!ret) { > + if (val) > + /* Use da9062's SHUTDOWN mode */ > + mask = DA9062AA_WATCHDOG_SD_MASK; > + else > + /* Use da9062's POWERDOWN mode. */ > + mask = 0x0; > + > + ret = regmap_update_bits(wdt->hw->regmap, > + DA9062AA_CONFIG_I, > + DA9062AA_WATCHDOG_SD_MASK, > + mask); > + > + if (ret) > + dev_err(wdt->hw->dev, "failed to set wdt reset mode: > %d\n", > + ret); > + } > + > selector = da9062_wdt_timeout_to_sel(wdt->wdtdev.timeout); > ret = da9062_wdt_update_timeout_register(wdt, selector); > if (ret) > -- > 2.25.1 > I have a question how to correctly restart the system after watchdog timeout. If I understand it correct after watchdog timeout the system restarts only if WATCHDOG_SD (Bit 3) in register CONFIG_I is set. What is the difference if WATCHDOG_SD isn't set, but WAKE_UP (Bit 2) in register CONTROL_F is set? From outside on my system I observe the same behavior. After watchdog timeout my system restarts. So where are the differences? It would be nice if you could answer this question, as you certainly know this chip very well. Regards Christoph _______________________________________________ linux-arm-kernel mailing list linux-arm-kernel@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-arm-kernel