summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKuogee Hsieh <khsieh@codeaurora.org>2014-10-10 08:42:43 -0700
committerDavid Keitel <dkeitel@codeaurora.org>2016-03-23 20:35:00 -0700
commit92d9bcd42eb957c8e14ceeb7b09156146c2bef97 (patch)
tree6057965db314de8d9895a9c51e1e444716eaf4df
parentf6da3384e39a9db6018ffc6aa407c37fca8a0527 (diff)
msm: mdss: add MDSS_EVENT_LINK READY
At split display case, DSI panel initialization dcs commands need to be sent to panel when both dsi links are in LP-11 state. Add MDSS_EVENT_LINK_READY to have both dsi controller's phy/pll initialized which brings link to LP-11 state first so that panel initialization dcs commands be received by panel successfully to bring panel to display_on state. Change-Id: I4b33fafd2673be1f068819bee25fc1a335eb0fe8 Signed-off-by: Kuogee Hsieh <khsieh@codeaurora.org>
-rw-r--r--drivers/video/fbdev/msm/mdss_dsi.c6
-rw-r--r--drivers/video/fbdev/msm/mdss_mdp_intf_cmd.c3
-rw-r--r--drivers/video/fbdev/msm/mdss_mdp_intf_video.c7
-rw-r--r--drivers/video/fbdev/msm/mdss_panel.h2
4 files changed, 14 insertions, 4 deletions
diff --git a/drivers/video/fbdev/msm/mdss_dsi.c b/drivers/video/fbdev/msm/mdss_dsi.c
index 21acfe8dca25..9c041b074072 100644
--- a/drivers/video/fbdev/msm/mdss_dsi.c
+++ b/drivers/video/fbdev/msm/mdss_dsi.c
@@ -1193,15 +1193,17 @@ static int mdss_dsi_event_handler(struct mdss_panel_data *pdata,
}
ctrl_pdata = container_of(pdata, struct mdss_dsi_ctrl_pdata,
panel_data);
- pr_debug("%s+:event=%d\n", __func__, event);
+ pr_debug("%s+: ctrl=%d event=%d\n", __func__, ctrl_pdata->ndx, event);
MDSS_XLOG(event, arg, ctrl_pdata->ndx, 0x3333);
switch (event) {
- case MDSS_EVENT_UNBLANK:
+ case MDSS_EVENT_LINK_READY:
rc = mdss_dsi_on(pdata);
mdss_dsi_op_mode_config(pdata->panel_info.mipi.mode,
pdata);
+ break;
+ case MDSS_EVENT_UNBLANK:
if (ctrl_pdata->on_cmds.link_state == DSI_LP_MODE)
rc = mdss_dsi_unblank(pdata);
break;
diff --git a/drivers/video/fbdev/msm/mdss_mdp_intf_cmd.c b/drivers/video/fbdev/msm/mdss_mdp_intf_cmd.c
index 2761f485ae25..6c2359279004 100644
--- a/drivers/video/fbdev/msm/mdss_mdp_intf_cmd.c
+++ b/drivers/video/fbdev/msm/mdss_mdp_intf_cmd.c
@@ -734,6 +734,9 @@ int mdss_mdp_cmd_kickoff(struct mdss_mdp_ctl *ctl, void *arg)
}
if (__mdss_mdp_cmd_panel_power_off(ctx)) {
+ rc = mdss_mdp_ctl_intf_event(ctl, MDSS_EVENT_LINK_READY, NULL);
+ WARN(rc, "intf %d link ready error (%d)\n", ctl->intf_num, rc);
+
rc = mdss_mdp_ctl_intf_event(ctl, MDSS_EVENT_UNBLANK, NULL);
WARN(rc, "intf %d unblank error (%d)\n", ctl->intf_num, rc);
diff --git a/drivers/video/fbdev/msm/mdss_mdp_intf_video.c b/drivers/video/fbdev/msm/mdss_mdp_intf_video.c
index 6ec5ec495d2a..3fc9fdfd416b 100644
--- a/drivers/video/fbdev/msm/mdss_mdp_intf_video.c
+++ b/drivers/video/fbdev/msm/mdss_mdp_intf_video.c
@@ -926,15 +926,18 @@ static int mdss_mdp_video_display(struct mdss_mdp_ctl *ctl, void *arg)
MDSS_XLOG(ctl->num, ctl->underrun_cnt);
if (!ctx->timegen_en) {
- rc = mdss_mdp_ctl_intf_event(ctl, MDSS_EVENT_UNBLANK, NULL);
+ rc = mdss_mdp_ctl_intf_event(ctl, MDSS_EVENT_LINK_READY, NULL);
if (rc) {
- pr_warn("intf #%d unblank error (%d)\n",
+ pr_warn("intf #%d link ready error (%d)\n",
ctl->intf_num, rc);
video_vsync_irq_disable(ctl);
ctx->wait_pending = 0;
return rc;
}
+ rc = mdss_mdp_ctl_intf_event(ctl, MDSS_EVENT_UNBLANK, NULL);
+ WARN(rc, "intf %d unblank error (%d)\n", ctl->intf_num, rc);
+
pr_debug("enabling timing gen for intf=%d\n", ctl->intf_num);
if (pdata->panel_info.cont_splash_enabled &&
diff --git a/drivers/video/fbdev/msm/mdss_panel.h b/drivers/video/fbdev/msm/mdss_panel.h
index 1c9da0cc7829..39b53308d582 100644
--- a/drivers/video/fbdev/msm/mdss_panel.h
+++ b/drivers/video/fbdev/msm/mdss_panel.h
@@ -137,6 +137,7 @@ struct mdss_intf_recovery {
* enum mdss_intf_events - Different events generated by MDP core
*
* @MDSS_EVENT_RESET: MDP control path is being (re)initialized.
+ * @MDSS_EVENT_LINK_READY Interface data path inited to ready state.
* @MDSS_EVENT_UNBLANK: Sent before first frame update from MDP is
* sent to panel.
* @MDSS_EVENT_PANEL_ON: After first frame update from MDP.
@@ -182,6 +183,7 @@ struct mdss_intf_recovery {
*/
enum mdss_intf_events {
MDSS_EVENT_RESET = 1,
+ MDSS_EVENT_LINK_READY,
MDSS_EVENT_UNBLANK,
MDSS_EVENT_PANEL_ON,
MDSS_EVENT_BLANK,