summaryrefslogtreecommitdiff
path: root/src/cpu/samsung/exynos5250/dp-reg.c
diff options
context:
space:
mode:
authorGabe Black <gabeblack@google.com>2013-07-30 15:11:35 -0700
committerPatrick Georgi <patrick@georgi-clan.de>2013-12-21 10:48:49 +0100
commit9b764a0dcc67a7bbf6e74b35cdd9e3e7c6d59c83 (patch)
treebcc96fbc83db41a0770d5e455b716bf0025d31e3 /src/cpu/samsung/exynos5250/dp-reg.c
parent2c116febabe3619933d361ca4289df899ec83e3d (diff)
exynos5250: Get rid of the PWM timer code we shouldn't be using anymore
This code was left over from U-Boot and was superceded by the MCT. Change-Id: Ia85e3b7281dcdd4740238dddd0dfc6f0ba2c94da Signed-off-by: Gabe Black <gabeblack@google.com> Reviewed-on: https://gerrit.chromium.org/gerrit/63778 Commit-Queue: Gabe Black <gabeblack@chromium.org> Reviewed-by: Gabe Black <gabeblack@chromium.org> Tested-by: Gabe Black <gabeblack@chromium.org> Reviewed-on: http://review.coreboot.org/4401 Tested-by: build bot (Jenkins) Reviewed-by: Patrick Georgi <patrick@georgi-clan.de>
Diffstat (limited to 'src/cpu/samsung/exynos5250/dp-reg.c')
-rw-r--r--src/cpu/samsung/exynos5250/dp-reg.c20
1 files changed, 14 insertions, 6 deletions
diff --git a/src/cpu/samsung/exynos5250/dp-reg.c b/src/cpu/samsung/exynos5250/dp-reg.c
index ac4208d159..1cc70887ce 100644
--- a/src/cpu/samsung/exynos5250/dp-reg.c
+++ b/src/cpu/samsung/exynos5250/dp-reg.c
@@ -120,7 +120,7 @@ unsigned int s5p_dp_get_pll_lock_status(struct s5p_dp_device *dp)
int s5p_dp_init_analog_func(struct s5p_dp_device *dp)
{
u32 reg;
- u32 start;
+ struct mono_time current, end;
struct exynos5_dp *base = dp->base;
writel(0x00, &base->dp_phy_pd);
@@ -135,13 +135,17 @@ int s5p_dp_init_analog_func(struct s5p_dp_device *dp)
clrbits_le32(&base->dp_pll_ctl, DP_PLL_PD);
- start = get_timer(0);
+ timer_monotonic_get(&current);
+ end = current;
+ mono_time_add_msecs(&end, PLL_LOCK_TIMEOUT);
+
while (s5p_dp_get_pll_lock_status(dp) == PLL_UNLOCKED) {
- if (get_timer(start) > PLL_LOCK_TIMEOUT) {
+ if (mono_time_after(&current, &end)) {
printk(BIOS_ERR, "%s: PLL is not locked\n",
__func__);
return -1;
}
+ timer_monotonic_get(&current);
}
}
@@ -431,11 +435,14 @@ void s5p_dp_enable_video_master(struct s5p_dp_device *dp)
int s5p_dp_is_video_stream_on(struct s5p_dp_device *dp)
{
u32 reg, i = 0;
- u32 start;
+ struct mono_time current, end;
struct exynos5_dp *base = dp->base;
/* Wait for 4 VSYNC_DET interrupts */
- start = get_timer(0);
+ timer_monotonic_get(&current);
+ end = current;
+ mono_time_add_msecs(&end, STREAM_ON_TIMEOUT);
+
do {
reg = readl(&base->common_int_sta_1);
if (reg & VSYNC_DET) {
@@ -444,7 +451,8 @@ int s5p_dp_is_video_stream_on(struct s5p_dp_device *dp)
}
if (i == 4)
break;
- } while (get_timer(start) <= STREAM_ON_TIMEOUT);
+ timer_monotonic_get(&current);
+ } while (mono_time_before(&current, &end));
if (i != 4) {
printk(BIOS_DEBUG, "s5p_dp_is_video_stream_on timeout\n");