mirror of https://gitee.com/openkylin/linux.git
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)
|
void exynos_dp_init_analog_func(struct exynos_dp_device *dp)
|
||||||
{
|
{
|
||||||
u32 reg;
|
u32 reg;
|
||||||
|
int timeout_loop = 0;
|
||||||
|
|
||||||
exynos_dp_set_analog_power_down(dp, POWER_ALL, 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);
|
writel(reg, dp->reg_base + EXYNOS_DP_DEBUG_CTL);
|
||||||
|
|
||||||
/* Power up PLL */
|
/* 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);
|
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 */
|
/* Enable Serdes FIFO function and Link symbol clock domain module */
|
||||||
reg = readl(dp->reg_base + EXYNOS_DP_FUNC_EN_2);
|
reg = readl(dp->reg_base + EXYNOS_DP_FUNC_EN_2);
|
||||||
reg &= ~(SERDES_FIFO_FUNC_EN_N | LS_CLK_DOMAIN_FUNC_EN_N
|
reg &= ~(SERDES_FIFO_FUNC_EN_N | LS_CLK_DOMAIN_FUNC_EN_N
|
||||||
|
|
Loading…
Reference in New Issue