Received: by 2002:ac0:98c7:0:0:0:0:0 with SMTP id g7-v6csp1837254imd; Sun, 4 Nov 2018 10:29:59 -0800 (PST) X-Google-Smtp-Source: AJdET5cjY/lZJSHpSilGhW7u2GYyck1lMZAJGLD+dlfKogvCXjbzJRt5kHwfkcBy15fcAFlOnq9j X-Received: by 2002:a17:902:2702:: with SMTP id c2-v6mr19318517plb.314.1541356199814; Sun, 04 Nov 2018 10:29:59 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1541356199; cv=none; d=google.com; s=arc-20160816; b=D6Npjzgs/deWvo3oJf98d6j9WaItXJ4XFXOsgvX/7NHtBm+sk6+MGslmxI5c17bVR4 rHDDbpV0MGHuOHINleuFdNTouPmM/YhHmyF3DW0VWbM59HCzOohblK/7QstzeNoplD19 y9Cum9HgMQ4xZb7x2fLAeiENp3GVEIOXMo+POedbpm092/xT+w3hpUQn5djV/92YwQ4N XpPrFbSN3u6bc21c8/5v5IXEMgVigPJpOs1swkYeAb+GTH6fAOY7G1cGM3/JvYviq3fz X4KoyE0g8JyZwELCu/tNDTGL71oJhoxtrwzn0UYdPB8wtkSa7Yu4GEs0XXs/hvteDw9m f+JA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:references:in-reply-to:message-id:date :subject:cc:to:from:dkim-signature; bh=70k4LOkBBcZMOMNQXvX14quu71VJ3PtQvvLEoHVHZsY=; b=K/p5vLV/xlIoQaq+YEPJp4pacI+FE7oF40o8mHPdXDM2GOzGPcz530D0nl3FkWCXRt 0AAJeNTmQgIl8jhb0LhHzJCmQ+B23IdbSCKlUdxAuQ4NsQUMcYAG+uDPFaAu6drXPU1G w1DxiPkcl/C1m3CIOq3h1/HjQMSpIKvGt+Yk3MqnaSQmhoqM3Wh5SD0iDkgdfNVuBe4I swM9dSAuxj7ET9cQO+VD8LOrGU5FpPEJB9hEl0Q5g/ReE86Ohx2WznG+DGNsqE4sLHZv Qxovz9xgLNiTtpD9yXPkvA+xOVi18eTiwN46aDB18z/nbWrVVdrPxpvsYF5T37bBYBmf oWmg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=zsQmxeeM; 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=NONE dis=NONE) header.from=kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id 1-v6si13468677plj.146.2018.11.04.10.29.45; Sun, 04 Nov 2018 10:29:59 -0800 (PST) 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=@kernel.org header.s=default header.b=zsQmxeeM; 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=NONE dis=NONE) header.from=kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1730706AbeKDXWR (ORCPT + 99 others); Sun, 4 Nov 2018 18:22:17 -0500 Received: from mail.kernel.org ([198.145.29.99]:44870 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1730192AbeKDXHR (ORCPT ); Sun, 4 Nov 2018 18:07:17 -0500 Received: from sasha-vm.mshome.net (c-73-47-72-35.hsd1.nh.comcast.net [73.47.72.35]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPSA id 44F1F204FD; Sun, 4 Nov 2018 13:52:13 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1541339533; bh=d7d+/b8KEYKbeSobYIn85OkLPF9eczPbkR8HZZApMcY=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=zsQmxeeMNUmX2YAsgTvBrFQO3kiBTOIFCqvVeRK6IXA2jh50Fbz+OyhXxOXwyePTr uicQssR1LY26u53EmGoWj85ouxiiqhGHRTAIoi+huCL5cseW0L87QGS9Jk/L5uNg3v +qaarlwGQR5/6HqVdPFZ+Z+E1L9tfUS71l7JeJu8= From: Sasha Levin To: stable@vger.kernel.org, linux-kernel@vger.kernel.org Cc: Hauke Mehrtens , Guenter Roeck , Wim Van Sebroeck , Sasha Levin Subject: [PATCH AUTOSEL 4.19 28/57] watchdog: lantiq: update register names to better match spec Date: Sun, 4 Nov 2018 08:51:15 -0500 Message-Id: <20181104135144.88324-28-sashal@kernel.org> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20181104135144.88324-1-sashal@kernel.org> References: <20181104135144.88324-1-sashal@kernel.org> Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Hauke Mehrtens [ Upstream commit 1f59f8aff98f200af7a6882184add7b85f5da741 ] Some of the names of the bits were confusing to me. Now the bits share the same prefix as the register they are set on. The LTQ_WDT_CR_PWL register (bits 26:25) is the pre warning limit and it does not turn anything on. It has 4 possible divers 1/2, 1/4, 1/8 and 1/16, this drivers only uses 1/16. The LTQ_WDT_CR_CLKDIV register bits(25:24) is only configuring a clock divers and do not turn any thing on too, all possible values are valid dividers. Using the LTQ_WDT_SR prefix is also wrong these bits are used in the LTQ_WDT_CR registers, SR is the status register which is read only. This uses GENMASK where it is a mask and it uses shifts when a value is written to some bits. Signed-off-by: Hauke Mehrtens Reviewed-by: Guenter Roeck Signed-off-by: Guenter Roeck Signed-off-by: Wim Van Sebroeck Signed-off-by: Sasha Levin --- drivers/watchdog/lantiq_wdt.c | 36 ++++++++++++++++++----------------- 1 file changed, 19 insertions(+), 17 deletions(-) diff --git a/drivers/watchdog/lantiq_wdt.c b/drivers/watchdog/lantiq_wdt.c index 7f43cefa0eae..a086005fbaac 100644 --- a/drivers/watchdog/lantiq_wdt.c +++ b/drivers/watchdog/lantiq_wdt.c @@ -13,6 +13,7 @@ #include #include #include +#include #include #include #include @@ -40,18 +41,19 @@ * essentially the following two magic passwords need to be written to allow * IO access to the WDT core */ -#define LTQ_WDT_PW1 0x00BE0000 -#define LTQ_WDT_PW2 0x00DC0000 +#define LTQ_WDT_CR_PW1 0x00BE0000 +#define LTQ_WDT_CR_PW2 0x00DC0000 + +#define LTQ_WDT_CR 0x0 /* watchdog control register */ +#define LTQ_WDT_CR_GEN BIT(31) /* enable bit */ +/* Pre-warning limit set to 1/16 of max WDT period */ +#define LTQ_WDT_CR_PWL (0x3 << 26) +/* set clock divider to 0x40000 */ +#define LTQ_WDT_CR_CLKDIV (0x3 << 24) +#define LTQ_WDT_CR_PW_MASK GENMASK(23, 16) /* Password field */ +#define LTQ_WDT_CR_MAX_TIMEOUT ((1 << 16) - 1) /* The reload field is 16 bit */ -#define LTQ_WDT_CR 0x0 /* watchdog control register */ -#define LTQ_WDT_SR 0x8 /* watchdog status register */ - -#define LTQ_WDT_SR_EN (0x1 << 31) /* enable bit */ -#define LTQ_WDT_SR_PWD (0x3 << 26) /* turn on power */ -#define LTQ_WDT_SR_CLKDIV (0x3 << 24) /* turn on clock and set */ - /* divider to 0x40000 */ #define LTQ_WDT_DIVIDER 0x40000 -#define LTQ_MAX_TIMEOUT ((1 << 16) - 1) /* the reload field is 16 bit */ static bool nowayout = WATCHDOG_NOWAYOUT; @@ -68,26 +70,26 @@ ltq_wdt_enable(void) { unsigned long int timeout = ltq_wdt_timeout * (ltq_io_region_clk_rate / LTQ_WDT_DIVIDER) + 0x1000; - if (timeout > LTQ_MAX_TIMEOUT) - timeout = LTQ_MAX_TIMEOUT; + if (timeout > LTQ_WDT_CR_MAX_TIMEOUT) + timeout = LTQ_WDT_CR_MAX_TIMEOUT; /* write the first password magic */ - ltq_w32(LTQ_WDT_PW1, ltq_wdt_membase + LTQ_WDT_CR); + ltq_w32(LTQ_WDT_CR_PW1, ltq_wdt_membase + LTQ_WDT_CR); /* write the second magic plus the configuration and new timeout */ - ltq_w32(LTQ_WDT_SR_EN | LTQ_WDT_SR_PWD | LTQ_WDT_SR_CLKDIV | - LTQ_WDT_PW2 | timeout, ltq_wdt_membase + LTQ_WDT_CR); + ltq_w32(LTQ_WDT_CR_GEN | LTQ_WDT_CR_PWL | LTQ_WDT_CR_CLKDIV | + LTQ_WDT_CR_PW2 | timeout, ltq_wdt_membase + LTQ_WDT_CR); } static void ltq_wdt_disable(void) { /* write the first password magic */ - ltq_w32(LTQ_WDT_PW1, ltq_wdt_membase + LTQ_WDT_CR); + ltq_w32(LTQ_WDT_CR_PW1, ltq_wdt_membase + LTQ_WDT_CR); /* * write the second password magic with no config * this turns the watchdog off */ - ltq_w32(LTQ_WDT_PW2, ltq_wdt_membase + LTQ_WDT_CR); + ltq_w32(LTQ_WDT_CR_PW2, ltq_wdt_membase + LTQ_WDT_CR); } static ssize_t -- 2.17.1