[PATCH] [v3] clocksource/drivers/npcm: fix GENMASK and timer operation

Thomas Gleixner tglx at linutronix.de
Mon Jul 22 19:15:17 AEST 2019


On Mon, 15 Jul 2019, Avi Fishman wrote:

> clocksource/drivers/npcm: fix GENMASK and timer operation

Don't repeat the subject line please

> NPCM7XX_Tx_OPER GENMASK() changed from (27, 3) to (28, 27)

Please do not write down WHAT the patch does. That can be seen from the
patch itself. Tell why this is wrong and what's the potential problem.

> Since NPCM7XX_REG_TICR0 register reset value of those bits was 0,
> it did not cause an issue
> 
> in npcm7xx_timer_oneshot() the original NPCM7XX_REG_TCSR0 register was
> read again after masking it with ~NPCM7XX_Tx_OPER so the masking didn't
> take effect.
> 
> npcm7xx_timer_periodic() was not wrong but it wrote to NPCM7XX_REG_TICR0
> in a middle of read modify write to NPCM7XX_REG_TCSR0 which is
> confusing.
> 
> Signed-off-by: Avi Fishman <avifishman70 at gmail.com>
> ---
>  drivers/clocksource/timer-npcm7xx.c | 9 +++------
>  1 file changed, 3 insertions(+), 6 deletions(-)
> 
> diff --git a/drivers/clocksource/timer-npcm7xx.c
> b/drivers/clocksource/timer-npcm7xx.c
> index 8a30da7f083b..9780ffd8010e 100644
> --- a/drivers/clocksource/timer-npcm7xx.c
> +++ b/drivers/clocksource/timer-npcm7xx.c
> @@ -32,7 +32,7 @@
>  #define NPCM7XX_Tx_INTEN               BIT(29)
>  #define NPCM7XX_Tx_COUNTEN             BIT(30)
>  #define NPCM7XX_Tx_ONESHOT             0x0
> -#define NPCM7XX_Tx_OPER                        GENMASK(27, 3)
> +#define NPCM7XX_Tx_OPER                        GENMASK(28, 27)
>  #define NPCM7XX_Tx_MIN_PRESCALE                0x1
>  #define NPCM7XX_Tx_TDR_MASK_BITS       24
>  #define NPCM7XX_Tx_MAX_CNT             0xFFFFFF
> @@ -84,8 +84,6 @@ static int npcm7xx_timer_oneshot(struct
> clock_event_device *evt)
> 
>         val = readl(timer_of_base(to) + NPCM7XX_REG_TCSR0);
>         val &= ~NPCM7XX_Tx_OPER;
> -
> -       val = readl(timer_of_base(to) + NPCM7XX_REG_TCSR0);
>         val |= NPCM7XX_START_ONESHOT_Tx;
>         writel(val, timer_of_base(to) + NPCM7XX_REG_TCSR0);
> 
> @@ -97,12 +95,11 @@ static int npcm7xx_timer_periodic(struct
> clock_event_device *evt)

Your mail client mangled the patch so it does not apply:

patching file drivers/clocksource/timer-npcm7xx.c
Hunk #1 FAILED at 32.
patch: **** malformed patch at line 49: clock_event_device *evt)

See Documentation/process for hints about sending patches with various mail
clients. Send the patch to yourself first and try to apply it yourself.

Thanks,

	tglx


More information about the openbmc mailing list