Browse Source

disp: msm: dp: send mst act signal after link maintenance

If MST is enabled, the controller needs MST ACT to be 
completed to successfully transition to 'Ready for Video' 
state. The driver is sending ACT during the normal flow
when transitioning from link training to stream enable. 
But it is not sending ACT, if a link maintenance is
triggered after stream enable. This change adds the ACT 
update to the link maintenance call flow.

Change-Id: I7aea53a1e54202f1d9059a8eb59f01fa97fe9eb9
Signed-off-by: Sandeep Gangadharaiah <[email protected]>
Sandeep Gangadharaiah 3 years ago
parent
commit
994d2568be
1 changed files with 21 additions and 20 deletions
  1. 21 20
      msm/dp/dp_ctrl.c

+ 21 - 20
msm/dp/dp_ctrl.c

@@ -943,6 +943,26 @@ static void dp_ctrl_fec_setup(struct dp_ctrl_private *ctrl)
 		DP_WARN("failed to enable sink fec\n");
 }
 
+static int dp_ctrl_mst_send_act(struct dp_ctrl_private *ctrl)
+{
+	bool act_complete;
+
+	if (!ctrl->mst_mode)
+		return 0;
+
+	ctrl->catalog->trigger_act(ctrl->catalog);
+	msleep(20); /* needs 1 frame time */
+
+	ctrl->catalog->read_act_complete_sts(ctrl->catalog, &act_complete);
+
+	if (!act_complete)
+		DP_ERR("mst act trigger complete failed\n");
+	else
+		DP_MST_DEBUG("mst ACT trigger complete SUCCESS\n");
+
+	return 0;
+}
+
 static int dp_ctrl_link_maintenance(struct dp_ctrl *dp_ctrl)
 {
 	int ret = 0;
@@ -980,6 +1000,7 @@ static int dp_ctrl_link_maintenance(struct dp_ctrl *dp_ctrl)
 
 	if (ctrl->stream_count) {
 		dp_ctrl_send_video(ctrl);
+		dp_ctrl_mst_send_act(ctrl);
 		dp_ctrl_wait4video_ready(ctrl);
 		dp_ctrl_fec_setup(ctrl);
 	}
@@ -1168,26 +1189,6 @@ static void dp_ctrl_mst_calculate_rg(struct dp_ctrl_private *ctrl,
 	DP_DEBUG("x_int: %d, y_frac_enum: %d\n", x_int, y_frac_enum);
 }
 
-static int dp_ctrl_mst_send_act(struct dp_ctrl_private *ctrl)
-{
-	bool act_complete;
-
-	if (!ctrl->mst_mode)
-		return 0;
-
-	ctrl->catalog->trigger_act(ctrl->catalog);
-	msleep(20); /* needs 1 frame time */
-
-	ctrl->catalog->read_act_complete_sts(ctrl->catalog, &act_complete);
-
-	if (!act_complete)
-		DP_ERR("mst act trigger complete failed\n");
-	else
-		DP_MST_DEBUG("mst ACT trigger complete SUCCESS\n");
-
-	return 0;
-}
-
 static void dp_ctrl_mst_stream_setup(struct dp_ctrl_private *ctrl,
 		struct dp_panel *panel)
 {