aboutsummaryrefslogtreecommitdiff
path: root/plat/rockchip/rk3399/drivers/dram
diff options
context:
space:
mode:
authorDerek Basehore <dbasehore@chromium.org>2018-04-06 16:45:24 -0700
committerDerek Basehore <dbasehore@chromium.org>2018-04-06 17:24:11 -0700
commit3cb74922d02bbf64c8dbcaae7093f7b94d72c948 (patch)
tree8017084c46c1e46a13afaa44820a88d7e6e908fe /plat/rockchip/rk3399/drivers/dram
parent93883a293145f6c85b3fc8c219f400e28b7d1491 (diff)
downloadtrusted-firmware-a-3cb74922d02bbf64c8dbcaae7093f7b94d72c948.tar.gz
rockchip/rk3399: Fix sram_udelay
This fixes an off by 576x bug the the sram_udelay code. The wrong value was multipled by the system ticks per mhz value (which is 24), so we delayed for 1/576th of the requested time. Signed-off-by: Derek Basehore <dbasehore@chromium.org>
Diffstat (limited to 'plat/rockchip/rk3399/drivers/dram')
-rw-r--r--plat/rockchip/rk3399/drivers/dram/suspend.c6
1 files changed, 3 insertions, 3 deletions
diff --git a/plat/rockchip/rk3399/drivers/dram/suspend.c b/plat/rockchip/rk3399/drivers/dram/suspend.c
index f66150ae89..2a80bcb31b 100644
--- a/plat/rockchip/rk3399/drivers/dram/suspend.c
+++ b/plat/rockchip/rk3399/drivers/dram/suspend.c
@@ -85,10 +85,11 @@ static __pmusramfunc uint32_t sram_get_timer_value(void)
static __pmusramfunc void sram_udelay(uint32_t usec)
{
- uint32_t start, cnt, delta, delta_us;
+ uint32_t start, cnt, delta, total_ticks;
/* counter is decreasing */
start = sram_get_timer_value();
+ total_ticks = usec * SYS_COUNTER_FREQ_IN_MHZ;
do {
cnt = sram_get_timer_value();
if (cnt > start) {
@@ -96,8 +97,7 @@ static __pmusramfunc void sram_udelay(uint32_t usec)
delta += start;
} else
delta = start - cnt;
- delta_us = (delta * SYS_COUNTER_FREQ_IN_MHZ);
- } while (delta_us < usec);
+ } while (delta <= total_ticks);
}
static __pmusramfunc void configure_sgrf(void)