All of lore.kernel.org
 help / color / mirror / Atom feed
From: Daniel Lezcano <daniel.lezcano@linaro.org>
To: Meng Yi <meng.yi@nxp.com>
Cc: tglx@linutronix.de, alexander.stein@systec-electronic.com,
	linux-kernel@vger.kernel.org
Subject: Re: [PATCH v2] clocksource/fsl: Fix errata A-007728 for flextimer
Date: Wed, 21 Sep 2016 16:34:37 +0200	[thread overview]
Message-ID: <20160921143437.GA1442@mai> (raw)
In-Reply-To: <1474181161-1975-1-git-send-email-meng.yi@nxp.com>

On Sun, Sep 18, 2016 at 02:46:01PM +0800, Meng Yi wrote:
> If the FTM counter reaches the FTM_MOD value between the reading of the
> TOF bit and the writing of 0 to the TOF bit, the process of clearing the
> TOF bit does not work as expected when FTMx_CONF[NUMTOF] != 0 and the
> current TOF count is less than FTMx_CONF[NUMTOF]. If the above condition
> is met, the TOF bit remains set. If the TOF interrupt is enabled
> (FTMx_SC[TOIE] = 1), the TOF interrupt also remains asserted.
> 
> Above is the errata discription
> 
> The workaround is clearing TOF bit until it is cleaned(FTM counter doesn't
> always reache the FTM_MOD anyway),which may cost some cycles.
> 
> Signed-off-by: Meng Yi <meng.yi@nxp.com>
> ---
> Change in V2:
> -add timeout into IRQ context(suggested by Alexander)
> ---
>  drivers/clocksource/fsl_ftm_timer.c | 10 ++++++----
>  1 file changed, 6 insertions(+), 4 deletions(-)
> 
> diff --git a/drivers/clocksource/fsl_ftm_timer.c b/drivers/clocksource/fsl_ftm_timer.c
> index 738515b..86f9186 100644
> --- a/drivers/clocksource/fsl_ftm_timer.c
> +++ b/drivers/clocksource/fsl_ftm_timer.c
> @@ -83,11 +83,13 @@ static inline void ftm_counter_disable(void __iomem *base)
>  
>  static inline void ftm_irq_acknowledge(void __iomem *base)
>  {
> -	u32 val;
> +	unsigned long timeout = jiffies + msecs_to_jiffies(100);

Do you expect the jiffies to be updated when we are in the timer irq handler ?

> -	val = ftm_readl(base + FTM_SC);
> -	val &= ~FTM_SC_TOF;
> -	ftm_writel(val, base + FTM_SC);
> +	/*read and clean the FTM_SC_TOF bit until its cleared*/
> +	while ((FTM_SC_TOF & ftm_readl(base + FTM_SC)) &&
> +		time_before(jiffies, timeout))
> +		ftm_writel(ftm_readl(base + FTM_SC) & (~FTM_SC_TOF),
> +			   base + FTM_SC);
>  }
>  
>  static inline void ftm_irq_enable(void __iomem *base)
> -- 
> 2.1.0.27.g96db324
> 

  reply	other threads:[~2016-09-21 14:34 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-09-18  6:46 [PATCH v2] clocksource/fsl: Fix errata A-007728 for flextimer Meng Yi
2016-09-21 14:34 ` Daniel Lezcano [this message]
2016-09-22  3:59   ` Meng Yi

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=20160921143437.GA1442@mai \
    --to=daniel.lezcano@linaro.org \
    --cc=alexander.stein@systec-electronic.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=meng.yi@nxp.com \
    --cc=tglx@linutronix.de \
    /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.