diff options
author | David Hendricks <dhendrix@chromium.org> | 2013-05-02 14:23:51 -0700 |
---|---|---|
committer | Ronald G. Minnich <rminnich@gmail.com> | 2013-05-05 00:18:48 +0200 |
commit | 0bb875be5e575b6eceb081d1a92da467b87aa96b (patch) | |
tree | acb7e0664c1297d95eff2f279c66711e72c4432c /src/cpu/samsung/exynos5-common/exynos-fb.c | |
parent | c2f177737bb2ae1836b3badeb90daf6bdcc2134f (diff) | |
download | coreboot-0bb875be5e575b6eceb081d1a92da467b87aa96b.tar.xz |
exynos5/5250: Update timer call sites to use monotonic timer API
This goes thru various call sites where we used timer_us() and updates
them to use the new monotonic timer API.
udelay() changed substantially and now gracefully handles wraparound.
Change-Id: Ie2cc86a4125cf0de12837fd7d337a11aed25715c
Signed-off-by: David Hendricks <dhendrix@chromium.org>
Reviewed-on: http://review.coreboot.org/3176
Reviewed-by: Aaron Durbin <adurbin@google.com>
Tested-by: build bot (Jenkins)
Diffstat (limited to 'src/cpu/samsung/exynos5-common/exynos-fb.c')
-rw-r--r-- | src/cpu/samsung/exynos5-common/exynos-fb.c | 17 |
1 files changed, 9 insertions, 8 deletions
diff --git a/src/cpu/samsung/exynos5-common/exynos-fb.c b/src/cpu/samsung/exynos5-common/exynos-fb.c index 00ff19ee15..b2e926f77d 100644 --- a/src/cpu/samsung/exynos5-common/exynos-fb.c +++ b/src/cpu/samsung/exynos5-common/exynos-fb.c @@ -27,7 +27,7 @@ #include <arch/io.h> #include <stdlib.h> #include <string.h> -#include <time.h> +#include <timer.h> #include <console/console.h> #include <cpu/samsung/exynos5250/cpu.h> #include <cpu/samsung/exynos5250/power.h> @@ -212,9 +212,8 @@ static int s5p_dp_config_video(struct s5p_dp_device *dp, struct video_info *video_info) { int timeout = 0; - u32 start, end; struct exynos5_dp *base = dp->base; - + struct mono_time start, current, end; s5p_dp_config_video_slave_mode(dp, video_info); s5p_dp_set_video_color_format(dp, video_info->color_depth, @@ -227,18 +226,20 @@ static int s5p_dp_config_video(struct s5p_dp_device *dp, return -ERR_PLL_NOT_UNLOCKED; } - start = timer_us(); - end = start + STREAM_ON_TIMEOUT*1000; + timer_monotonic_get(&start); + end = current = start; + mono_time_add_usecs(&end, STREAM_ON_TIMEOUT * USECS_PER_MSEC); do { if (s5p_dp_is_slave_video_stream_clock_on(dp) == 0) { timeout++; break; } - } while (timer_us() < end); + timer_monotonic_get(¤t); + } while (mono_time_before(¤t, &end)); if (!timeout) { - printk(BIOS_ERR, "Video Clock Not ok after %uus.\n", - timer_us() - start); + printk(BIOS_ERR, "Video Clock Not ok after %ldus.\n", + mono_time_diff_microseconds(&start, &end)); return -ERR_VIDEO_CLOCK_BAD; } |