mirror of
https://github.com/u-boot/u-boot.git
synced 2024-12-12 06:03:30 +08:00
timer: orion-timer: Fix problem in early_init_done()
It was noticed that Clearfog is currently broken with this newly
introduced early_init_done() function. Apparently the timer is enabled
here when U-Boot is run but not configured - at least not correctly.
Resulting in a hangup in the timer reading functions.
To fix this, also read the value of the reload register and check it's
value with the one written to by U-Boot. Only if this matches, the
init has already been done.
Fixes: 5387b093cb
("timer: orion-timer: Fix problem with early static variable")
Signed-off-by: Stefan Roese <sr@denx.de>
Acked-by: Pali Rohár <pali@kernel.org>
Cc: Martin Rowe <martin.p.rowe@gmail.com>
Cc: Tony Dinh <mibodhi@gmail.com>
Cc: Pali Rohár <pali@kernel.org>
Cc: Michael Walle <michael@walle.cc>
This commit is contained in:
parent
348064ee2c
commit
9a13a76e62
@ -25,7 +25,8 @@ struct orion_timer_priv {
|
||||
|
||||
static bool early_init_done(void *base)
|
||||
{
|
||||
if (readl(base + TIMER_CTRL) & TIMER0_EN)
|
||||
if ((readl(base + TIMER_CTRL) & TIMER0_EN) &&
|
||||
(readl(base + TIMER0_RELOAD) == ~0))
|
||||
return true;
|
||||
return false;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user