diff mbox series

[2/2] timer: orion-timer: Only init timer once

Message ID 20220921062642.910994-2-sr@denx.de
State Awaiting Upstream
Delegated to: Stefan Roese
Headers show
Series [1/2] arm: mvebu: Remove timer.c | expand

Commit Message

Stefan Roese Sept. 21, 2022, 6:26 a.m. UTC
Move the code making sure that the timer is initialized only once into
orion_timer_init(), which is called from timer_early_init() and from
orion_timer_probe(). This way the timer is not re-initialized.

Signed-off-by: Stefan Roese <sr@denx.de>
Cc: Michael Walle <michael@walle.cc>
Cc: Pali Rohár <pali@kernel.org>
---
 drivers/timer/orion-timer.c | 10 +++++-----
 1 file changed, 5 insertions(+), 5 deletions(-)

Comments

Stefan Roese Oct. 6, 2022, 10:46 a.m. UTC | #1
On 21.09.22 08:26, Stefan Roese wrote:
> Move the code making sure that the timer is initialized only once into
> orion_timer_init(), which is called from timer_early_init() and from
> orion_timer_probe(). This way the timer is not re-initialized.
> 
> Signed-off-by: Stefan Roese <sr@denx.de>
> Cc: Michael Walle <michael@walle.cc>
> Cc: Pali Rohár <pali@kernel.org>

Applied to u-boot-marvell/master

Thanks,
Stefan

> ---
>   drivers/timer/orion-timer.c | 10 +++++-----
>   1 file changed, 5 insertions(+), 5 deletions(-)
> 
> diff --git a/drivers/timer/orion-timer.c b/drivers/timer/orion-timer.c
> index cd63ea916237..d0eab3ce781d 100644
> --- a/drivers/timer/orion-timer.c
> +++ b/drivers/timer/orion-timer.c
> @@ -28,6 +28,11 @@ static bool early_init_done __section(".data") = false;
>   /* Common functions for early (boot) and DM based timer */
>   static void orion_timer_init(void *base, enum input_clock_type type)
>   {
> +	/* Only init the timer once */
> +	if (early_init_done)
> +		return;
> +	early_init_done = true;
> +
>   	writel(~0, base + TIMER0_VAL);
>   	writel(~0, base + TIMER0_RELOAD);
>   
> @@ -51,11 +56,6 @@ static uint64_t orion_timer_get_count(void *base)
>   /* Early (e.g. bootstage etc) timer functions */
>   static void notrace timer_early_init(void)
>   {
> -	/* Only init the timer once */
> -	if (early_init_done)
> -		return;
> -	early_init_done = true;
> -
>   	if (IS_ENABLED(CONFIG_ARCH_MVEBU))
>   		orion_timer_init((void *)MVEBU_TIMER_BASE, INPUT_CLOCK_25MHZ);
>   	else

Viele Grüße,
Stefan Roese
diff mbox series

Patch

diff --git a/drivers/timer/orion-timer.c b/drivers/timer/orion-timer.c
index cd63ea916237..d0eab3ce781d 100644
--- a/drivers/timer/orion-timer.c
+++ b/drivers/timer/orion-timer.c
@@ -28,6 +28,11 @@  static bool early_init_done __section(".data") = false;
 /* Common functions for early (boot) and DM based timer */
 static void orion_timer_init(void *base, enum input_clock_type type)
 {
+	/* Only init the timer once */
+	if (early_init_done)
+		return;
+	early_init_done = true;
+
 	writel(~0, base + TIMER0_VAL);
 	writel(~0, base + TIMER0_RELOAD);
 
@@ -51,11 +56,6 @@  static uint64_t orion_timer_get_count(void *base)
 /* Early (e.g. bootstage etc) timer functions */
 static void notrace timer_early_init(void)
 {
-	/* Only init the timer once */
-	if (early_init_done)
-		return;
-	early_init_done = true;
-
 	if (IS_ENABLED(CONFIG_ARCH_MVEBU))
 		orion_timer_init((void *)MVEBU_TIMER_BASE, INPUT_CLOCK_25MHZ);
 	else