All of lore.kernel.org
 help / color / mirror / Atom feed
From: <sean.wang@mediatek.com>
To: <robh+dt@kernel.org>, <mark.rutland@arm.com>, <sre@kernel.org>,
	<lee.jones@linaro.org>, <a.zummo@towertech.it>,
	<alexandre.belloni@free-electrons.com>,
	<eddie.huang@mediatek.com>
Cc: <devicetree@vger.kernel.org>, <linux-rtc@vger.kernel.org>,
	<linux-pm@vger.kernel.org>, <linux-mediatek@lists.infradead.org>,
	<linux-kernel@vger.kernel.org>,
	Sean Wang <sean.wang@mediatek.com>
Subject: [PATCH v1 07/16] rtc: mediatek: replace a poll with regmap_read_poll_timeout
Date: Fri, 23 Mar 2018 17:15:04 +0800	[thread overview]
Message-ID: <5e34fe67466d09ad5ce15e913dbe371eeb0a250f.1521794177.git.sean.wang@mediatek.com> (raw)
In-Reply-To: <cover.1521794176.git.sean.wang@mediatek.com>

From: Sean Wang <sean.wang@mediatek.com>

Reuse the helper regmap_read_poll_timeout instead to simpify the logic.

Furthermore, the time for a wait in each iteration changed from cpu_relax
to 20us is for matching the usage of the helper, but it wouldn't acctually
break any the existent functionality according to a good test on MT6323
PMIC.

Signed-off-by: Sean Wang <sean.wang@mediatek.com>
---
 drivers/rtc/rtc-mt6397.c | 25 +++++++++++--------------
 1 file changed, 11 insertions(+), 14 deletions(-)

diff --git a/drivers/rtc/rtc-mt6397.c b/drivers/rtc/rtc-mt6397.c
index 4411c08..b62eaa8 100644
--- a/drivers/rtc/rtc-mt6397.c
+++ b/drivers/rtc/rtc-mt6397.c
@@ -18,6 +18,7 @@
 #include <linux/regmap.h>
 #include <linux/rtc.h>
 #include <linux/irqdomain.h>
+#include <linux/jiffies.h>
 #include <linux/platform_device.h>
 #include <linux/of_address.h>
 #include <linux/of_irq.h>
@@ -63,6 +64,9 @@
 #define RTC_NUM_YEARS		128
 #define RTC_MIN_YEAR_OFFSET	(RTC_MIN_YEAR - RTC_BASE_YEAR)
 
+#define MTK_RTC_POLL_DELAY_US	10
+#define MTK_RTC_POLL_TIMEOUT	(jiffies_to_usecs(HZ))
+
 struct mt6397_rtc {
 	struct device		*dev;
 	struct rtc_device	*rtc_dev;
@@ -74,7 +78,6 @@ struct mt6397_rtc {
 
 static int mtk_rtc_write_trigger(struct mt6397_rtc *rtc)
 {
-	unsigned long timeout = jiffies + HZ;
 	int ret;
 	u32 data;
 
@@ -82,19 +85,13 @@ static int mtk_rtc_write_trigger(struct mt6397_rtc *rtc)
 	if (ret < 0)
 		return ret;
 
-	while (1) {
-		ret = regmap_read(rtc->regmap, rtc->addr_base + RTC_BBPU,
-				  &data);
-		if (ret < 0)
-			break;
-		if (!(data & RTC_BBPU_CBUSY))
-			break;
-		if (time_after(jiffies, timeout)) {
-			ret = -ETIMEDOUT;
-			break;
-		}
-		cpu_relax();
-	}
+	ret = regmap_read_poll_timeout(rtc->regmap,
+				       rtc->addr_base + RTC_BBPU, data,
+				       !(data & RTC_BBPU_CBUSY),
+				       MTK_RTC_POLL_DELAY_US,
+				       MTK_RTC_POLL_TIMEOUT);
+	if (ret)
+		dev_err(rtc->dev, "failed to write WRTGE: %d\n", ret);
 
 	return ret;
 }
-- 
2.7.4

WARNING: multiple messages have this Message-ID (diff)
From: <sean.wang-NuS5LvNUpcJWk0Htik3J/w@public.gmane.org>
To: robh+dt-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org,
	mark.rutland-5wv7dgnIgG8@public.gmane.org,
	sre-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org,
	lee.jones-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org,
	a.zummo-BfzFCNDTiLLj+vYz1yj4TQ@public.gmane.org,
	alexandre.belloni-wi1+55ScJUtKEb57/3fJTNBPR1lH4CV8@public.gmane.org,
	eddie.huang-NuS5LvNUpcJWk0Htik3J/w@public.gmane.org
Cc: linux-rtc-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
	devicetree-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
	linux-pm-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
	Sean Wang <sean.wang-NuS5LvNUpcJWk0Htik3J/w@public.gmane.org>,
	linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
	linux-mediatek-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org
Subject: [PATCH v1 07/16] rtc: mediatek: replace a poll with regmap_read_poll_timeout
Date: Fri, 23 Mar 2018 17:15:04 +0800	[thread overview]
Message-ID: <5e34fe67466d09ad5ce15e913dbe371eeb0a250f.1521794177.git.sean.wang@mediatek.com> (raw)
In-Reply-To: <cover.1521794176.git.sean.wang-NuS5LvNUpcJWk0Htik3J/w@public.gmane.org>

From: Sean Wang <sean.wang-NuS5LvNUpcJWk0Htik3J/w@public.gmane.org>

Reuse the helper regmap_read_poll_timeout instead to simpify the logic.

Furthermore, the time for a wait in each iteration changed from cpu_relax
to 20us is for matching the usage of the helper, but it wouldn't acctually
break any the existent functionality according to a good test on MT6323
PMIC.

Signed-off-by: Sean Wang <sean.wang-NuS5LvNUpcJWk0Htik3J/w@public.gmane.org>
---
 drivers/rtc/rtc-mt6397.c | 25 +++++++++++--------------
 1 file changed, 11 insertions(+), 14 deletions(-)

diff --git a/drivers/rtc/rtc-mt6397.c b/drivers/rtc/rtc-mt6397.c
index 4411c08..b62eaa8 100644
--- a/drivers/rtc/rtc-mt6397.c
+++ b/drivers/rtc/rtc-mt6397.c
@@ -18,6 +18,7 @@
 #include <linux/regmap.h>
 #include <linux/rtc.h>
 #include <linux/irqdomain.h>
+#include <linux/jiffies.h>
 #include <linux/platform_device.h>
 #include <linux/of_address.h>
 #include <linux/of_irq.h>
@@ -63,6 +64,9 @@
 #define RTC_NUM_YEARS		128
 #define RTC_MIN_YEAR_OFFSET	(RTC_MIN_YEAR - RTC_BASE_YEAR)
 
+#define MTK_RTC_POLL_DELAY_US	10
+#define MTK_RTC_POLL_TIMEOUT	(jiffies_to_usecs(HZ))
+
 struct mt6397_rtc {
 	struct device		*dev;
 	struct rtc_device	*rtc_dev;
@@ -74,7 +78,6 @@ struct mt6397_rtc {
 
 static int mtk_rtc_write_trigger(struct mt6397_rtc *rtc)
 {
-	unsigned long timeout = jiffies + HZ;
 	int ret;
 	u32 data;
 
@@ -82,19 +85,13 @@ static int mtk_rtc_write_trigger(struct mt6397_rtc *rtc)
 	if (ret < 0)
 		return ret;
 
-	while (1) {
-		ret = regmap_read(rtc->regmap, rtc->addr_base + RTC_BBPU,
-				  &data);
-		if (ret < 0)
-			break;
-		if (!(data & RTC_BBPU_CBUSY))
-			break;
-		if (time_after(jiffies, timeout)) {
-			ret = -ETIMEDOUT;
-			break;
-		}
-		cpu_relax();
-	}
+	ret = regmap_read_poll_timeout(rtc->regmap,
+				       rtc->addr_base + RTC_BBPU, data,
+				       !(data & RTC_BBPU_CBUSY),
+				       MTK_RTC_POLL_DELAY_US,
+				       MTK_RTC_POLL_TIMEOUT);
+	if (ret)
+		dev_err(rtc->dev, "failed to write WRTGE: %d\n", ret);
 
 	return ret;
 }
-- 
2.7.4

  parent reply	other threads:[~2018-03-23  9:18 UTC|newest]

Thread overview: 79+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-03-23  9:14 [PATCH v1 00/16] Add support to MT6323 RTC and its power device sean.wang
2018-03-23  9:14 ` sean.wang
2018-03-23  9:14 ` [PATCH v1 01/16] dt-bindings: power: reset: mediatek: add bindings for " sean.wang
2018-03-23  9:14   ` sean.wang
2018-03-26 22:24   ` Rob Herring
2018-03-27  3:21     ` Sean Wang
2018-03-27  3:21       ` Sean Wang
2018-03-23  9:14 ` [PATCH v1 02/16] dt-bindings: rtc: mediatek: add bindings for PMIC RTC sean.wang
2018-03-23  9:14   ` sean.wang-NuS5LvNUpcJWk0Htik3J/w
2018-03-23  9:41   ` Alexandre Belloni
2018-03-23 10:15     ` Alexandre Belloni
2018-03-23 10:15       ` Alexandre Belloni
2018-03-24 19:36       ` Sean Wang
2018-03-24 19:36         ` Sean Wang
2018-03-27 15:18         ` Alexandre Belloni
2018-03-28  3:53           ` Sean Wang
2018-03-28  3:53             ` Sean Wang
2018-03-28  9:19             ` Alexandre Belloni
2018-03-23  9:15 ` [PATCH v1 03/16] dt-bindings: mfd: mediatek: add a description for MT6323 RTC sean.wang
2018-03-23  9:15   ` sean.wang-NuS5LvNUpcJWk0Htik3J/w
2018-03-26 22:24   ` Rob Herring
2018-03-28 11:13   ` Lee Jones
2018-03-23  9:15 ` [PATCH v1 04/16] mfd: mt6397: add MT6323 RTC support into MT6397 driver sean.wang
2018-03-23  9:15   ` sean.wang-NuS5LvNUpcJWk0Htik3J/w
2018-03-28 11:15   ` Lee Jones
2018-03-28 11:15     ` Lee Jones
2018-03-23  9:15 ` [PATCH v1 05/16] rtc: mediatek: add MT6323 support to RTC driver sean.wang
2018-03-23  9:15   ` sean.wang-NuS5LvNUpcJWk0Htik3J/w
2018-03-23 10:01   ` Alexandre Belloni
2018-03-24  7:06     ` Sean Wang
2018-03-24  7:06       ` Sean Wang
2018-03-23  9:15 ` [PATCH v1 06/16] rtc: mediatek: remove unnecessary parentheses sean.wang
2018-03-23  9:15   ` sean.wang
2018-03-23 10:21   ` Alexandre Belloni
2018-03-24  7:14     ` Sean Wang
2018-03-24  7:14       ` Sean Wang
2018-03-24 18:53       ` Alexandre Belloni
2018-03-24 19:21         ` Sean Wang
2018-03-24 19:21           ` Sean Wang
2018-03-23  9:15 ` sean.wang [this message]
2018-03-23  9:15   ` [PATCH v1 07/16] rtc: mediatek: replace a poll with regmap_read_poll_timeout sean.wang-NuS5LvNUpcJWk0Htik3J/w
2018-03-23  9:15 ` [PATCH v1 08/16] rtc: mediatek: remove unnecessary irq_dispose_mapping sean.wang
2018-03-23  9:15   ` sean.wang-NuS5LvNUpcJWk0Htik3J/w
2018-03-23 10:38   ` Alexandre Belloni
2018-03-26  2:22     ` Sean Wang
2018-03-26  2:22       ` Sean Wang
2018-03-23  9:15 ` [PATCH v1 09/16] rtc: mediatek: convert to use device managed functions sean.wang
2018-03-23  9:15   ` sean.wang-NuS5LvNUpcJWk0Htik3J/w
2018-03-23 10:50   ` Alexandre Belloni
2018-03-26  4:07     ` Sean Wang
2018-03-26  4:07       ` Sean Wang
2018-03-27 15:07       ` Alexandre Belloni
2018-03-27 15:07         ` Alexandre Belloni
2018-03-23  9:15 ` [PATCH v1 10/16] rtc: mediatek: add devm_of_platform_populate sean.wang
2018-03-23  9:15   ` sean.wang-NuS5LvNUpcJWk0Htik3J/w
2018-03-23  9:15 ` [PATCH v1 11/16] rtc: mediatek: move the declaration into a globally visible header file sean.wang
2018-03-23  9:15   ` sean.wang-NuS5LvNUpcJWk0Htik3J/w
2018-03-23  9:57   ` Alexandre Belloni
2018-03-23  9:57     ` Alexandre Belloni
2018-03-24  7:31     ` Sean Wang
2018-03-24  7:31       ` Sean Wang
2018-03-24 18:54       ` Alexandre Belloni
2018-03-24 20:00   ` Fabio Estevam
2018-03-25  3:13     ` Sean Wang
2018-03-25  3:13       ` Sean Wang
2018-03-23  9:15 ` [PATCH v1 12/16] rtc: mediatek: cleanup header files to include sean.wang
2018-03-23  9:15   ` sean.wang
2018-03-25  4:17   ` kbuild test robot
2018-03-25  4:17     ` kbuild test robot
2018-03-25  5:21   ` kbuild test robot
2018-03-25  5:21     ` kbuild test robot
2018-03-23  9:15 ` [PATCH v1 13/16] rtc: mediatek: update license converting to using SPDX identifiers sean.wang
2018-03-23  9:15   ` sean.wang-NuS5LvNUpcJWk0Htik3J/w
2018-03-23  9:15 ` [PATCH v1 14/16] power: reset: mediatek: add a power-off driver using PMIC RTC device sean.wang
2018-03-23  9:15   ` sean.wang
2018-03-23  9:15 ` [PATCH v1 15/16] MAINTAINERS: update entry for ARM/Mediatek RTC DRIVER sean.wang
2018-03-23  9:15   ` sean.wang-NuS5LvNUpcJWk0Htik3J/w
2018-03-23  9:15 ` [PATCH v1 16/16] MAINTAINERS: add an entry for MediaTek board level shutdown driver sean.wang
2018-03-23  9:15   ` sean.wang-NuS5LvNUpcJWk0Htik3J/w

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=5e34fe67466d09ad5ce15e913dbe371eeb0a250f.1521794177.git.sean.wang@mediatek.com \
    --to=sean.wang@mediatek.com \
    --cc=a.zummo@towertech.it \
    --cc=alexandre.belloni@free-electrons.com \
    --cc=devicetree@vger.kernel.org \
    --cc=eddie.huang@mediatek.com \
    --cc=lee.jones@linaro.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-mediatek@lists.infradead.org \
    --cc=linux-pm@vger.kernel.org \
    --cc=linux-rtc@vger.kernel.org \
    --cc=mark.rutland@arm.com \
    --cc=robh+dt@kernel.org \
    --cc=sre@kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.