All of lore.kernel.org
 help / color / mirror / Atom feed
From: Guenter Roeck <linux@roeck-us.net>
To: Chunyan Zhang <zhang.lyra@gmail.com>,
	Wim Van Sebroeck <wim@linux-watchdog.org>
Cc: linux-watchdog@vger.kernel.org, linux-kernel@vger.kernel.org,
	Orson Zhai <orsonzhai@gmail.com>,
	Baolin Wang <baolin.wang7@gmail.com>,
	Chunyan Zhang <chunyan.zhang@unisoc.com>,
	Lingling Xu <ling_ling.xu@unisoc.com>,
	Jingchao Ye <jingchao.ye@unisoc.com>,
	Xiaoqing Wu <xiaoqing.wu@unisoc.com>
Subject: Re: [PATCH v2 3/3] watchdog: sprd: change to use usleep_range() instead of busy loop
Date: Sun, 8 Nov 2020 08:30:02 -0800	[thread overview]
Message-ID: <7b61713e-5808-d157-5b1a-08b1a275a631@roeck-us.net> (raw)
In-Reply-To: <20201029023933.24548-4-zhang.lyra@gmail.com>

On 10/28/20 7:39 PM, Chunyan Zhang wrote:
> From: Chunyan Zhang <chunyan.zhang@unisoc.com>
> 
> After changing to check busy bit for the previous loading operation instead
> of the current one, for most of cases, the busy bit is not set for the
> first time of read, so there's no need to check so frequently, so this
> patch use usleep_range() to replace cpu_relax() to avoid busy loop.
> 
> Also this patch change the max times to 11 which would be enough, since
> according to the specification, the busy bit would be set after a new
> loading operation and last 2 or 3 RTC clock cycles (about 60us~92us).
> 
> Fixes: 477603467009 ("watchdog: Add Spreadtrum watchdog driver")
> Original-by: Lingling Xu <ling_ling.xu@unisoc.com>
> Signed-off-by: Chunyan Zhang <chunyan.zhang@unisoc.com>

Reviewed-by: Guenter Roeck <linux@roeck-us.net>

> ---
>  drivers/watchdog/sprd_wdt.c | 10 ++++++----
>  1 file changed, 6 insertions(+), 4 deletions(-)
> 
> diff --git a/drivers/watchdog/sprd_wdt.c b/drivers/watchdog/sprd_wdt.c
> index b9b1daa9e2a4..e8097551dfcd 100644
> --- a/drivers/watchdog/sprd_wdt.c
> +++ b/drivers/watchdog/sprd_wdt.c
> @@ -53,7 +53,7 @@
>  
>  #define SPRD_WDT_CNT_HIGH_SHIFT		16
>  #define SPRD_WDT_LOW_VALUE_MASK		GENMASK(15, 0)
> -#define SPRD_WDT_LOAD_TIMEOUT		1000
> +#define SPRD_WDT_LOAD_TIMEOUT		11
>  
>  struct sprd_wdt {
>  	void __iomem *base;
> @@ -109,15 +109,17 @@ static int sprd_wdt_load_value(struct sprd_wdt *wdt, u32 timeout,
>  	u32 prtmr_step = pretimeout * SPRD_WDT_CNT_STEP;
>  
>  	/*
> -	 * Waiting the load value operation done,
> -	 * it needs two or three RTC clock cycles.
> +	 * Checking busy bit to make sure the previous loading operation is
> +	 * done. According to the specification, the busy bit would be set
> +	 * after a new loading operation and last 2 or 3 RTC clock
> +	 * cycles (about 60us~92us).
>  	 */
>  	do {
>  		val = readl_relaxed(wdt->base + SPRD_WDT_INT_RAW);
>  		if (!(val & SPRD_WDT_LD_BUSY_BIT))
>  			break;
>  
> -		cpu_relax();
> +		usleep_range(10, 100);
>  	} while (delay_cnt++ < SPRD_WDT_LOAD_TIMEOUT);
>  
>  	if (delay_cnt >= SPRD_WDT_LOAD_TIMEOUT)
> 


      parent reply	other threads:[~2020-11-08 16:30 UTC|newest]

Thread overview: 7+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-10-29  2:39 [PATCH v2 0/3] A few fixes to sprd watchdog driver Chunyan Zhang
2020-10-29  2:39 ` [PATCH v2 1/3] watchdog: sprd: remove watchdog disable from resume fail path Chunyan Zhang
2020-10-29  2:39 ` [PATCH v2 2/3] watchdog: sprd: check busy bit before new loading rather than after that Chunyan Zhang
2020-11-08 16:29   ` Guenter Roeck
2020-10-29  2:39 ` [PATCH v2 3/3] watchdog: sprd: change to use usleep_range() instead of busy loop Chunyan Zhang
2020-10-29 10:27   ` Chunyan Zhang
2020-11-08 16:30   ` Guenter Roeck [this message]

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=7b61713e-5808-d157-5b1a-08b1a275a631@roeck-us.net \
    --to=linux@roeck-us.net \
    --cc=baolin.wang7@gmail.com \
    --cc=chunyan.zhang@unisoc.com \
    --cc=jingchao.ye@unisoc.com \
    --cc=ling_ling.xu@unisoc.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-watchdog@vger.kernel.org \
    --cc=orsonzhai@gmail.com \
    --cc=wim@linux-watchdog.org \
    --cc=xiaoqing.wu@unisoc.com \
    --cc=zhang.lyra@gmail.com \
    /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.