forked from Minki/linux
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>
This commit is contained in:
parent
4e0dd49d2c
commit
b5cfeed6cf
@ -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
|
||||
|
Loading…
Reference in New Issue
Block a user