Merge "msm: mdss: do not shut down edp link during link training"

This commit is contained in:
Linux Build Service Account
2014-01-17 23:59:31 -08:00
committed by Gerrit - the friendly Code Review server
3 changed files with 14 additions and 3 deletions
+4 -1
View File
@@ -604,6 +604,8 @@ int mdss_edp_off(struct mdss_panel_data *pdata)
}
pr_debug("%s:+, cont_splash=%d\n", __func__, edp_drv->cont_splash);
/* wait until link training is completed */
mutex_lock(&edp_drv->train_mutex);
INIT_COMPLETION(edp_drv->idle_comp);
mdss_edp_state_ctrl(edp_drv, ST_PUSH_IDLE);
@@ -637,6 +639,8 @@ int mdss_edp_off(struct mdss_panel_data *pdata)
pr_debug("%s-: state_ctrl=%x\n", __func__,
edp_read(edp_drv->base + 0x8));
mutex_unlock(&edp_drv->train_mutex);
return 0;
}
@@ -821,7 +825,6 @@ static void mdss_edp_do_link_train(struct mdss_edp_drv_pdata *ep)
if (ep->cont_splash)
return;
INIT_COMPLETION(ep->train_comp);
mdss_edp_link_train(ep);
}
+1
View File
@@ -315,6 +315,7 @@ struct mdss_edp_drv_pdata {
struct completion idle_comp;
struct completion video_comp;
struct mutex aux_mutex;
struct mutex train_mutex;
u32 aux_cmd_busy;
u32 aux_cmd_i2c;
int aux_trans_num;
+9 -2
View File
@@ -1196,7 +1196,6 @@ static int edp_link_rate_down_shift(struct mdss_edp_drv_pdata *ep)
static void edp_clear_training_pattern(struct mdss_edp_drv_pdata *ep)
{
pr_debug("%s:\n", __func__);
edp_write(ep->base + EDP_STATE_CTRL, 0);
edp_train_pattern_set_write(ep, 0);
usleep(ep->dpcd.training_read_interval);
}
@@ -1224,6 +1223,7 @@ train_start:
mdss_edp_config_ctrl(ep);
mdss_edp_lane_power_ctrl(ep, 1);
mdss_edp_state_ctrl(ep, 0);
edp_clear_training_pattern(ep);
usleep(ep->dpcd.training_read_interval);
@@ -1240,6 +1240,7 @@ train_start:
pr_debug("%s: Training 1 completed successfully", __func__);
mdss_edp_state_ctrl(ep, 0);
edp_clear_training_pattern(ep);
ret = edp_start_link_train_2(ep);
if (ret < 0) {
@@ -1312,12 +1313,18 @@ int mdss_edp_sink_power_state(struct mdss_edp_drv_pdata *ep, char state)
int mdss_edp_link_train(struct mdss_edp_drv_pdata *ep)
{
return edp_aux_link_train(ep);
int ret;
mutex_lock(&ep->train_mutex);
ret = edp_aux_link_train(ep);
mutex_unlock(&ep->train_mutex);
return ret;
}
void mdss_edp_aux_init(struct mdss_edp_drv_pdata *ep)
{
mutex_init(&ep->aux_mutex);
mutex_init(&ep->train_mutex);
init_completion(&ep->aux_comp);
init_completion(&ep->train_comp);
init_completion(&ep->idle_comp);