Tegra: Fix the delay loop used during SC7 exit
This patch fixes the delay loop used to wake up the BPMP during SC7 exit. The earlier loop would fail just when the timer was about to wrap-around (e.g. when TEGRA_TMRUS_BASE is 0xfffffffe, the target value becomes 0, which would cause the loop to exit before it's expiry). Signed-off-by: Varun Wadekar <vwadekar@nvidia.com>
This commit is contained in:
parent
c896132679
commit
6a367fd1ef
|
@ -31,6 +31,7 @@
|
|||
#include <arch_helpers.h>
|
||||
#include <assert.h>
|
||||
#include <debug.h>
|
||||
#include <delay_timer.h>
|
||||
#include <mmio.h>
|
||||
#include <pmc.h>
|
||||
#include <cortex_a53.h>
|
||||
|
@ -230,10 +231,7 @@ void tegra_fc_reset_bpmp(void)
|
|||
; /* wait till value reaches EVP_BPMP_RESET_VECTOR */
|
||||
|
||||
/* Wait for 2us before de-asserting the reset signal. */
|
||||
val = mmio_read_32(TEGRA_TMRUS_BASE);
|
||||
val += 2;
|
||||
while (val > mmio_read_32(TEGRA_TMRUS_BASE))
|
||||
; /* wait for 2us */
|
||||
udelay(2);
|
||||
|
||||
/* De-assert BPMP reset */
|
||||
mmio_write_32(TEGRA_CAR_RESET_BASE + CLK_RST_DEV_L_CLR, CLK_BPMP_RST);
|
||||
|
|
Loading…
Reference in New Issue