From 5293125365222a36369356b61bae9cae91a04255 Mon Sep 17 00:00:00 2001 From: Jingoo Han Date: Wed, 4 Apr 2012 15:59:24 +0900 Subject: [PATCH] --- yaml --- r: 310253 b: refs/heads/master c: b5cfeed6cf90a4bb619b7ac640ba1a6dd002364d h: refs/heads/master i: 310251: 501a6b07777fb62ad318d0fd25d7306d7a052a69 v: v3 --- [refs] | 2 +- trunk/drivers/video/exynos/exynos_dp_reg.c | 13 ++++++++++++- 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/[refs] b/[refs] index e7fc077c7086..f112832f70a3 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 4e0dd49d2c4bc10d56bc536113c16f165c0edeb3 +refs/heads/master: b5cfeed6cf90a4bb619b7ac640ba1a6dd002364d diff --git a/trunk/drivers/video/exynos/exynos_dp_reg.c b/trunk/drivers/video/exynos/exynos_dp_reg.c index 6548afa0e3d2..169d1810d30c 100644 --- a/trunk/drivers/video/exynos/exynos_dp_reg.c +++ b/trunk/drivers/video/exynos/exynos_dp_reg.c @@ -271,6 +271,7 @@ void exynos_dp_set_analog_power_down(struct exynos_dp_device *dp, void exynos_dp_init_analog_func(struct exynos_dp_device *dp) { u32 reg; + int timeout_loop = 0; exynos_dp_set_analog_power_down(dp, POWER_ALL, 0); @@ -282,9 +283,19 @@ void exynos_dp_init_analog_func(struct exynos_dp_device *dp) writel(reg, dp->reg_base + EXYNOS_DP_DEBUG_CTL); /* Power up PLL */ - if (exynos_dp_get_pll_lock_status(dp) == PLL_UNLOCKED) + if (exynos_dp_get_pll_lock_status(dp) == PLL_UNLOCKED) { exynos_dp_set_pll_power_down(dp, 0); + while (exynos_dp_get_pll_lock_status(dp) == PLL_UNLOCKED) { + timeout_loop++; + if (DP_TIMEOUT_LOOP_COUNT < timeout_loop) { + dev_err(dp->dev, "failed to get pll lock status\n"); + return; + } + usleep_range(10, 20); + } + } + /* Enable Serdes FIFO function and Link symbol clock domain module */ reg = readl(dp->reg_base + EXYNOS_DP_FUNC_EN_2); reg &= ~(SERDES_FIFO_FUNC_EN_N | LS_CLK_DOMAIN_FUNC_EN_N