Loading drivers/video/msm/mdss/mdss_edp.c +4 −1 Original line number Diff line number Diff line Loading @@ -593,6 +593,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); Loading Loading @@ -626,6 +628,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; } Loading Loading @@ -804,7 +808,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); } Loading drivers/video/msm/mdss/mdss_edp.h +1 −0 Original line number Diff line number Diff line Loading @@ -316,6 +316,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; Loading drivers/video/msm/mdss/mdss_edp_aux.c +9 −2 Original line number Diff line number Diff line Loading @@ -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); } Loading Loading @@ -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); Loading @@ -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) { Loading Loading @@ -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); Loading Loading
drivers/video/msm/mdss/mdss_edp.c +4 −1 Original line number Diff line number Diff line Loading @@ -593,6 +593,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); Loading Loading @@ -626,6 +628,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; } Loading Loading @@ -804,7 +808,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); } Loading
drivers/video/msm/mdss/mdss_edp.h +1 −0 Original line number Diff line number Diff line Loading @@ -316,6 +316,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; Loading
drivers/video/msm/mdss/mdss_edp_aux.c +9 −2 Original line number Diff line number Diff line Loading @@ -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); } Loading Loading @@ -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); Loading @@ -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) { Loading Loading @@ -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); Loading