aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/video/exynos/exynos_dp_reg.c
diff options
context:
space:
mode:
authorJingoo Han <jg1.han@samsung.com>2012-04-04 02:59:24 -0400
committerFlorian Tobias Schandinat <FlorianSchandinat@gmx.de>2012-04-16 00:18:27 -0400
commitb5cfeed6cf90a4bb619b7ac640ba1a6dd002364d (patch)
treeaaa7b327f254febb8b711cef9bcc529e62feccad /drivers/video/exynos/exynos_dp_reg.c
parent4e0dd49d2c4bc10d56bc536113c16f165c0edeb3 (diff)
video: exynos_dp: check DP PLL Lock status
DP PLL Lock status should be checked in order to prevent unlocked PLL. Signed-off-by: Jingoo Han <jg1.han@samsung.com> Signed-off-by: Florian Tobias Schandinat <FlorianSchandinat@gmx.de>
Diffstat (limited to 'drivers/video/exynos/exynos_dp_reg.c')
-rw-r--r--drivers/video/exynos/exynos_dp_reg.c13
1 files changed, 12 insertions, 1 deletions
diff --git a/drivers/video/exynos/exynos_dp_reg.c b/drivers/video/exynos/exynos_dp_reg.c
index 6548afa0e3d2..169d1810d30c 100644
--- a/drivers/video/exynos/exynos_dp_reg.c
+++ b/drivers/video/exynos/exynos_dp_reg.c
@@ -271,6 +271,7 @@ void exynos_dp_set_analog_power_down(struct exynos_dp_device *dp,
271void exynos_dp_init_analog_func(struct exynos_dp_device *dp) 271void exynos_dp_init_analog_func(struct exynos_dp_device *dp)
272{ 272{
273 u32 reg; 273 u32 reg;
274 int timeout_loop = 0;
274 275
275 exynos_dp_set_analog_power_down(dp, POWER_ALL, 0); 276 exynos_dp_set_analog_power_down(dp, POWER_ALL, 0);
276 277
@@ -282,9 +283,19 @@ void exynos_dp_init_analog_func(struct exynos_dp_device *dp)
282 writel(reg, dp->reg_base + EXYNOS_DP_DEBUG_CTL); 283 writel(reg, dp->reg_base + EXYNOS_DP_DEBUG_CTL);
283 284
284 /* Power up PLL */ 285 /* Power up PLL */
285 if (exynos_dp_get_pll_lock_status(dp) == PLL_UNLOCKED) 286 if (exynos_dp_get_pll_lock_status(dp) == PLL_UNLOCKED) {
286 exynos_dp_set_pll_power_down(dp, 0); 287 exynos_dp_set_pll_power_down(dp, 0);
287 288
289 while (exynos_dp_get_pll_lock_status(dp) == PLL_UNLOCKED) {
290 timeout_loop++;
291 if (DP_TIMEOUT_LOOP_COUNT < timeout_loop) {
292 dev_err(dp->dev, "failed to get pll lock status\n");
293 return;
294 }
295 usleep_range(10, 20);
296 }
297 }
298
288 /* Enable Serdes FIFO function and Link symbol clock domain module */ 299 /* Enable Serdes FIFO function and Link symbol clock domain module */
289 reg = readl(dp->reg_base + EXYNOS_DP_FUNC_EN_2); 300 reg = readl(dp->reg_base + EXYNOS_DP_FUNC_EN_2);
290 reg &= ~(SERDES_FIFO_FUNC_EN_N | LS_CLK_DOMAIN_FUNC_EN_N 301 reg &= ~(SERDES_FIFO_FUNC_EN_N | LS_CLK_DOMAIN_FUNC_EN_N