Received: by 10.213.65.68 with SMTP id h4csp563435imn; Fri, 30 Mar 2018 10:50:03 -0700 (PDT) X-Google-Smtp-Source: AIpwx4/0ljenkchNUG6ONv0KnN51RQeC5RGGG42myETsVg7jnLFZ0mBKAfFNa1GShDb74KynPxkJ X-Received: by 10.101.100.212 with SMTP id t20mr9243261pgv.112.1522432203575; Fri, 30 Mar 2018 10:50:03 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1522432203; cv=none; d=google.com; s=arc-20160816; b=0K/pb90KVMgeYujx7dRPL9VQDeBldw75LjSaQh9GJE6VGI43QZeIgaXf6Q/4q4T2hl SZ9vAdFXnOAgjAxe4keL6GO1Y9u5LjPN6ZdLCnrSMBb0N8aUEgKp3P7dsRtm0aaK1ttb 0idGVG5GCfU9FZ2w1ZxkUpk0VB6hJBAOxXEPMVTJrAFw57a4Bt10m7dvTDU4cEzwF7SU cgncUyBcFcRFAFmzpQCieh3zfhdbOQUUnY014EFtln5ZzFnQs5lEtRTpGhkKf1XaLCj4 13hPjtVKgoEA5wkJ/2E2YRAQfxFRKxMLMrSypwkIzGURvh3LbyLKy7guGOeBsrGm9OA/ I88A== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:user-agent:in-reply-to :content-disposition:mime-version:references:message-id:subject:cc :to:from:date:dkim-signature:arc-authentication-results; bh=auujl7YRcxmmq+CniZhNyh9bHxLL1ryGvI71TkMwy0A=; b=UVaRI1veeUOa5yYffH24bYvzcMsR0VNirvjbpSit1HwX3CoT5BSq5jmmho3jxVZE9I 3Mn+8jIzFrXuwQYpcCvEpT4l89HYpWiG6LIfOyKdKVCOS+F6krHLEKE8j2XqR2EDAaRB Az6i4Iy1aIrTevuAwn1dvmqsWeoGrqOVroABQyW8TNzlwfEoNm+mu7vQLeYetWZOGlJV ti8c7Hq2L1nvQXJPuSxgj8rnRRNzE0dAbjTROOWikgoSiIVAi9fS/GojEETK6O6BI1Vb YsO88MYTnno7a/1E5DtVBmD0qfWSjYZeKQKnKt3G9pq2pjArNiRBJoPuUHIHGhWFbxd+ BklQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gmail.com header.s=20161025 header.b=jAKX6SPL; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id r4-v6si8553131plo.128.2018.03.30.10.49.50; Fri, 30 Mar 2018 10:50:03 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=pass header.i=@gmail.com header.s=20161025 header.b=jAKX6SPL; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752199AbeC3Rsp (ORCPT + 99 others); Fri, 30 Mar 2018 13:48:45 -0400 Received: from mail-pg0-f66.google.com ([74.125.83.66]:36852 "EHLO mail-pg0-f66.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751327AbeC3Rsm (ORCPT ); Fri, 30 Mar 2018 13:48:42 -0400 Received: by mail-pg0-f66.google.com with SMTP id 201so5437369pgg.3; Fri, 30 Mar 2018 10:48:42 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=date:from:to:cc:subject:message-id:references:mime-version :content-disposition:in-reply-to:user-agent; bh=auujl7YRcxmmq+CniZhNyh9bHxLL1ryGvI71TkMwy0A=; b=jAKX6SPLPs+sn0kMD02SSOXYWkjrpQW9NjaiFrQrGCoEm01fE9ljrbPNGDWPepgsZB RlucxDur5FBfIuRvHDuE4yP8A+m06MO0mMulQdcpqWN0Fnz8Ps06dwKW8DzJUG0c8NVr i2alLsZp7wCNP4MnWc+WzmgW3KCyRpv6HkhVqEaYpc9ZOkSntqgrdEMzUFeoDLL2kD1A 4obNseJ3dl/kgum6FnSfzN1LLyiN9mM3s0dlgB9XfRcNI6LIwqsZElpcFF8LMqp+1gx6 9RI/wum2hTR8HNkRbxg04jSdLP3J3UWUgfhd8AH7YSNDgD7kMlYC17jNyDPnW9JyBsl3 gcPA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:date:from:to:cc:subject:message-id:references :mime-version:content-disposition:in-reply-to:user-agent; bh=auujl7YRcxmmq+CniZhNyh9bHxLL1ryGvI71TkMwy0A=; b=KV5wMhHyswE4tlUXn6mIawCwXU04UJpp61wgljsuwbsyegU1egcPRtZqetSJtcumGs M7acMzWL15hSlEqbs8Dnu5pvqGw8LRb/Qi2LZJPJ1s05o4xmZMuZOgaky6JaS+MUJ6/G jxQ3GYPrHHadsCuczGRx256JGaaZM9DUia1MxPW0mIkJqyFCNFutrddOGELXfons+lR/ 2mi+gcT5gm3GW98WFiDXblhSSQ8boleKpceof8DAkriuai4Nk85I+EZc/G0+wYjetQlX oBpZ81YsMbdIVK88VdOIM8hAF5c1arOOgx6nXN/ctc7hfAkQgZJrcbN48L9Qf4lhaeYB Tapw== X-Gm-Message-State: AElRT7HaqVVmxuBCoe8eXC5GNFmJ4XW50X9t/buK3hya8dnl+gvYCZFY ToTX49b0BUiX1T42atZHW1c= X-Received: by 2002:a17:902:ba81:: with SMTP id k1-v6mr8044833pls.170.1522432121327; Fri, 30 Mar 2018 10:48:41 -0700 (PDT) Received: from dtor-ws ([2620:0:1000:1511:8de6:27a8:ed13:2ef5]) by smtp.gmail.com with ESMTPSA id j19sm16995111pfh.26.2018.03.30.10.48.40 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Fri, 30 Mar 2018 10:48:40 -0700 (PDT) Date: Fri, 30 Mar 2018 10:48:38 -0700 From: Dmitry Torokhov To: Guenter Roeck Cc: Tim Harvey , Lee Jones , Rob Herring , Mark Rutland , Mark Brown , Wim Van Sebroeck , linux-kernel@vger.kernel.org, devicetree@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-hwmon@vger.kernel.org, linux-input@vger.kernel.org, linux-watchdog@vger.kernel.org Subject: Re: [v3,4/4] watchdog: add Gateworks System Controller support Message-ID: <20180330174838.GA141984@dtor-ws> References: <1522250043-8065-5-git-send-email-tharvey@gateworks.com> <20180330010757.GA12896@roeck-us.net> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20180330010757.GA12896@roeck-us.net> User-Agent: Mutt/1.9.2 (2017-12-15) Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Thu, Mar 29, 2018 at 06:07:57PM -0700, Guenter Roeck wrote: > On Wed, Mar 28, 2018 at 08:14:03AM -0700, Tim Harvey wrote: > > Signed-off-by: Tim Harvey > > --- > > drivers/watchdog/Kconfig | 10 ++++ > > drivers/watchdog/Makefile | 1 + > > drivers/watchdog/gsc_wdt.c | 146 +++++++++++++++++++++++++++++++++++++++++++++ > > 3 files changed, 157 insertions(+) > > create mode 100644 drivers/watchdog/gsc_wdt.c > > > > diff --git a/drivers/watchdog/Kconfig b/drivers/watchdog/Kconfig > > index ca200d1..c9d4b2e 100644 > > --- a/drivers/watchdog/Kconfig > > +++ b/drivers/watchdog/Kconfig > > @@ -150,6 +150,16 @@ config GPIO_WATCHDOG_ARCH_INITCALL > > arch_initcall. > > If in doubt, say N. > > > > +config GSC_WATCHDOG > > + tristate "Gateworks System Controller (GSC) Watchdog support" > > + depends on MFD_GATEWORKS_GSC > > + select WATCHDOG_CORE > > + help > > + Say Y here to include support for the GSC Watchdog. > > + > > + This driver can also be built as a module. If so the module > > + will be called gsc_wdt. > > + > > config MENF21BMC_WATCHDOG > > tristate "MEN 14F021P00 BMC Watchdog" > > depends on MFD_MENF21BMC || COMPILE_TEST > > diff --git a/drivers/watchdog/Makefile b/drivers/watchdog/Makefile > > index 715a210..499327e 100644 > > --- a/drivers/watchdog/Makefile > > +++ b/drivers/watchdog/Makefile > > @@ -215,6 +215,7 @@ obj-$(CONFIG_DA9055_WATCHDOG) += da9055_wdt.o > > obj-$(CONFIG_DA9062_WATCHDOG) += da9062_wdt.o > > obj-$(CONFIG_DA9063_WATCHDOG) += da9063_wdt.o > > obj-$(CONFIG_GPIO_WATCHDOG) += gpio_wdt.o > > +obj-$(CONFIG_GSC_WATCHDOG) += gsc_wdt.o > > obj-$(CONFIG_TANGOX_WATCHDOG) += tangox_wdt.o > > obj-$(CONFIG_WDAT_WDT) += wdat_wdt.o > > obj-$(CONFIG_WM831X_WATCHDOG) += wm831x_wdt.o > > diff --git a/drivers/watchdog/gsc_wdt.c b/drivers/watchdog/gsc_wdt.c > > new file mode 100644 > > index 0000000..b43d083 > > --- /dev/null > > +++ b/drivers/watchdog/gsc_wdt.c > > @@ -0,0 +1,146 @@ > > +/* SPDX-License-Identifier: GPL-2.0 > > + * > > + * Copyright (C) 2018 Gateworks Corporation > > + * > > + * This driver registers a Linux Watchdog for the GSC > > + */ > > +#include > > +#include > > +#include > > +#include > > +#include > > + > > +#define WDT_DEFAULT_TIMEOUT 60 > > + > > +struct gsc_wdt { > > + struct watchdog_device wdt_dev; > > + struct gsc_dev *gsc; > > +}; > > + > > +static int gsc_wdt_start(struct watchdog_device *wdd) > > +{ > > + struct gsc_wdt *wdt = watchdog_get_drvdata(wdd); > > + unsigned int reg = (1 << GSC_CTRL_1_WDT_ENABLE); > > Please use BIT(). > > > + int ret; > > + > > + dev_dbg(wdd->parent, "%s timeout=%d\n", __func__, wdd->timeout); > > I don't think those debug messages add any value. > > > + > > + /* clear first as regmap_update_bits will not write if no change */ > > + ret = regmap_update_bits(wdt->gsc->regmap, GSC_CTRL_1, reg, 0); > > + if (ret) > > + return ret; > > + return regmap_update_bits(wdt->gsc->regmap, GSC_CTRL_1, reg, reg); > > +} > > + > > +static int gsc_wdt_stop(struct watchdog_device *wdd) > > +{ > > + struct gsc_wdt *wdt = watchdog_get_drvdata(wdd); > > + unsigned int reg = (1 << GSC_CTRL_1_WDT_ENABLE); > > + > > BIT(). You might as well drop the variable and just use > BIT(GSC_CTRL_1_WDT_ENABLE) below. > > > + dev_dbg(wdd->parent, "%s\n", __func__); > > + > > + return regmap_update_bits(wdt->gsc->regmap, GSC_CTRL_1, reg, 0); > > +} > > + > > +static int gsc_wdt_set_timeout(struct watchdog_device *wdd, > > + unsigned int timeout) > > +{ > > + struct gsc_wdt *wdt = watchdog_get_drvdata(wdd); > > + unsigned int long_sel = 0; > > + > > + dev_dbg(wdd->parent, "%s: %d\n", __func__, timeout); > > + > > + switch (timeout) { > > + case 60: > > + long_sel = (1 << GSC_CTRL_1_WDT_TIME); > > + case 30: > > + regmap_update_bits(wdt->gsc->regmap, GSC_CTRL_1, > > + (1 << GSC_CTRL_1_WDT_TIME), > > BIT() > > > + (long_sel << GSC_CTRL_1_WDT_TIME)); This looks wrong. Are you sure that in case of 60 timeout you want to actually write ((1 << GSC_CTRL_1_WDT_TIME) << GSC_CTRL_1_WDT_TIME) to the register? Or you meant to write: long_sel = timeout > 30; regmap_update_bits(wdt->gsc->regmap, GSC_CTRL_1, (long_sel << GSC_CTRL_1_WDT_TIME), Thanks. -- Dmitry