Received: by 2002:a05:6a10:f347:0:0:0:0 with SMTP id d7csp550838pxu; Tue, 1 Dec 2020 19:14:25 -0800 (PST) X-Google-Smtp-Source: ABdhPJwWpRIZ2P0m/Ks6icO+FGNc66Wrc6uByzQmocp8+dy8z6TaaumiPlJRzQZeewc1FLXjcGCd X-Received: by 2002:a17:906:2612:: with SMTP id h18mr374809ejc.469.1606878864744; Tue, 01 Dec 2020 19:14:24 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1606878864; cv=none; d=google.com; s=arc-20160816; b=S8HMIZcHZlg+VzMM7mWLfZEp4M7NVaVXmVsox1uDH39LcvGQUTvMZMrUddo/m5kPOA B7S/IZUKlgoJDtyeQZ0XIXVW6sfREL4Pal+kxfYCaRlP9ASZIuiETVzeo7McwVYV40cB iESc4YIDc2QkXvX/wsq+p7NMtHq/OfAWuH2VHqPxYvtcIfIiYBZmPNbiM7pjfg6nYf+c rVQyZc9s/LA4WqU8ClSETmxNMd8UvedgPZpnHTr+GhvqQjVbFp9LJDunUCZrqNze6IuV iS2XHnuJgpgCY5aVAN0IQurzry4jxoVWVW24j9+hKyfrAAY7xjiQv17kK7FROhVrzfPn rcfg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:references:in-reply-to:message-id:date:subject :cc:to:from; bh=CSzOlu++mC1ebvnGZvoXx690vmU7y04eZ9JvhDiMPVU=; b=rmwuVNDMHzplMcPQRg3c9xu7DpqPNK5AFdfO0S8kdrxZ5lAD33CKaxJOY528CKmoC2 MwlERSkfQM3sLliGdYLGZpnepyBMqYXFoJWWvY7FSiVp+emNrOBS5CJydhFNaAFH4Mq4 XG/LU9aDZXOSkjGoLvZdRhK4R6Ds2Tl+oQlIzIPZez17qL5Y2TSc7Cwg5y19S+D4QAfW KPlAkzgZtLmmK+F2vDQyedVxdjuyoMn6BbYUC287Kq6B46K7v0trYviCDrB6CGc2tOxL eaS7Ripx3+PTnuNsQbpPagTlfPauY+3Qm0kIuvGc5dQzrXspH9RnKS6yDwH/uRqKpJBZ JYAw== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=nxp.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id b26si81240ejb.140.2020.12.01.19.14.02; Tue, 01 Dec 2020 19:14:24 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=nxp.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1728028AbgLBDL2 (ORCPT + 99 others); Tue, 1 Dec 2020 22:11:28 -0500 Received: from inva021.nxp.com ([92.121.34.21]:49416 "EHLO inva021.nxp.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1727629AbgLBDL1 (ORCPT ); Tue, 1 Dec 2020 22:11:27 -0500 Received: from inva021.nxp.com (localhost [127.0.0.1]) by inva021.eu-rdc02.nxp.com (Postfix) with ESMTP id 01F93200C90; Wed, 2 Dec 2020 04:10:41 +0100 (CET) Received: from invc005.ap-rdc01.nxp.com (invc005.ap-rdc01.nxp.com [165.114.16.14]) by inva021.eu-rdc02.nxp.com (Postfix) with ESMTP id 9D350200C83; Wed, 2 Dec 2020 04:10:37 +0100 (CET) Received: from localhost.localdomain (mega.ap.freescale.net [10.192.208.232]) by invc005.ap-rdc01.nxp.com (Postfix) with ESMTP id 1CD2F402CB; Wed, 2 Dec 2020 04:10:33 +0100 (CET) From: Biwen Li To: leoyang.li@nxp.com, alexandre.belloni@bootlin.com, anson.huang@nxp.com, aisheng.dong@nxp.com Cc: linux-kernel@vger.kernel.org, jiafei.pan@nxp.com, linux-rtc@vger.kernel.org, Biwen Li Subject: [v2 2/2] rtc: pcf2127: clear these flags TSF1, TSF2 before enabling interrupt generation Date: Wed, 2 Dec 2020 11:18:40 +0800 Message-Id: <20201202031840.15582-2-biwen.li@oss.nxp.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20201202031840.15582-1-biwen.li@oss.nxp.com> References: <20201202031840.15582-1-biwen.li@oss.nxp.com> X-Virus-Scanned: ClamAV using ClamSMTP Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Biwen Li Clear these flags TSF1, TSF2 before enabling interrupt generation Signed-off-by: Biwen Li --- Change in v2: - clear flag TSF2 drivers/rtc/rtc-pcf2127.c | 27 ++++++++++++++++++++++++++- 1 file changed, 26 insertions(+), 1 deletion(-) diff --git a/drivers/rtc/rtc-pcf2127.c b/drivers/rtc/rtc-pcf2127.c index a5418b657c50..7e3fc70ac5f9 100644 --- a/drivers/rtc/rtc-pcf2127.c +++ b/drivers/rtc/rtc-pcf2127.c @@ -659,7 +659,7 @@ static int pcf2127_probe(struct device *dev, struct regmap *regmap, /* * Enable timestamp function and store timestamp of first trigger - * event until TSF1 and TFS2 interrupt flags are cleared. + * event until TSF1 and TSF2 interrupt flags are cleared. */ ret = regmap_update_bits(pcf2127->regmap, PCF2127_REG_TS_CTRL, PCF2127_BIT_TS_CTRL_TSOFF | @@ -671,6 +671,31 @@ static int pcf2127_probe(struct device *dev, struct regmap *regmap, return ret; } + /* + * Clear TSF1 field of ctrl1 register and TSF2 + * field of ctrl2 register to clear interrupt + * before enabling interrupt generation when + * timestamp flag set. Unless the flag TSF1 won't + * be cleared and get the interrupt storm. + */ + ret = regmap_update_bits(pcf2127->regmap, PCF2127_REG_CTRL1, + PCF2127_BIT_CTRL1_TSF1, + 0); + if (ret) { + dev_err(dev, "%s: control and status register 1 (ctrl1) failed, ret = 0x%x\n", + __func__, ret); + return ret; + } + + ret = regmap_update_bits(pcf2127->regmap, PCF2127_REG_CTRL2, + PCF2127_BIT_CTRL2_TSF2, + 0); + if (ret) { + dev_err(dev, "%s: control and status register 2 (ctrl2) failed, ret = 0x%x\n", + __func__, ret); + return ret; + } + /* * Enable interrupt generation when TSF1 or TSF2 timestamp flags * are set. Interrupt signal is an open-drain output and can be -- 2.17.1