Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 1fd34fba authored by Linux Build Service Account's avatar Linux Build Service Account Committed by Gerrit - the friendly Code Review server
Browse files

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

parents c00b7b27 66ff31da
Loading
Loading
Loading
Loading
+4 −1
Original line number Diff line number Diff line
@@ -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);
@@ -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;
}

@@ -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);
}

+1 −0
Original line number Diff line number Diff line
@@ -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;
+9 −2
Original line number Diff line number Diff line
@@ -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);