From 43933466e74dbdeb38ba8f5882ae8ed2372e3e4b Mon Sep 17 00:00:00 2001 From: Aaron Durbin Date: Wed, 24 Sep 2014 10:27:29 -0500 Subject: exynos: convert to stopwatch API Instead of open coding monotonic timer usage, use the stopwatch API. BUG=None BRANCH=None TEST=None Change-Id: I1c541c1c9f3fde0dec9163ad6cc94322538ac7f7 Signed-off-by: Patrick Georgi Original-Commit-Id: 46ede0897687da6bcf730a8904f25e5a4485d6cd Original-Change-Id: Ia63a05850a1b6afdc42c2422332f77af516d27e3 Original-Signed-off-by: Aaron Durbin Original-Reviewed-on: https://chromium-review.googlesource.com/219716 Original-Reviewed-by: Julius Werner Original-Reviewed-by: David Hendricks Original-Reviewed-by: Furquan Shaikh Reviewed-on: http://review.coreboot.org/8825 Tested-by: build bot (Jenkins) Reviewed-by: Stefan Reinauer --- src/soc/samsung/exynos5420/clock.c | 9 +++------ src/soc/samsung/exynos5420/i2c.c | 9 +++------ 2 files changed, 6 insertions(+), 12 deletions(-) (limited to 'src/soc/samsung/exynos5420') diff --git a/src/soc/samsung/exynos5420/clock.c b/src/soc/samsung/exynos5420/clock.c index 5cf3583c87..91e61cb2d1 100644 --- a/src/soc/samsung/exynos5420/clock.c +++ b/src/soc/samsung/exynos5420/clock.c @@ -561,7 +561,7 @@ int clock_epll_set_rate(unsigned long rate) unsigned int epll_con, epll_con_k; unsigned int i; unsigned int lockcnt; - struct mono_time current, end; + struct stopwatch sw; epll_con = readl(&exynos_clock->epll_con0); epll_con &= ~((EPLL_CON0_LOCK_DET_EN_MASK << @@ -595,17 +595,14 @@ int clock_epll_set_rate(unsigned long rate) writel(epll_con, &exynos_clock->epll_con0); writel(epll_con_k, &exynos_clock->epll_con1); - timer_monotonic_get(¤t); - end = current; - mono_time_add_msecs(&end, TIMEOUT_EPLL_LOCK); + stopwatch_init_msecs_expire(&sw, TIMEOUT_EPLL_LOCK); while (!(readl(&exynos_clock->epll_con0) & (0x1 << EXYNOS5_EPLLCON0_LOCKED_SHIFT))) { - if (mono_time_after(¤t, &end)) { + if (stopwatch_expired(&sw)) { printk(BIOS_DEBUG, "%s: Timeout waiting for EPLL lock\n", __func__); return -1; } - timer_monotonic_get(¤t); } return 0; diff --git a/src/soc/samsung/exynos5420/i2c.c b/src/soc/samsung/exynos5420/i2c.c index 49875d79ed..8c6c361140 100644 --- a/src/soc/samsung/exynos5420/i2c.c +++ b/src/soc/samsung/exynos5420/i2c.c @@ -415,16 +415,13 @@ static int hsi2c_check_transfer(struct hsi2c_regs *regs) */ static int hsi2c_wait_for_transfer(struct hsi2c_regs *i2c) { - struct mono_time current, end; + struct stopwatch sw; - timer_monotonic_get(¤t); - end = current; - mono_time_add_usecs(&end, Hsi2cTimeout * 1000); - while (mono_time_before(¤t, &end)) { + stopwatch_init_msecs_expire(&sw, Hsi2cTimeout); + while (!stopwatch_expired(&sw)) { int ret = hsi2c_check_transfer(i2c); if (ret) return ret; - timer_monotonic_get(¤t); } return 0; } -- cgit v1.2.3