/* * Reset DP and prepare DP for init training * param dp pointer to main s5p-dp structure */ static int s5p_dp_init_dp(struct s5p_dp_device *dp) { int ret, i; struct exynos5_dp *base = dp->base; for (i = 0; i < DP_INIT_TRIES; i++) { s5p_dp_reset(dp); /* SW defined function Normal operation */ clrbits_le32(&base->func_en_1, SW_FUNC_EN_N); ret = s5p_dp_init_analog_func(dp); if (!ret) break; udelay(5000); printk(BIOS_DEBUG, "LCD retry init, attempt=%d ret=%d\n", i, ret); } if (i == DP_INIT_TRIES) { printk(BIOS_DEBUG, "LCD initialization failed, ret=%d\n", ret); return ret; } s5p_dp_init_aux(dp); return ret; }
static void s5p_dp_disable(struct s5p_dp_device *dp) { struct s5p_dp_platdata *pdata = dp->dev->platform_data; mutex_lock(&dp->lock); if (!dp->enabled) goto out; dp->enabled = 0; s5p_dp_reset(dp); s5p_dp_set_pll_power_down(dp, 1); s5p_dp_set_analog_power_down(dp, POWER_ALL, 1); #ifdef CONFIG_S5P_DP_PSR if (dp->psr_enter_state != PSR_ENTER_DONE) clk_disable(dp->clock); #else clk_disable(dp->clock); #endif pm_runtime_put_sync(dp->dev); out: mutex_unlock(&dp->lock); }
static void s5p_dp_disable(struct s5p_dp_device *dp) { struct s5p_dp_platdata *pdata = dp->dev->platform_data; #if defined(CONFIG_SOC_EXYNOS5260) if ((pdata->clock_reinit == true) && (dp->clock_status == true)) dp->clock_status = false; #endif mutex_lock(&dp->lock); if (!dp->enabled) goto out; dp->enabled = 0; s5p_dp_reset(dp); s5p_dp_set_pll_power_down(dp, 1); s5p_dp_set_analog_power_down(dp, POWER_ALL, 1); if (pdata && pdata->phy_exit) pdata->phy_exit(); clk_disable(dp->clock); pm_runtime_put_sync(dp->dev); out: mutex_unlock(&dp->lock); }
static int s5p_dp_init_dp(struct s5p_dp_device *dp) { s5p_dp_reset(dp); /* SW defined function Normal operation */ s5p_dp_enable_sw_function(dp); if (!soc_is_exynos5250()) s5p_dp_config_interrupt(dp); s5p_dp_init_analog_func(dp); s5p_dp_init_hpd(dp); s5p_dp_init_aux(dp); return 0; }
static void s5p_dp_disable(struct s5p_dp_device *dp) { struct s5p_dp_platdata *pdata = dp->dev->platform_data; mutex_lock(&dp->lock); if (!dp->enabled) goto out; dp->enabled = 0; s5p_dp_reset(dp); s5p_dp_set_pll_power_down(dp, 1); s5p_dp_set_analog_power_down(dp, POWER_ALL, 1); if (pdata && pdata->phy_exit) pdata->phy_exit(); clk_disable(dp->clock); pm_runtime_put_sync(dp->dev); out: mutex_unlock(&dp->lock); }