timer: orion-timer: Only init timer once
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>
This commit is contained in:
@@ -28,6 +28,11 @@ static bool early_init_done __section(".data") = false;
|
|||||||
/* Common functions for early (boot) and DM based timer */
|
/* Common functions for early (boot) and DM based timer */
|
||||||
static void orion_timer_init(void *base, enum input_clock_type type)
|
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_VAL);
|
||||||
writel(~0, base + TIMER0_RELOAD);
|
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 */
|
/* Early (e.g. bootstage etc) timer functions */
|
||||||
static void notrace timer_early_init(void)
|
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))
|
if (IS_ENABLED(CONFIG_ARCH_MVEBU))
|
||||||
orion_timer_init((void *)MVEBU_TIMER_BASE, INPUT_CLOCK_25MHZ);
|
orion_timer_init((void *)MVEBU_TIMER_BASE, INPUT_CLOCK_25MHZ);
|
||||||
else
|
else
|
||||||
|
Reference in New Issue
Block a user